GD32中断服务函数的配置

[复制链接]
3091|2
 楼主| sunmeat 发表于 2014-9-23 08:33 | 显示全部楼层 |阅读模式
最新版3.5的库中给出了一个模板,模板中有stm32f10x_it.c这个文件,是用来编写中断服务函数的,在我们修改之前,这个函数已经定义了一些系统异常的接口,其他的普通中断服务函数,由我们自己添加。原来的函数如下
  1. void NMI_Handler(void)
  2. {
  3. }
  1. void HardFault_Handler(void)
  2. {
  3.   /* Go to infinite loop when Hard Fault exception occurs */
  4.   while (1)
  5.   {
  6.   }
  7. }
  1. void MemManage_Handler(void)
  2. {
  3.   /* Go to infinite loop when Memory Manage exception occurs */
  4.   while (1)
  5.   {
  6.   }
  7. }
  1. void BusFault_Handler(void)
  2. {
  3.   /* Go to infinite loop when Bus Fault exception occurs */
  4.   while (1)
  5.   {
  6.   }
  7. }
  1. void UsageFault_Handler(void)
  2. {
  3.   /* Go to infinite loop when Usage Fault exception occurs */
  4.   while (1)
  5.   {
  6.   }
  7. }
  1. void SVC_Handler(void)
  2. {
  3. }
  1. void DebugMon_Handler(void)
  2. {
  3. }
  1. void PendSV_Handler(void)
  2. {
  3. }
  1. void SysTick_Handler(void)
  2. {
  3. }



 楼主| sunmeat 发表于 2014-9-23 08:37 | 显示全部楼层
那么我们怎么知道这些中断服务函数如何写呢,这个是不可以随便定义的,原型可以在启动文件中找到,所有中断服务函数的原型如下
  1. __Vectors       DCD     __initial_sp               ; Top of Stack
  2.                 DCD     Reset_Handler              ; Reset Handler
  3.                 DCD     NMI_Handler                ; NMI Handler
  4.                 DCD     HardFault_Handler          ; Hard Fault Handler
  5.                 DCD     MemManage_Handler          ; MPU Fault Handler
  6.                 DCD     BusFault_Handler           ; Bus Fault Handler
  7.                 DCD     UsageFault_Handler         ; Usage Fault Handler
  8.                 DCD     0                          ; Reserved
  9.                 DCD     0                          ; Reserved
  10.                 DCD     0                          ; Reserved
  11.                 DCD     0                          ; Reserved
  12.                 DCD     SVC_Handler                ; SVCall Handler
  13.                 DCD     DebugMon_Handler           ; Debug Monitor Handler
  14.                 DCD     0                          ; Reserved
  15.                 DCD     PendSV_Handler             ; PendSV Handler
  16.                 DCD     SysTick_Handler            ; SysTick Handler

  17.                 ; External Interrupts
  18.                 DCD     WWDG_IRQHandler            ; Window Watchdog
  19.                 DCD     PVD_IRQHandler             ; PVD through EXTI Line detect
  20.                 DCD     TAMPER_IRQHandler          ; Tamper
  21.                 DCD     RTC_IRQHandler             ; RTC
  22.                 DCD     FLASH_IRQHandler           ; Flash
  23.                 DCD     RCC_IRQHandler             ; RCC
  24.                 DCD     EXTI0_IRQHandler           ; EXTI Line 0
  25.                 DCD     EXTI1_IRQHandler           ; EXTI Line 1
  26.                 DCD     EXTI2_IRQHandler           ; EXTI Line 2
  27.                 DCD     EXTI3_IRQHandler           ; EXTI Line 3
  28.                 DCD     EXTI4_IRQHandler           ; EXTI Line 4
  29.                 DCD     DMA1_Channel1_IRQHandler   ; DMA1 Channel 1
  30.                 DCD     DMA1_Channel2_IRQHandler   ; DMA1 Channel 2
  31.                 DCD     DMA1_Channel3_IRQHandler   ; DMA1 Channel 3
  32.                 DCD     DMA1_Channel4_IRQHandler   ; DMA1 Channel 4
  33.                 DCD     DMA1_Channel5_IRQHandler   ; DMA1 Channel 5
  34.                 DCD     DMA1_Channel6_IRQHandler   ; DMA1 Channel 6
  35.                 DCD     DMA1_Channel7_IRQHandler   ; DMA1 Channel 7
  36.                 DCD     ADC1_2_IRQHandler          ; ADC1 and ADC2
  37.                 DCD     CAN1_TX_IRQHandler         ; CAN1 TX
  38.                 DCD     CAN1_RX0_IRQHandler        ; CAN1 RX0
  39.                 DCD     CAN1_RX1_IRQHandler        ; CAN1 RX1
  40.                 DCD     CAN1_SCE_IRQHandler        ; CAN1 SCE
  41.                 DCD     EXTI9_5_IRQHandler         ; EXTI Line 9..5
  42.                 DCD     TIM1_BRK_IRQHandler        ; TIM1 Break
  43.                 DCD     TIM1_UP_IRQHandler         ; TIM1 Update
  44.                 DCD     TIM1_TRG_COM_IRQHandler    ; TIM1 Trigger and Commutation
  45.                 DCD     TIM1_CC_IRQHandler         ; TIM1 Capture Compare
  46.                 DCD     TIM2_IRQHandler            ; TIM2
  47.                 DCD     TIM3_IRQHandler            ; TIM3
  48.                 DCD     TIM4_IRQHandler            ; TIM4
  49.                 DCD     I2C1_EV_IRQHandler         ; I2C1 Event
  50.                 DCD     I2C1_ER_IRQHandler         ; I2C1 Error
  51.                 DCD     I2C2_EV_IRQHandler         ; I2C2 Event
  52.                 DCD     I2C2_ER_IRQHandler         ; I2C1 Error
  53.                 DCD     SPI1_IRQHandler            ; SPI1
  54.                 DCD     SPI2_IRQHandler            ; SPI2
  55.                 DCD     USART1_IRQHandler          ; USART1
  56.                 DCD     USART2_IRQHandler          ; USART2
  57.                 DCD     USART3_IRQHandler          ; USART3
  58.                 DCD     EXTI15_10_IRQHandler       ; EXTI Line 15..10
  59.                 DCD     RTCAlarm_IRQHandler        ; RTC alarm through EXTI line
  60.                 DCD     OTG_FS_WKUP_IRQHandler     ; USB OTG FS Wakeup through EXTI line
  61.                 DCD     0                          ; Reserved
  62.                 DCD     0                          ; Reserved
  63.                 DCD     0                          ; Reserved
  64.                 DCD     0                          ; Reserved
  65.                 DCD     0                          ; Reserved
  66.                 DCD     0                          ; Reserved
  67.                 DCD     0                          ; Reserved
  68.                 DCD     TIM5_IRQHandler            ; TIM5
  69.                 DCD     SPI3_IRQHandler            ; SPI3
  70.                 DCD     UART4_IRQHandler           ; UART4
  71.                 DCD     UART5_IRQHandler           ; UART5
  72.                 DCD     TIM6_IRQHandler            ; TIM6
  73.                 DCD     TIM7_IRQHandler            ; TIM7
  74.                 DCD     DMA2_Channel1_IRQHandler   ; DMA2 Channel1
  75.                 DCD     DMA2_Channel2_IRQHandler   ; DMA2 Channel2
  76.                 DCD     DMA2_Channel3_IRQHandler   ; DMA2 Channel3
  77.                 DCD     DMA2_Channel4_IRQHandler   ; DMA2 Channel4
  78.                 DCD     DMA2_Channel5_IRQHandler   ; DMA2 Channel5
  79.                 DCD     ETH_IRQHandler             ; Ethernet
  80.                 DCD     ETH_WKUP_IRQHandler        ; Ethernet Wakeup through EXTI line
  81.                 DCD     CAN2_TX_IRQHandler         ; CAN2 TX
  82.                 DCD     CAN2_RX0_IRQHandler        ; CAN2 RX0
  83.                 DCD     CAN2_RX1_IRQHandler        ; CAN2 RX1
  84.                 DCD     CAN2_SCE_IRQHandler        ; CAN2 SCE
  85.                 DCD     OTG_FS_IRQHandler          ; USB OTG FS
  86. __Vectors_End
