pyh921 发表于 2012-9-5 15:09:25

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

龙龙-341962 发表于 2012-9-5 15:25:46

回复:USART通信程序死机问题

看下NVIC的配置,把USART2的优先级提高试试。

zykzyk-93033 发表于 2012-9-5 21:22:15

RE:USART通信程序死机问题

有没有可能是你的帧协议不对呢?导致溢出。:D

yjwpm 发表于 2012-9-5 23:14:32

回复:USART通信程序死机问题

回复第 3 楼 于2012-09-05 21:22:15发表:
有没有可能是你的帧协议不对呢?导致溢出。:D 

:funk::L:funk:
你厉害帧协议不对也会导致溢出。I 服了 YOU。
这是你的程序逻辑不严谨造成的 栈溢出 的问题。。
首先我要说的是你的程序逻辑不够清晰,你没有超时的操作。
 
 

cjq_enjoy-15073 发表于 2012-9-6 08:01:58

RE:USART通信程序死机问题

指针栈溢出查看RxBuffer1 msg指针范围

pyh921 发表于 2012-9-6 08:50:47

RE:USART通信程序死机问题

确实是msg溢出,非常感谢上面的几个朋友!
页: [1]
查看完整版本: USART通信程序死机问题