注册 登录
查看: 680|回复: 2

关于中断嵌套求解

[复制链接]
发表于 2013-10-13 16:00:54 | 显示全部楼层 |阅读模式
由于中断嵌套函数写在core_cm4.h中。所以在main的前面加了#include "core_cm4.h"但是编译时出现好多错误,求解
这是程序。就是修改山外的PWM、输入捕捉、PIT 中断综合测试。对FTM和PIT两个中断设置抢占优先级。
后面的图是编译时出现的错误。求解。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2013-10-13 17:52:24 | 显示全部楼层
core_cm4.h 之前,需要加入 如下 的定义:

  1. /*
  2. * 中断号类型声明
  3. */
  4. typedef enum
  5. {
  6.     /******  Cortex-M4 Processor Exceptions Numbers ****************************************************************/
  7.     NonMaskableInt_IRQn             = -14,      /*!< 2 Non Maskable Interrupt                                                                                    */
  8.     HardFault_IRQn                  = -13 ,     /*!< 3 Hard Fault                                                                                */
  9.     MemoryManagement_IRQn           = -12,      /*!< 4 Cortex-M4 Memory Management Interrupt                                                     */
  10.     BusFault_IRQn                   = -11,      /*!< 5 Cortex-M4 Bus Fault Interrupt                                                                     */
  11.     UsageFault_IRQn                 = -10,      /*!< 6 Cortex-M4 Usage Fault Interrupt                                                               */
  12.     SVCall_IRQn                     = -5,       /*!< 11 Cortex-M4 SV Call Interrupt                                                                      */
  13.     DebugMonitor_IRQn               = -4,       /*!< 12 Cortex-M4 Debug Monitor Interrupt                                                            */
  14.     PendSV_IRQn                     = -2,       /*!< 14 Cortex-M4 Pend SV Interrupt                                                                      */
  15.     SysTick_IRQn                    = -1,       /*!< 15 Cortex-M4 System Tick Interrupt                                                              */
  16.     /******  Kinetis 60 specific Interrupt Numbers **********************************************************************/
  17.     DMA0_IRQn                       = 0,        // DMA Channel 0 Transfer Complete
  18.     DMA1_IRQn                       = 1,        // DMA Channel 1 Transfer Complete
  19.     DMA2_IRQn                       = 2,        // DMA Channel 2 Transfer Complete
  20.     DMA3_IRQn                       = 3,        // DMA Channel 3 Transfer Complete
  21.     DMA4_IRQn                       = 4,        // DMA Channel 4 Transfer Complete
  22.     DMA5_IRQn                       = 5,        // DMA Channel 5 Transfer Complete
  23.     DMA6_IRQn                       = 6,        // DMA Channel 6 Transfer Complete
  24.     DMA7_IRQn                       = 7,        // DMA Channel 7 Transfer Complete
  25.     DMA8_IRQn                       = 8,        // DMA Channel 8 Transfer Complete
  26.     DMA9_IRQn                       = 9,        // DMA Channel 9 Transfer Complete
  27.     DMA10_IRQn                      = 10,       // DMA Channel 10 Transfer Complete
  28.     DMA11_IRQn                      = 11,       // DMA Channel 11 Transfer Complete
  29.     DMA12_IRQn                      = 12,       // DMA Channel 12 Transfer Complete
  30.     DMA13_IRQn                      = 13,       // DMA Channel 13 Transfer Complete
  31.     DMA14_IRQn                      = 14,       // DMA Channel 14 Transfer Complete
  32.     DMA15_IRQn                      = 15,       // DMA Channel 15 Transfer Complete
  33.     DMA_Error_IRQn                  = 16,       // DMA Error Interrupt
  34.     MCM_IRQn                        = 17,       // Normal Interrupt
  35.     FTFL_IRQn                       = 18,       // FTFL Interrupt
  36.     Read_Collision_IRQn             = 19,       // Read Collision Interrupt
  37.     LVD_LVW_IRQn                    = 20,       // Low Voltage Detect, Low Voltage Warning
  38.     LLW_IRQn                        = 21,       // Low Leakage Wakeup
  39.     Watchdog_IRQn                   = 22,       // WDOG Interrupt
  40.     RNG_IRQn                        = 23,       // RNGB Interrupt
  41.     I2C0_IRQn                       = 24,       // I2C0 interrupt
  42.     I2C1_IRQn                       = 25,       // I2C1 interrupt
  43.     SPI0_IRQn                       = 26,       // SPI0 Interrupt
  44.     SPI1_IRQn                       = 27,       // SPI1 Interrupt
  45.     SPI2_IRQn                       = 28,       // SPI2 Interrupt
  46.     CAN0_ORed_MB_IRQn               = 29,       // CAN0 OR'd Message Buffers Interrupt
  47.     CAN0_Bus_Off_IRQn               = 30,       // CAN0 Bus Off Interrupt
  48.     CAN0_Error_IRQn                 = 31,       // CAN0 Error Interrupt
  49.     CAN0_Tx_Warning_IRQn            = 32,       // CAN0 Tx Warning Interrupt
  50.     CAN0_Rx_Warning_IRQn            = 33,       // CAN0 Rx Warning Interrupt
  51.     CAN0_Wake_Up_IRQn               = 34,       // CAN0 Wake Up Interrupt
  52.     Reserved51_IRQn                 = 35,       // 保留 interrupt 51
  53.     Reserved52_IRQn                 = 36,       // 保留 interrupt 52
  54.     CAN1_ORed_MB_IRQn               = 37,       // CAN1 OR'd Message Buffers Interrupt
  55.     CAN1_Bus_Off_IRQn               = 38,       // CAN1 Bus Off Interrupt
  56.     CAN1_Error_IRQn                 = 39,       // CAN1 Error Interrupt
  57.     CAN1_Tx_Warning_IRQn            = 40,       // CAN1 Tx Warning Interrupt
  58.     CAN1_Rx_Warning_IRQn            = 41,       // CAN1 Rx Warning Interrupt
  59.     CAN1_Wake_Up_IRQn               = 42,       // CAN1 Wake Up Interrupt
  60.     Reserved59_IRQn                 = 43,       // 保留 interrupt 59
  61.     Reserved60_IRQn                 = 44,       // 保留 interrupt 60
  62.     UART0_RX_TX_IRQn                = 45,       // UART0 Receive/Transmit interrupt
  63.     UART0_ERR_IRQn                  = 46,       // UART0 Error interrupt
  64.     UART1_RX_TX_IRQn                = 47,       // UART1 Receive/Transmit interrupt
  65.     UART1_ERR_IRQn                  = 48,       // UART1 Error interrupt
  66.     UART2_RX_TX_IRQn                = 49,       // UART2 Receive/Transmit interrupt
  67.     UART2_ERR_IRQn                  = 50,       // UART2 Error interrupt
  68.     UART3_RX_TX_IRQn                = 51,       // UART3 Receive/Transmit interrupt
  69.     UART3_ERR_IRQn                  = 52,       // UART3 Error interrupt
  70.     UART4_RX_TX_IRQn                = 53,       // UART4 Receive/Transmit interrupt
  71.     UART4_ERR_IRQn                  = 54,       // UART4 Error interrupt
  72.     UART5_RX_TX_IRQn                = 55,       // UART5 Receive/Transmit interrupt
  73.     UART5_ERR_IRQn                  = 56,       // UART5 Error interrupt
  74.     ADC0_IRQn                       = 57,       // ADC0 interrupt
  75.     ADC1_IRQn                       = 58,       // ADC1 interrupt
  76.     CMP0_IRQn                       = 59,       // CMP0 interrupt
  77.     CMP1_IRQn                       = 60,       // CMP1 interrupt
  78.     CMP2_IRQn                       = 61,       // CMP2 interrupt
  79.     FTM0_IRQn                       = 62,       // FTM0 fault, overflow and channels interrupt
  80.     FTM1_IRQn                       = 63,       // FTM1 fault, overflow and channels interrupt
  81.     FTM2_IRQn                       = 64,       // FTM2 fault, overflow and channels interrupt
  82.     CMT_IRQn                        = 65,       // CMT interrupt
  83.     RTC_IRQn                        = 66,       // RTC interrupt
  84.     Reserved83_IRQn                 = 67,       // 保留 interrupt 83
  85.     PIT0_IRQn                       = 68,       // PIT timer channel 0 interrupt
  86.     PIT1_IRQn                       = 69,       // PIT timer channel 1 interrupt
  87.     PIT2_IRQn                       = 70,       // PIT timer channel 2 interrupt
  88.     PIT3_IRQn                       = 71,       // PIT timer channel 3 interrupt
  89.     PDB0_IRQn                       = 72,       // PDB0 Interrupt
  90.     USB0_IRQn                       = 73,       // USB0 interrupt
  91.     USBDCD_IRQn                     = 74,       // USBDCD Interrupt
  92.     ENET_1588_Timer_IRQn            = 75,       // Ethernet MAC IEEE 1588 Timer Interrupt
  93.     ENET_Transmit_IRQn              = 76,       // Ethernet MAC Transmit Interrupt
  94.     ENET_Receive_IRQn               = 77,       // Ethernet MAC Receive Interrupt
  95.     ENET_Error_IRQn                 = 78,       // Ethernet MAC Error and miscelaneous Interrupt
  96.     I2S0_IRQn                       = 79,       // I2S0 Interrupt
  97.     SDHC_IRQn                       = 80,       // SDHC Interrupt
  98.     DAC0_IRQn                       = 81,       // DAC0 interrupt
  99.     DAC1_IRQn                       = 82,       // DAC1 interrupt
  100.     TSI0_IRQn                       = 83,       // TSI0 Interrupt
  101.     MCG_IRQn                        = 84,       // MCG Interrupt
  102.     LPTMR_IRQn                      = 85,       // LPTimer interrupt
  103.     Reserved102_IRQn                = 86,       // 保留 interrupt 102
  104.     PORTA_IRQn                      = 87,       // Port A interrupt
  105.     PORTB_IRQn                      = 88,       // Port B interrupt
  106.     PORTC_IRQn                      = 89,       // Port C interrupt
  107.     PORTD_IRQn                      = 90,       // Port D interrupt
  108.     PORTE_IRQn                      = 91,       // Port E interrupt
  109.     Reserved108_IRQn                = 92,       // 保留 interrupt 108
  110.     Reserved109_IRQn                = 93,       // 保留 interrupt 109
  111.     Reserved110_IRQn                = 94,       // 保留 interrupt 110
  112.     Reserved111_IRQn                = 95,       // 保留 interrupt 111
  113.     Reserved112_IRQn                = 96,       // 保留 interrupt 112
  114.     Reserved113_IRQn                = 97,       // 保留 interrupt 113
  115.     Reserved114_IRQn                = 98,       // 保留 interrupt 114
  116.     Reserved115_IRQn                = 99,       // 保留 interrupt 115
  117.     Reserved116_IRQn                = 100,      // 保留 interrupt 116
  118.     Reserved117_IRQn                = 101,      // 保留 interrupt 117
  119.     Reserved118_IRQn                = 102,      // 保留 interrupt 118
  120.     Reserved119_IRQn                = 103,      // 保留 interrupt 119
  121. } IRQn_t, IRQn_Type;



还有 :
  1. #define   __NVIC_PRIO_BITS    4       /*ARM Cortex M4 implementation for interrupt priority shift*/



回复 支持 反对

使用道具 举报

发表于 2014-5-13 21:59:42 | 显示全部楼层
Admin 发表于 2013-10-13 17:52
core_cm4.h 之前,需要加入 如下 的定义:

加上了还是报错    提示未宏定义   我在main函数也写了#include"cor_cm4.h"头文件的
回复 支持 反对

使用道具 举报

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

本版积分规则

快速回复 返回列表 返回顶部