首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ARM嵌入式IAR工作台-如何定义中断服务例程?

ARM嵌入式IAR工作台-如何定义中断服务例程?
EN

Stack Overflow用户
提问于 2018-04-21 10:54:05
回答 1查看 1.5K关注 0票数 1

我试图为Timer2溢出中断创建一个中断服务例程,如下所示:

代码语言:javascript
复制
#include "stm32f10x.h"

/* IRQ definitions in CMSIS startup_stm32f10x */


void TIM2_IRQHandler (void) {
  TIM2->SR &=~TIM_SR_UIF;
  GPIOC->ODR |= GPIO_ODR_ODR13;
}

void timer2_setup() {
  RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;

  TIM2->PSC = 0;
  TIM2->ARR = 900;
  TIM2->DIER |= TIM_DIER_UIE;

  NVIC_EnableIRQ(TIM2_IRQn);

  TIM2->CR1 = TIM_CR1_CEN;
}

int main()
{
  /* Set System-Clock as high as possible */
  RCC->CFGR = RCC_CFGR_SW_1 | RCC_CFGR_PLLMULL_3 | RCC_CFGR_PLLMULL_2 | RCC_CFGR_PLLMULL_0;
  RCC->CR = RCC_CR_HSION | RCC_CR_PLLON;

  /* Set GPIO C13 as High-Speed PushPull output */
  RCC->APB2ENR = RCC_APB2ENR_IOPCEN;
  GPIOC->CRH |= GPIO_CRH_MODE13_1 | GPIO_CRH_MODE13_0;

  __enable_irq();  
  timer2_setup();
  GPIOC->ODR &=~GPIO_ODR_ODR13;
  while(1){
    asm volatile ("nop");
  }
}

我正在为ARM v8.22.2使用IAR嵌入式工作台(所以是最新版本)。但是TIM2_IRQHandler从来没有被调用过--它甚至从C编译器那里得到了优化(所以在争论中不再有TIM2_IRQHandler了)。

那么,如何在IAR工作台中正确地定义ISR呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-22 11:28:10

请检查startup_stm32f10XXX.s文件。该文件必须包含MCU的所有中断向量定义。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49955014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档