原创 NVIC&GPIO中断测试

2009-12-10 22:21 4557 3 3 分类: MCU/ 嵌入式
这一块停止了好几天了,因为总感觉没有理解,今天总算是理解了一点。唯一的结论就是多看Cortex-M3。
程序非常非常简单,但是现在还有一个最大的疑点就是不知道为什么,用STLINKII一设置断点,程序就跑飞了。
  把这个最简单的程序贴在这里,以便以后查询。
以下是main.c中的代码。
int main(void)
{

  RCC_Configuration();  

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
  GPIOC->CRL=0x11110000;
  GPIOD->CRL=0x44444444;
  AFIO->EXTICR[0]|=AFIO_EXTICR1_EXTI3_PD;
  AFIO->EXTICR[1]|=AFIO_EXTICR2_EXTI4_PD;

  EXTI->IMR= EXTI_IMR_MR3|EXTI_IMR_MR4;
  EXTI->FTSR=EXTI_RTSR_TR3|EXTI_RTSR_TR4;
 
  NVIC->IP[EXTI3_IRQn]=0;
  NVIC->IP[EXTI4_IRQn]=1;
  NVIC->ISER[0]=0x00000600;

  while (1)
  {
  /*  GPIOC->BSRR= GPIO_Pin_5;
    Delay(0x00ffffff);
    GPIOC->BRR= GPIO_Pin_5;
    Delay(0x00ffffff); */
  }     
}
以下是stm32f10x_it.c中需要添加的。
void EXTI3_IRQHandler(void)
{
  GPIOC->BSRR= GPIO_Pin_7;
  GPIOC->BSRR= GPIO_Pin_6;
 // GPIOC->BSRR= GPIO_Pin_6;
  EXTI->PR=EXTI_Line3;
}

void EXTI4_IRQHandler(void)
{
  GPIOC->BRR= GPIO_Pin_7;
  GPIOC->BRR= GPIO_Pin_6;
  EXTI->PR=EXTI_Line4;
}
以下是stm32f10x_it.h中添加的代码。
void EXTI3_IRQHandler(void);
void EXTI4_IRQHandler(void);

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /2 下一条