请教STM32跑UCOS的问题,我用USART2和另块板子通信,9600波特率,中断方式收发,数据比较少时没问题,多的时候(75字节)运行10几秒钟到1分钟程序就死掉了,我是每1秒钟读取75字节。 用仿真看了下程序停的位置,如下,这是怎么回事?知道的麻烦解释一下,非常感谢! ;****************************************************************************************** ;* Fault interrupt handler. ;* It simply enters an infinite loop. ;****************************************************************************************** HardFaultException B HardFaultException 附上串口中断函数: ---------------------------------------------------------------------------------- void USART2_IRQHandler(void) { unsigned int i; unsigned char msg[100]; OS_CPU_SR cpu_sr; OS_ENTER_CRITICAL(); //保存全局中断标志,关总中断// Tell uC/OS-II that we are starting an ISR OSIntNesting++; OS_EXIT_CRITICAL(); //恢复全局中断标志 //OSTimeTick(); // Call uC/OS-II's OSTimeTick(),在os_core.c文件里定义,主要判断延时的任务是否计时到 if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //判断读寄存器是否非空 { // Read one byte from the receive data register msg[RxCounter1++]= USART_ReceiveData(USART2); //将读寄存器的数据缓存到接收缓冲区里 if(msg[0]!=0x3A) { RxCounter1 = 0; //判断起始标志 } else if(msg[RxCounter1-1]==0x0A && RxCounter1 > 2) //判断结束标志 { if(msg[RxCounter1-2]==0x0D) { for(i=1; i< RxCounter1-2; i++) { /* 判断接收的数据为数字或字母 */ if((msg >= '0' && msg = 'A' && msg = 'a' && msg |
回复:USART通信程序死机问题
RE:USART通信程序死机问题
回复:USART通信程序死机问题
有没有可能是你的帧协议不对呢?导致溢出。
你厉害帧协议不对也会导致溢出。I 服了 YOU。
这是你的程序逻辑不严谨造成的 栈溢出 的问题。。
首先我要说的是你的程序逻辑不够清晰,你没有超时的操作。
RE:USART通信程序死机问题
RE:USART通信程序死机问题