• 关于STM32的NVIC问题


    转载自:http://www.amobbs.com/thread-4409925-1-1.html

    不喜欢用库函数,喜欢自己折腾寄存器,能做到心中有数。这两天折腾中断的事情,中断向量表自定义的问题遇到点麻烦,现在解决了,贴出来跟大家分享一下。

        刚开始,根据IAR的手册,将 cstartup_M.c 拷贝到了我的工程目录下,编译没有问题, 但是仿真运行的时候,总是提示 __vector_table 找不到,初始化 MSP 以及 PC 都是错误的,程序乱跑, 加 volatile 也没有用,开来不是优化问题。后来在网上找到一个文件,试验一下可以了。于是把 STM32 所有中断都定义了,方便以后使用。 下面的文件定义的向量表,反汇编后,跟数据手册全部对比过,中断向量地址没有问题。



    //==========================================================================
    // 文件名称: stm32_vector_table.h
    // 程序功能: STM32 中断向量表定义
    // 微控制器: STM32
    // 系统时钟: 
    // 版权所有: XXX
    // 编辑软件: UE13.0
    // 编译环境:IAR Embedded Workbench for ARM 5.50
    // 编写时间: 2010-11-23
    // 程序版本: 1.0
    // 程序作者: XXX
    // 程序修改: 
    // 修改日期: 
    // 修改内容: 
    //==========================================================================

    //==========================================================================
    // STM32 中断向量数据类型定义
    //==========================================================================
    typedef void( *intfunc )( void );                                       // 
    typedef union { intfunc __fun; void * __ptr; } intvec_elem;             // 


    #ifdef __ICCARM__                                                       // 
        #pragma language=extended                                           // 
        #if (__VER__ < 500)                                                 // 
            #pragma segment="CSTACK"                                        // 
            extern void __program_start(void);                              // 
        #else                                                               // 
            #pragma section="CSTACK"                                        // 
            extern void __iar_program_start(void);                          // 
        #endif                                                              // #if (__VER__ < 500)
    #endif                                                                  // #ifdef __ICCARM__

    #ifdef __CC_ARM                                                         // 
        extern unsigned int Image$$CSTACK$$ZI$$Limit;                       // 
        extern void __main(void);                                           // 
    #endif                                                                  // 

    //==========================================================================
    // STM32 中断函数声明
    //==========================================================================
    void    irq_nmi_handler             (void);                             // -02: NMI             不可屏蔽中断
    void    irq_hard_fault_handler      (void);                             // -01: Hard Fault      硬件失效
    void    irq_mem_manage_handler      (void);                             //  00: Mem_Manage      存储管理
    void    irq_bus_fault_handler       (void);                             //  01: Bus Fault       总线实效
    void    irq_usage_fault_handler     (void);                             //  02: Usage Fault     用法错误,未定义指令或非法状态
    void    irq_sv_call_handler         (void);                             //  03: SV CALL         SWI指令系统服务调用,软中断
    void    irq_debug_monitor_handler   (void);                             //  04: Debug Monitor   调试监控器
    void    irq_pend_sv_handler         (void);                             //  05: Pend SV         可挂起系统服务
    void    irq_sys_tick_handler        (void);                             //  06: Sys Tick        系统滴答定时器
    void    irq_wwdg_handler            (void);                             //  07: WWDG            窗看门狗定时器中断
    void    irq_pvd_handler             (void);                             //  08: PVD             电源检测中断,连接到EXIT
    void    irq_tamper_handler          (void);                             //  09: TAMPER          侵入检测中断
    void    irq_rtc_handler             (void);                             //  10: RTC             实时时钟全局中断
    void    irq_flash_handler           (void);                             //  11: FLASH           闪存全局中断
    void    irq_rcc_handler             (void);                             //  12: RCC             时钟检测中断,注意连接到 NMI
    void    irq_exti0_handler           (void);                             //  13: EXTI0           外部中断0,EXTI线0中断
    void    irq_exti1_handler           (void);                             //  14: EXTI1           外部中断0,EXTI线1中断
    void    irq_exti2_handler           (void);                             //  15: EXTI2           外部中断0,EXTI线2中断
    void    irq_exti3_handler           (void);                             //  16: EXTI3           外部中断0,EXTI线3中断
    void    irq_exti4_handler           (void);                             //  17: EXTI4           外部中断0,EXTI线4中断
    void    irq_dma1_ch1_handler        (void);                             //  18: DMA1 CH1        DMA1通道1全局中断
    void    irq_dma1_ch2_handler        (void);                             //  19: DMA1 CH2        DMA1通道2全局中断
    void    irq_dma1_ch3_handler        (void);                             //  20: DMA1 CH3        DMA1通道3全局中断
    void    irq_dma1_ch4_handler        (void);                             //  21: DMA1 CH4        DMA1通道4全局中断
    void    irq_dma1_ch5_handler        (void);                             //  22: DMA1 CH5        DMA1通道5全局中断
    void    irq_dma1_ch6_handler        (void);                             //  23: DMA1 CH6        DMA1通道6全局中断
    void    irq_dma1_ch7_handler        (void);                             //  24: DMA1 CH7        DMA1通道7全局中断
    void    irq_adc1_adc2_handler       (void);                             //  25: ADC1 ADC2       模数转换1、2全局中断
    void    irq_usb_hp_can_tx_handler   (void);                             //  26: USB HP CAN TX   USB高优先级 或 CAN发送中断
    void    irq_usb_lp_can_rx0_handler  (void);                             //  27: USB LP CAN RX0  USB低优先级 或 CAN接收0中断
    void    irq_can_rx1_handler         (void);                             //  28: CAN RX1         CAN接收1中断
    void    irq_can_sce_handler         (void);                             //  29: CAN SCE         CAN SCE 中断
    void    irq_exti5_to_9_handler      (void);                             //  30: EXTI5...9       外部中断5-9,EXTI线5-9中断
    void    irq_tim1_brk_handler        (void);                             //  31: TIM1 BRK        TIM1 刹车中断
    void    irq_tim1_up_handler         (void);                             //  32: TIM1 UP         TIM1 更新中断
    void    irq_tim1_trg_com_handler    (void);                             //  33: TIM1 TRG COM    TIM1 触发 和 通信 中断
    void    irq_tim1_cc_handler         (void);                             //  34: TIM1 CC         TIM1 捕获比较中断
    void    irq_tim2_handler            (void);                             //  35: TIM2            TIM2 全局中断
    void    irq_tim3_handler            (void);                             //  36: TIM3            TIM3 全局中断
    void    irq_tim4_handler            (void);                             //  37: TIM4            TIM4 全局中断
    void    irq_i2c1_ev_handler         (void);                             //  38: I2C1 EV         I2C1 事件中断
    void    irq_i2c1_er_handler         (void);                             //  39: I2C1 ER         I2C1 错误中断
    void    irq_i2c2_ev_handler         (void);                             //  40: I2C2 EV         I2C2 事件中断
    void    irq_i2c2_er_handler         (void);                             //  41: I2C2 ER         I2C2 错误中断
    void    irq_spi1_handler            (void);                             //  42: SPI1            SPI1 全局中断
    void    irq_spi2_handler            (void);                             //  43: SPI2            SPI2 全局中断
    void    irq_usart1_handler          (void);                             //  44: USART1          USART1 全局中断
    void    irq_usart2_handler          (void);                             //  45: USART2          USART2 全局中断
    void    irq_usart3_handler          (void);                             //  46: USART3          USART3 全局中断
    void    irq_exti10_to_15_handler    (void);                             //  47: EXTI10...15     外部中断10-15,EXTI线10-15中断
    void    irq_rtc_alarm_handler       (void);                             //  48: RTC Alarm       RTC 闹钟中断,连接到 EXTI
    void    irq_usb_weekup_handler      (void);                             //  49: USB Weekup      USB 待机唤醒中断,连接到 EXTI
    void    irq_tim8_brk_handler        (void);                             //  50: TIM8 BRK        TIM8 刹车中断
    void    irq_tim8_up_handler         (void);                             //  51: TIM8 UP         TIM8 更新中断
    void    irq_tim8_trg_com_handler    (void);                             //  52: TIM8 TRG COM    TIM8 触发 和 通信 中断
    void    irq_tim8_cc_handler         (void);                             //  53: TIM8 CC         TIM8 捕获比较中断
    void    irq_adc3_handler            (void);                             //  54: ADC3            ADC3 全局中断
    void    irq_fsmc_handler            (void);                             //  55: FSMC            FSMC 全局中断
    void    irq_sdio_handler            (void);                             //  56: SDIO            SDIO 全局中断
    void    irq_tim5_handler            (void);                             //  57: TIM5            TIM5 全局中断
    void    irq_spi3_handler            (void);                             //  58: SPI3            SPI3 全局中断
    void    irq_usart4_handler          (void);                             //  59: USART4          USART4 全局中断
    void    irq_usart5_handler          (void);                             //  60: USART5          USART5 全局中断
    void    irq_tim6_handler            (void);                             //  61: TIM6            TIM6 全局中断
    void    irq_tim7_handler            (void);                             //  62: TIM7            TIM7 全局中断
    void    irq_dma2_ch1_handler        (void);                             //  63: DMA2 CH1        DMA2通道1全局中断
    void    irq_dma2_ch2_handler        (void);                             //  64: DMA2 CH2        DMA2通道2全局中断
    void    irq_dma2_ch3_handler        (void);                             //  65: DMA2 CH3        DMA2通道3全局中断
    void    irq_dma2_ch4_5_handler      (void);                             //  66: DMA2 CH4 CH5    DMA2通道4、5全局中断
    void    irq_not_used_handler        (void);                             //    : Not Used        未使用的中断向量处理

    //==========================================================================
    // STM32 中断向量表定义
    //==========================================================================
    #ifdef __ICCARM__                                                       // 
        #if (__VER__ < 500)                                                 // 
            #pragma location = "INTVEC"                                     // 
        #else                                                               // 
            #pragma location = ".intvec"                                    // 
        #endif                                                              // #if (__VER__ < 500)
    #endif                                                                  // #ifdef __ICCARM__

    #ifdef __CC_ARM                                                         // 
        #pragma arm section rodata = "INTVEC"                               // 
    #endif                                                                  // 

    const intvec_elem __vector_table[] =                                    // 
    {                                                                       // 
        #ifdef __ICCARM__                                                   // 
            { .__ptr = __sfe( "CSTACK" ) },                                 // 
            #if (__VER__ < 500)                                             // 
                __program_start,                                            // 
            #else                                                           // 
                __iar_program_start,                                        // 
            #endif                                                          // #if (__VER__ >= 500)
        #endif                                                              // #ifdef __ICCARM__
            
        #ifdef __CC_ARM                                                     // 
            (intfunc) &Image$$CSTACK$$ZI$$Limit,                            // 
            __main,                                                         // 
        #endif                                                              // 

        irq_nmi_handler             ,                                       // -02: NMI             不可屏蔽中断      
        irq_hard_fault_handler      ,                                       // -01: Hard Fault      硬件失效                                    
        irq_mem_manage_handler      ,                                       //  00: Mem_Manage      存储管理                       
        irq_bus_fault_handler       ,                                       //  01: Bus Fault       总线实效                       
        irq_usage_fault_handler     ,                                       //  02: Usage Fault     用法错误,未定义指令或非法状态 
        irq_not_used_handler        ,                                       //                      未定义
        irq_not_used_handler        ,                                       //                      未定义
        irq_not_used_handler        ,                                       //                      未定义
        irq_not_used_handler        ,                                       //                      未定义
        irq_sv_call_handler         ,                                       // 03: SV CALL          SWI指令系统服务调用,软中断  
        irq_debug_monitor_handler   ,                                       // 04: Debug Monitor    调试监控器                   
        irq_not_used_handler        ,                                       //                      未定义
        irq_pend_sv_handler         ,                                       // 05: Pend SV          可挂起系统服务                
        irq_sys_tick_handler        ,                                       // 06: Sys Tick         系统滴答定时器                
        irq_wwdg_handler            ,                                       // 07: WWDG             窗看门狗定时器中断            
        irq_pvd_handler             ,                                       // 08: PVD              电源检测中断,连接到EXIT      
        irq_tamper_handler          ,                                       // 09: TAMPER           侵入检测中断                  
        irq_rtc_handler             ,                                       // 10: RTC              实时时钟全局中断              
        irq_flash_handler           ,                                       // 11: FLASH            闪存全局中断                  
        irq_rcc_handler             ,                                       // 12: RCC              时钟检测中断,注意连接到 NMI  
        irq_exti0_handler           ,                                       // 13: EXTI0            外部中断0,EXTI线0中断        
        irq_exti1_handler           ,                                       // 14: EXTI1            外部中断0,EXTI线1中断        
        irq_exti2_handler           ,                                       // 15: EXTI2            外部中断0,EXTI线2中断        
        irq_exti3_handler           ,                                       // 16: EXTI3            外部中断0,EXTI线3中断        
        irq_exti4_handler           ,                                       // 17: EXTI4            外部中断0,EXTI线4中断        
        irq_dma1_ch1_handler        ,                                       // 18: DMA1 CH1         DMA1通道1全局中断             
        irq_dma1_ch2_handler        ,                                       // 19: DMA1 CH2         DMA1通道2全局中断             
        irq_dma1_ch3_handler        ,                                       // 20: DMA1 CH3         DMA1通道3全局中断             
        irq_dma1_ch4_handler        ,                                       // 21: DMA1 CH4         DMA1通道4全局中断             
        irq_dma1_ch5_handler        ,                                       // 22: DMA1 CH5         DMA1通道5全局中断             
        irq_dma1_ch6_handler        ,                                       // 23: DMA1 CH6         DMA1通道6全局中断             
        irq_dma1_ch7_handler        ,                                       // 24: DMA1 CH7         DMA1通道7全局中断             
        irq_adc1_adc2_handler       ,                                       // 25: ADC1 ADC2        模数转换1、2全局中断          
        irq_usb_hp_can_tx_handler   ,                                       // 26: USB HP CAN TX    USB高优先级 或 CAN发送中断    
        irq_usb_lp_can_rx0_handler  ,                                       // 27: USB LP CAN RX0   USB低优先级 或 CAN接收0中断   
        irq_can_rx1_handler         ,                                       // 28: CAN RX1          CAN接收1中断                  
        irq_can_sce_handler         ,                                       // 29: CAN SCE          CAN SCE 中断                  
        irq_exti5_to_9_handler      ,                                       // 30: EXTI5...9        外部中断5-9,EXTI线5-9中断    
        irq_tim1_brk_handler        ,                                       // 31: TIM1 BRK         TIM1 刹车中断                 
        irq_tim1_up_handler         ,                                       // 32: TIM1 UP          TIM1 更新中断                 
        irq_tim1_trg_com_handler    ,                                       // 33: TIM1 TRG COM     TIM1 触发 和 通信 中断        
        irq_tim1_cc_handler         ,                                       // 34: TIM1 CC          TIM1 捕获比较中断             
        irq_tim2_handler            ,                                       // 35: TIM2             TIM2 全局中断                 
        irq_tim3_handler            ,                                       // 36: TIM3             TIM3 全局中断                 
        irq_tim4_handler            ,                                       // 37: TIM4             TIM4 全局中断                 
        irq_i2c1_ev_handler         ,                                       // 38: I2C1 EV          I2C1 事件中断                 
        irq_i2c1_er_handler         ,                                       // 39: I2C1 ER          I2C1 错误中断                 
        irq_i2c2_ev_handler         ,                                       // 40: I2C2 EV          I2C2 事件中断                 
        irq_i2c2_er_handler         ,                                       // 41: I2C2 ER          I2C2 错误中断                 
        irq_spi1_handler            ,                                       // 42: SPI1             SPI1 全局中断                 
        irq_spi2_handler            ,                                       // 43: SPI2             SPI2 全局中断                 
        irq_usart1_handler          ,                                       // 44: USART1           USART1 全局中断               
        irq_usart2_handler          ,                                       // 45: USART2           USART2 全局中断               
        irq_usart3_handler          ,                                       // 46: USART3           USART3 全局中断               
        irq_exti10_to_15_handler    ,                                       // 47: EXTI10...15      外部中断10-15,EXTI线10-15中断
        irq_rtc_alarm_handler       ,                                       // 48: RTC Alarm        RTC 闹钟中断,连接到 EXTI     
        irq_usb_weekup_handler      ,                                       // 49: USB Weekup       USB 待机唤醒中断,连接到 EXTI 
        irq_tim8_brk_handler        ,                                       // 50: TIM8 BRK         TIM8 刹车中断                 
        irq_tim8_up_handler         ,                                       // 51: TIM8 UP          TIM8 更新中断                 
        irq_tim8_trg_com_handler    ,                                       // 52: TIM8 TRG COM     TIM8 触发 和 通信 中断        
        irq_tim8_cc_handler         ,                                       // 53: TIM8 CC          TIM8 捕获比较中断             
        irq_adc3_handler            ,                                       // 54: ADC3             ADC3 全局中断                 
        irq_fsmc_handler            ,                                       // 55: FSMC             FSMC 全局中断                 
        irq_sdio_handler            ,                                       // 56: SDIO             SDIO 全局中断                 
        irq_tim5_handler            ,                                       // 57: TIM5             TIM5 全局中断                 
        irq_spi3_handler            ,                                       // 58: SPI3             SPI3 全局中断                 
        irq_usart4_handler          ,                                       // 59: USART4           USART4 全局中断               
        irq_usart5_handler          ,                                       // 60: USART5           USART5 全局中断               
        irq_tim6_handler            ,                                       // 61: TIM6             TIM6 全局中断                 
        irq_tim7_handler            ,                                       // 62: TIM7             TIM7 全局中断                 
        irq_dma2_ch1_handler        ,                                       // 63: DMA2 CH1         DMA2通道1全局中断             
        irq_dma2_ch2_handler        ,                                       // 64: DMA2 CH2         DMA2通道2全局中断             
        irq_dma2_ch3_handler        ,                                       // 65: DMA2 CH3         DMA2通道3全局中断             
        irq_dma2_ch4_5_handler      ,                                       // 66: DMA2 CH4 CH5     DMA2通道4、5全局中断          
    };                                                                      // 

    //==========================================================================
    // STM32 中断函数
    //==========================================================================
    __weak  void    irq_nmi_handler             (void) {};                  // -02: NMI             不可屏蔽中断
    __weak  void    irq_hard_fault_handler      (void) {};                  // -01: Hard Fault      硬件失效
    __weak  void    irq_mem_manage_handler      (void) {};                  //  00: Mem_Manage      存储管理
    __weak  void    irq_bus_fault_handler       (void) {};                  //  01: Bus Fault       总线实效
    __weak  void    irq_usage_fault_handler     (void) {};                  //  02: Usage Fault     用法错误,未定义指令或非法状态
    __weak  void    irq_sv_call_handler         (void) {};                  //  03: SV CALL         SWI指令系统服务调用,软中断
    __weak  void    irq_debug_monitor_handler   (void) {};                  //  04: Debug Monitor   调试监控器
    __weak  void    irq_pend_sv_handler         (void) {};                  //  05: Pend SV         可挂起系统服务
    __weak  void    irq_sys_tick_handler        (void) {};                  //  06: Sys Tick        系统滴答定时器
    __weak  void    irq_wwdg_handler            (void) {};                  //  07: WWDG            窗看门狗定时器中断
    __weak  void    irq_pvd_handler             (void) {};                  //  08: PVD             电源检测中断,连接到EXIT
    __weak  void    irq_tamper_handler          (void) {};                  //  09: TAMPER          侵入检测中断
    __weak  void    irq_rtc_handler             (void) {};                  //  10: RTC             实时时钟全局中断
    __weak  void    irq_flash_handler           (void) {};                  //  11: FLASH           闪存全局中断
    __weak  void    irq_rcc_handler             (void) {};                  //  12: RCC             时钟检测中断,注意连接到 NMI
    __weak  void    irq_exti0_handler           (void) {};                  //  13: EXTI0           外部中断0,EXTI线0中断
    __weak  void    irq_exti1_handler           (void) {};                  //  14: EXTI1           外部中断0,EXTI线1中断
    __weak  void    irq_exti2_handler           (void) {};                  //  15: EXTI2           外部中断0,EXTI线2中断
    __weak  void    irq_exti3_handler           (void) {};                  //  16: EXTI3           外部中断0,EXTI线3中断
    __weak  void    irq_exti4_handler           (void) {};                  //  17: EXTI4           外部中断0,EXTI线4中断
    __weak  void    irq_dma1_ch1_handler        (void) {};                  //  18: DMA1 CH1        DMA1通道1全局中断
    __weak  void    irq_dma1_ch2_handler        (void) {};                  //  19: DMA1 CH2        DMA1通道2全局中断
    __weak  void    irq_dma1_ch3_handler        (void) {};                  //  20: DMA1 CH3        DMA1通道3全局中断
    __weak  void    irq_dma1_ch4_handler        (void) {};                  //  21: DMA1 CH4        DMA1通道4全局中断
    __weak  void    irq_dma1_ch5_handler        (void) {};                  //  22: DMA1 CH5        DMA1通道5全局中断
    __weak  void    irq_dma1_ch6_handler        (void) {};                  //  23: DMA1 CH6        DMA1通道6全局中断
    __weak  void    irq_dma1_ch7_handler        (void) {};                  //  24: DMA1 CH7        DMA1通道7全局中断
    __weak  void    irq_adc1_adc2_handler       (void) {};                  //  25: ADC1 ADC2       模数转换1、2全局中断
    __weak  void    irq_usb_hp_can_tx_handler   (void) {};                  //  26: USB HP CAN TX   USB高优先级 或 CAN发送中断
    __weak  void    irq_usb_lp_can_rx0_handler  (void) {};                  //  27: USB LP CAN RX0  USB低优先级 或 CAN接收0中断
    __weak  void    irq_can_rx1_handler         (void) {};                  //  28: CAN RX1         CAN接收1中断
    __weak  void    irq_can_sce_handler         (void) {};                  //  29: CAN SCE         CAN SCE 中断
    __weak  void    irq_exti5_to_9_handler      (void) {};                  //  30: EXTI5...9       外部中断5-9,EXTI线5-9中断
    __weak  void    irq_tim1_brk_handler        (void) {};                  //  31: TIM1 BRK        TIM1 刹车中断
    __weak  void    irq_tim1_up_handler         (void) {};                  //  32: TIM1 UP         TIM1 更新中断
    __weak  void    irq_tim1_trg_com_handler    (void) {};                  //  33: TIM1 TRG COM    TIM1 触发 和 通信 中断
    __weak  void    irq_tim1_cc_handler         (void) {};                  //  34: TIM1 CC         TIM1 捕获比较中断
    __weak  void    irq_tim2_handler            (void) {};                  //  35: TIM2            TIM2 全局中断
    __weak  void    irq_tim3_handler            (void) {};                  //  36: TIM3            TIM3 全局中断
    __weak  void    irq_tim4_handler            (void) {};                  //  37: TIM4            TIM4 全局中断
    __weak  void    irq_i2c1_ev_handler         (void) {};                  //  38: I2C1 EV         I2C1 事件中断
    __weak  void    irq_i2c1_er_handler         (void) {};                  //  39: I2C1 ER         I2C1 错误中断
    __weak  void    irq_i2c2_ev_handler         (void) {};                  //  40: I2C2 EV         I2C2 事件中断
    __weak  void    irq_i2c2_er_handler         (void) {};                  //  41: I2C2 ER         I2C2 错误中断
    __weak  void    irq_spi1_handler            (void) {};                  //  42: SPI1            SPI1 全局中断
    __weak  void    irq_spi2_handler            (void) {};                  //  43: SPI2            SPI2 全局中断
    __weak  void    irq_usart1_handler          (void) {};                  //  44: USART1          USART1 全局中断
    __weak  void    irq_usart2_handler          (void) {};                  //  45: USART2          USART2 全局中断
    __weak  void    irq_usart3_handler          (void) {};                  //  46: USART3          USART3 全局中断
    __weak  void    irq_exti10_to_15_handler    (void) {};                  //  47: EXTI10...15     外部中断10-15,EXTI线10-15中断
    __weak  void    irq_rtc_alarm_handler       (void) {};                  //  48: RTC Alarm       RTC 闹钟中断,连接到 EXTI
    __weak  void    irq_usb_weekup_handler      (void) {};                  //  49: USB Weekup      USB 待机唤醒中断,连接到 EXTI
    __weak  void    irq_tim8_brk_handler        (void) {};                  //  50: TIM8 BRK        TIM8 刹车中断
    __weak  void    irq_tim8_up_handler         (void) {};                  //  51: TIM8 UP         TIM8 更新中断
    __weak  void    irq_tim8_trg_com_handler    (void) {};                  //  52: TIM8 TRG COM    TIM8 触发 和 通信 中断
    __weak  void    irq_tim8_cc_handler         (void) {};                  //  53: TIM8 CC         TIM8 捕获比较中断
    __weak  void    irq_adc3_handler            (void) {};                  //  54: ADC3            ADC3 全局中断
    __weak  void    irq_fsmc_handler            (void) {};                  //  55: FSMC            FSMC 全局中断
    __weak  void    irq_sdio_handler            (void) {};                  //  56: SDIO            SDIO 全局中断
    __weak  void    irq_tim5_handler            (void) {};                  //  57: TIM5            TIM5 全局中断
    __weak  void    irq_spi3_handler            (void) {};                  //  58: SPI3            SPI3 全局中断
    __weak  void    irq_usart4_handler          (void) {};                  //  59: USART4          USART4 全局中断
    __weak  void    irq_usart5_handler          (void) {};                  //  60: USART5          USART5 全局中断
    __weak  void    irq_tim6_handler            (void) {};                  //  61: TIM6            TIM6 全局中断
    __weak  void    irq_tim7_handler            (void) {};                  //  62: TIM7            TIM7 全局中断
    __weak  void    irq_dma2_ch1_handler        (void) {};                  //  63: DMA2 CH1        DMA2通道1全局中断
    __weak  void    irq_dma2_ch2_handler        (void) {};                  //  64: DMA2 CH2        DMA2通道2全局中断
    __weak  void    irq_dma2_ch3_handler        (void) {};                  //  65: DMA2 CH3        DMA2通道3全局中断
    __weak  void    irq_dma2_ch4_5_handler      (void) {};                  //  66: DMA2 CH4 CH5    DMA2通道4、5全局中断
    __weak  void    irq_not_used_handler        (void) {};                  //    : Not Used        未使用的中断向量处理
  • 相关阅读:
    libevent
    /dev/poll, kqueue(2), event ports, POSIX select(2), Windows select(), poll(2), and epoll(4)
    Netty 系列之 Netty 高性能之道 高性能的三个主题 Netty使得开发者能够轻松地接受大量打开的套接字 Java 序列化
    How to Design a Good API and Why it Matters
    cloud native
    Service Mesh服务网格:是什么和为什么
    唯品会的Service Mesh三年进化史 2018 年 Service Mesh 元年,被誉为是下一代微服务架构
    干货 | 蚂蚁金服是如何实现经典服务化架构往 Service Mesh 方向的演进的?
    Gradle
    Why did we build Zuul? How We Use Zuul At Netflix
  • 原文地址:https://www.cnblogs.com/ct1104/p/4005681.html
Copyright © 2020-2023  润新知