如题,采用PIC24J64GA006,出现了莫名其妙的复位,确定WDT已经关闭
以下是网友zchong的帖子,有提到PIC24F SWR复位的问题
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3429546&bbs_page_no=1&search_mode=1&search_text=PIC24&bbs_id=9999
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3425474&bbs_id=1028
但是经调试,我发现我的程序一旦复位后,INTCON1 = 0X0000,RCON = 0X00C3; 没有出现zchong提到的Addr err引起的SWR,很奇怪的问题
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
void __attribute__((__interrupt__, no_auto_psv)) _U2RXInterrupt ( void )
{
INT8U TempData = 0;
IFS1bits.U2RXIF = 0;
TempData = U2RXREG;
if ( U2STA & 0X02 )
{//U2RX出错
U2STA &= (~0X02);
}
else
{
if ( (UART_GSM_ACK_TYPE_MSG == g_UARTGsm.AckType) )
{//只针对读取短信
if ( ':' == TempData )
{
if ( 'L' == g_UARTGsm.RxBuff[g_UARTGsm.Index - 1] )
{
if ( 'G' == g_UARTGsm.RxBuff[g_UARTGsm.Index - 2] )
{
if ( 'M' == g_UARTGsm.RxBuff[g_UARTGsm.Index - 3] )
{
if ( 'C' == g_UARTGsm.RxBuff[g_UARTGsm.Index - 4] )
{//同步记录起始位置,防止接收到GSM多条记录同时返回时,程序判别不了记录起始和结束位置
g_UARTGsm.Index = 5;
}
}
}
}
}
}
if ( 'K' == TempData )
{
if ( g_UARTGsm.Index > 1 )
{
if ( 'O' == g_UARTGsm.RxBuff[g_UARTGsm.Index - 1] )
{
g_UARTGsm.Recv = TRUE;
}
}
}
if ( g_UARTGsm.Index > (UART_GSM_BUFF_LEN - 1) )
{//防止内存溢出
g_UARTGsm.Index = UART_GSM_BUFF_LEN - 2;
}
g_UARTGsm.RxBuff[g_UARTGsm.Index++] = TempData;
}
LED_DATA_INVERT ();
}
改成以下就可以
void __attribute__((__interrupt__, no_auto_psv)) _U2RXInterrupt ( void )
{
INT8U TempData = 0;
IFS1bits.U2RXIF = 0;
TempData = U2RXREG;
if ( U2STA & 0X02 )
{//U2RX出错
U2STA &= (~0X02);
}
else
{
//if ( (UART_GSM_ACK_TYPE_MSG == g_UARTGsm.AckType) )
//{//只针对读取短信
//if ( ':' == TempData )
//{
//if ( 'L' == g_UARTGsm.RxBuff[g_UARTGsm.Index - 1] )
//{
//if ( 'G' == g_UARTGsm.RxBuff[g_UARTGsm.Index - 2] )
//{
//if ( 'M' == g_UARTGsm.RxBuff[g_UARTGsm.Index - 3] )
//{
//if ( 'C' == g_UARTGsm.RxBuff[g_UARTGsm.Index - 4] )
//{//同步记录起始位置,防止接收到GSM多条记录同时返回时,程序判别不了记录起始和结束位置
//g_UARTGsm.Index = 5;
//}
//}
//}
//}
//}
//}
if ( 'K' == TempData )
{
if ( g_UARTGsm.Index > 1 )
{
if ( 'O' == g_UARTGsm.RxBuff[g_UARTGsm.Index - 1] )
{
g_UARTGsm.Recv = TRUE;
}
}
}
if ( g_UARTGsm.Index > (UART_GSM_BUFF_LEN - 1) )
{//防止内存溢出
g_UARTGsm.Index = UART_GSM_BUFF_LEN - 2;
}
g_UARTGsm.RxBuff[g_UARTGsm.Index++] = TempData;
}
LED_DATA_INVERT ();
}
晕哦,怎么把它编辑工整一些呢?
一周热门 更多>