16786|11

59

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

用移植到stm32的ucos写串口中断为什么一直死机 [复制链接]

用移植到stm32的ucos写串口中断为什么一直死机啊,研究快两天了,请大侠指点一二。谢谢


中断处理函数

void USART1_IRQHandler(void)
{
    OS_CPU_SR  cpu_sr;
UCOS_II_REENTRANT_ISR_PROLOG UCOS_II_REENTRANT_ISR_EPILOG
    OS_ENTER_CRITICAL();;                                       
    OSIntNesting++;
   OS_EXIT_CRITICAL();
         
  if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
  {

     data = (USART_ReceiveData(USART1) & 0x7F); 
     USART_ClearITPendingBit(USART1, USART_IT_RXNE);    
       
  }
    OSIntExit();
  
}

向量表

;******************************************************************************
;
;                             INTERRUPT VECTORS
;                                    ARM
;                             KEIL's uVision3 
;                   (RealView Microprocessor Developer Kit)
;
; Filename      : vectors.s
;******************************************************************************

                PRESERVE8
                AREA   VECT, CODE, READONLY                     ; Name this block of code                                   ;
                THUMB

                ENTRY

;******************************************************************************
;                                  IMPORTS
;******************************************************************************

                IMPORT    Tmr_TickISR_Handler
;                IMPORT  ProbeRS232_RxTxISRHandler
                IMPORT    USART1_IRQHandler
            
                IMPORT    OSPendSV
                IMPORT  ResetHndlr
                IMPORT  ||Image$$ARM_LIB_STACK$$ZI$$Limit||     ; Import stack limit from scatter-loading file              ;

;******************************************************************************
;                                  EXPORTS
;******************************************************************************
                ;EXPORT    USART1_IRQHandler
;******************************************************************************
;                                DEFINITIONS
;******************************************************************************


;******************************************************************************
;                      INITIALIZE EXCEPTION VECTORS
;******************************************************************************

