USART通信程序死机问题
请教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;
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= USART_ReceiveData(USART2); //将读寄存器的数据缓存到接收缓冲区里
if(msg!=0x3A)
{
RxCounter1 = 0; //判断起始标志
}
else if(msg==0x0A && RxCounter1 > 2) //判断结束标志
{
if(msg==0x0D)
{
for(i=1; i< RxCounter1-2; i++)
{
/* 判断接收的数据为数字或字母 */
if((msg >= '0' && msg = 'A' && msg = 'a' && msg
回复:USART通信程序死机问题
看下NVIC的配置,把USART2的优先级提高试试。RE:USART通信程序死机问题
有没有可能是你的帧协议不对呢?导致溢出。:D回复:USART通信程序死机问题
回复第 3 楼 于2012-09-05 21:22:15发表:有没有可能是你的帧协议不对呢?导致溢出。:D
:funk::L:funk:
你厉害帧协议不对也会导致溢出。I 服了 YOU。
这是你的程序逻辑不严谨造成的 栈溢出 的问题。。
首先我要说的是你的程序逻辑不够清晰,你没有超时的操作。
RE:USART通信程序死机问题
指针栈溢出查看RxBuffer1 msg指针范围RE:USART通信程序死机问题
确实是msg溢出,非常感谢上面的几个朋友!
页:
[1]