我们需要使用哪个中断服务函数的时候,直接把上面的函数加到stm32f10x_it.c中就可以啦
 楼主| sunmeat 发表于 2014-9-23 08:39 | 显示全部楼层
给两个写好的中断服务函数如下
  1. void TIM3_IRQHandler(void)
  2. {
  3.   if(TIM_GetITStatus(TIM3, TIM_IT_CC2) == SET)
  4.   {
  5.     /* Clear TIM3 Capture compare interrupt pending bit */
  6.     TIM_ClearITPendingBit(TIM3, TIM_IT_CC2);
  7.     if(CaptureNumber == 0)
  8.     {
  9.       /* Get the Input Capture value */
  10.       IC3ReadValue1 = TIM_GetCapture2(TIM3);
  11.       CaptureNumber = 1;
  12.     }
  13.     else if(CaptureNumber == 1)
  14.     {
  15.       /* Get the Input Capture value */
  16.       IC3ReadValue2 = TIM_GetCapture2(TIM3);
  17.       
  18.       /* Capture computation */
  19.       if (IC3ReadValue2 > IC3ReadValue1)
  20.       {
  21.         Capture = (IC3ReadValue2 - IC3ReadValue1);
  22.       }
  23.       else
  24.       {
  25.         Capture = ((0xFFFF - IC3ReadValue1) + IC3ReadValue2);
  26.       }
  27.       /* Frequency computation */
  28.       TIM3Freq = (uint32_t) SystemCoreClock / Capture;
  29.       CaptureNumber = 0;
  30.     }
  31.   }
  32. }
您需要登录后才可以回帖 登录 | 注册

本版积分规则

208

主题

2132

帖子

13

粉丝
快速回复 在线客服 返回列表 返回顶部