Vectors
        DCD     ||Image$$ARM_LIB_STACK$$ZI$$Limit||         ;  0, SP start value.                                         
        DCD     ResetHndlr                                  ;  1, PC start value.                                         
        DCD     App_NMI_ISR                                 ;  2, NMI                                                     
        DCD     App_Fault_ISR                               ;  3, Hard Fault                                              
        DCD     App_Spurious_ISR                            ;  4, Memory Management                                      
        DCD     App_Spurious_ISR                            ;  5, Bus Fault                                               
        DCD     App_Spurious_ISR                            ;  6, Usage Fault                                             
        DCD     0                                           ;  7, Reserved                                                
        DCD     0                                           ;  8, Reserved                                                
        DCD     0                                           ;  9, Reserved                                                
        DCD     0                                           ; 10, Reserved                                                
        DCD     App_Spurious_ISR                            ; 11, SVCall                                                  
        DCD     App_Spurious_ISR                            ; 12, Debug Monitor                                           
        DCD     App_Spurious_ISR                            ; 13, Reserved                                                
        DCD     OSPendSV                                    ; 14, PendSV Handler                                          
        DCD     Tmr_TickISR_Handler                         ; 15, uC/OS-II Tick ISR Handler                               
        DCD     App_Spurious_ISR                            ; 16, INTISR[  0], Window Watchdog                            
        DCD     App_Spurious_ISR                            ; 17, INTISR[  1]  PVD through EXTI Line Detection            
        DCD     App_Spurious_ISR                            ; 18, INTISR[  2]  Tamper Interrupt                           
        DCD     App_Spurious_ISR                            ; 19, INTISR[  3]  RTC Global Interrupt                       
        DCD     App_Spurious_ISR                            ; 20, INTISR[  4]  FLASH Global Interrupt                     
        DCD     App_Spurious_ISR                            ; 21, INTISR[  5]  RCC Global Interrupt                       
        DCD     App_Spurious_ISR                            ; 22, INTISR[  6]  EXTI Line0 Interrupt                       
        DCD     App_Spurious_ISR                            ; 23, INTISR[  7]  EXTI Line1 Interrupt                       
        DCD     App_Spurious_ISR                            ; 24, INTISR[  8]  EXTI Line2 Interrupt                       
        DCD     App_Spurious_ISR                            ; 25, INTISR[  9]  EXTI Line3 Interrupt                       
        DCD     App_Spurious_ISR                            ; 26, INTISR[ 10]  EXTI Line4 Interrupt                       
        DCD     App_Spurious_ISR                            ; 27, INTISR[ 11]  DMA Channel1 Global Interrupt              
        DCD     App_Spurious_ISR                            ; 28, INTISR[ 12]  DMA Channel2 Global Interrupt              
        DCD     App_Spurious_ISR                            ; 29, INTISR[ 13]  DMA Channel3 Global Interrupt              
        DCD     App_Spurious_ISR                            ; 30, INTISR[ 14]  DMA Channel4 Global Interrupt              
        DCD     App_Spurious_ISR                            ; 31, INTISR[ 15]  DMA Channel5 Global Interrupt              
        DCD     App_Spurious_ISR                            ; 32, INTISR[ 16]  DMA Channel6 Global Interrupt              
        DCD     App_Spurious_ISR                            ; 33, INTISR[ 17]  DMA Channel7 Global Interrupt              
        DCD     App_Spurious_ISR                            ; 34, INTISR[ 18]  ADC Global Interrupt                       
        DCD     App_Spurious_ISR                            ; 35, INTISR[ 19]  USB High Priority / CAN TX  Interrupts     
        DCD     App_Spurious_ISR                            ; 36, INTISR[ 20]  USB Low  Priority / CAN RX0 Interrupts     
        DCD     App_Spurious_ISR                            ; 37, INTISR[ 21]  CAN RX1 Interrupt                          
        DCD     App_Spurious_ISR                            ; 38, INTISR[ 22]  CAN SCE Interrupt                          
        DCD     App_Spurious_ISR                            ; 39, INTISR[ 23]  EXTI Line[9:5] Interrupt                   
        DCD     App_Spurious_ISR                            ; 40, INTISR[ 24]  TIM1 Break  Interrupt                      
        DCD     App_Spurious_ISR                            ; 41, INTISR[ 25]  TIM1 Update Interrupt                      
        DCD     App_Spurious_ISR                            ; 42, INTISR[ 26]  TIM1 Trigger & Commutation Interrupts      
        DCD     App_Spurious_ISR                            ; 43, INTISR[ 27]  TIM2 Global Interrupt                      
        DCD     App_Spurious_ISR                            ; 44, INTISR[ 28]  TIM3 Global Interrupt                      
        DCD     App_Spurious_ISR                            ; 45, INTISR[ 29]  TIM4 Global Interrupt                      
        DCD     App_Spurious_ISR                            ; 46, INTISR[ 30]  I2C1 Event  Interrupt                      
        DCD     App_Spurious_ISR                            ; 47, INTISR[ 31]  I2C1 Error  Interrupt                      
        DCD     App_Spurious_ISR                            ; 48, INTISR[ 32]  I2C2 Event  Interrupt                      
        DCD     App_Spurious_ISR                            ; 49, INTISR[ 33]  I2C2 Error  Interrupt                      
        DCD     App_Spurious_ISR                            ; 50, INTISR[ 34]  SPI1 Global Interrupt                      
        DCD     USART1_IRQHandler                             ; 51, INTISR[ 35]  SPI2 Global Interrupt                      
        DCD     App_Spurious_ISR                     ; 52, INTISR[ 36]  USART1 Global Interrupt                    
        DCD     App_Spurious_ISR                   ; 53, INTISR[ 37]  USART2 Global Interrupt                    
        DCD     App_Spurious_ISR                            ; 54, INTISR[ 38]  USART3 Global Interrupt                    
        DCD     App_Spurious_ISR                            ; 55, INTISR[ 39]  EXTI Line [15:10] Interrupts               
        DCD     App_Spurious_ISR                            ; 56, INTISR[ 40]  RTC Alarm through EXT Line Interrupt       
        DCD     App_Spurious_ISR                            ; 57, INTISR[ 41]  USB Wakeup from Suspend through EXTI Int.  
        DCD     App_Spurious_ISR                            ; 57, INTISR[ 41]  USB Wakeup from Suspend through EXTI Int.  
        DCD     App_Spurious_ISR                            ; 57, INTISR[ 41]  USB Wakeup from Suspend through EXTI Int.  
        DCD     App_Spurious_ISR                            ; 57, INTISR[ 41]  USB Wakeup from Suspend through EXTI Int.  
        DCD     App_Spurious_ISR                            ; 57, INTISR[ 41]  USB Wakeup from Suspend through EXTI Int.  
        DCD     App_Spurious_ISR                            ; 57, INTISR[ 41]  USB Wakeup from Suspend through EXTI Int.  
        DCD     App_Spurious_ISR                            ; 57, INTISR[ 41]  USB Wakeup from Suspend through EXTI Int.  
        DCD     App_Spurious_ISR                            ; 57, INTISR[ 41]  USB Wakeup from Suspend through EXTI Int.  
        
        
