两个任务
RS232_TASK
GSM_TASK
RS232_TASK任务优先级高于GSM_TASK
我在仅仅只有RS232_TASK运行时,程序没有问题,可以正常运行;
当我使用下面的代码,并通过RS232每秒发送一次AT指令进行测试的时候,
经过一段时间以后,大约几分钟,程序出现死机。
OS_EVENT *poeUart2ReviceSem;
OS_EVENT *poeUart0ReviceSem;
uint8 uiReviceBuf0[128]; /* 接收数据缓冲区 */
void RS232_TASK(void *pdata)
{
INT8U iUart0Err;
uint32 uiNum;
pdata = pdata;
poeUart0ReviceSem = OSSemCreate(1); /* 创建信号量 */
while(1)
{
OSSemPend(poeUart0ReviceSem, 0, &iUart0Err); /* 请求信号量 */
uiNum = uartFifoStatus(UART0, RX_FIFO); /* 查看收到多少数据 */
uartRead(UART0, uiReviceBuf0, uiNum, NULL); /* 读数据 */
/*DEBUG start:用于调试GPRS串口命令*/
uartWrite(UART2, uiReviceBuf0, strlen((char *)uiReviceBuf0), NULL);
/*DEBUG end:*/
}
}
uint8 uiReviceBuf2[128]; /* 接收数据缓冲区 */
void GSM_TASK(void *pdata)
{
INT8U iUart0Err;
uint32 uiNum;
pdata = pdata;
poeUart2ReviceSem = OSSemCreate(1); /* 创建信号量 */
while(1)
{
OSSemPend(poeUart2ReviceSem, 0, &iUart0Err); /* 请求信号量 */
uiNum = uartFifoStatus(UART0, RX_FIFO); /* 查看收到多少数据 */
uartRead(UART2, uiReviceBuf0, uiNum, NULL); /* 读数据 */
uartWrite(UART0, uiReviceBuf0, strlen((char *)uiReviceBuf0), NULL);
}
} |