|
两个任务 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); } } |
|