;******************************************************************************
;                          DEFAULT HANDLERS
;******************************************************************************

App_NMI_ISR         B       App_NMI_ISR

App_Fault_ISR       B       App_Fault_ISR

App_Spurious_ISR    B       App_Spurious_ISR

                ALIGN
                END
此帖出自stm32/stm8论坛

最新回复

是你中断向量表的问题,换个最新的stm32f10x_vector.c然后在调试下  详情 回复 发表于 2012-4-10 10:34
点赞 关注
 

回复
举报

73

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

中断处理函数是这个

void USART1_IRQHandler(void)
{
    OS_CPU_SR  cpu_sr;

    OS_ENTER_CRITICAL();;                                       
    OSIntNesting++;
   OS_EXIT_CRITICAL();
         
  if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
  {

     data = (USART_ReceiveData(USART1) & 0x7F); 
     USART_ClearITPendingBit(USART1, USART_IT_RXNE);    
       
  }
    OSIntExit();
  
}
此帖出自stm32/stm8论坛
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

那也谢谢香哥了。现在我感觉是中断处理函数没有问题

应该是向量表不对
个人感觉
此帖出自stm32/stm8论坛
 
 

回复

92

帖子

0

TA的资源

一粒金砂(初级)

4
 

换 st demo中的向量表试试看

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

5
 

那样编译就通不过了,你看我改的vectors.s文件有问题吗?

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

6
 

cortexM3使用uCos中的中断问题!

ucos的cortexm3移植模板均没有设置NVIC的优先级分组,使用的是默认级别,
当用户添加自己中断服务时应该将Tmr_TickISR_Handler调为最高,OSPendSV调为最低,自己的中断服务处于中间即可!
此帖出自stm32/stm8论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

7
 

前面是UART?后面是SPI?

                                 DCD     USART1_IRQHandler                             ; 51, INTISR[ 35]  SPI2 Global Interrupt
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 你这个中断处理程序只是接收中断处理,不是写中断。如果是写中断的话,只要你设置写中断允许,因为此时串口发送寄存器这时候本身就是空的,所以系统就会马上进到你现在的中断处理函数中,而你又没有对写中断做处理,系统就会死机。
此帖出自stm32/stm8论坛
 
 
 

回复

116

帖子

0

TA的资源

一粒金砂(中级)

9
 
你这个中断处理程序只是接收中断处理,不是写中断。如果是写中断的话,只要你设置写中断允许,因为此时串口发送寄存器这时候本身就是空的,所以系统就会马上进到你现在的中断处理函数中,而你又没有对写中断做处理, ...
是不是答非所问了?别人没见开了写中断,哪有你说的情况?!
此帖出自stm32/stm8论坛
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

10
 

求一份stm32+ucosii上串口中断的完整代码

楼上各位能给我发一份stm32+ucosii上串口中断的完整代码吗?最近我也在学习ucosii,但是没有什么资料,在学串口中断的时候不知道他和没有系统的有什么区别,求救!
此帖出自stm32/stm8论坛
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(中级)

11
 
不知大侠的问题是如何解决的,我现在也遇到了相似的问题,希望共同讨论一下。
此帖出自stm32/stm8论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

12
 

是你中断向量表的问题,换个最新的stm32f10x_vector.c然后在调试下

此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表