STM32F4的PB5口进不去中断

[复制链接]
 楼主| 墨如风0205 发表于 2013-9-16 11:02 | 显示全部楼层 |阅读模式
本帖最后由 墨如风0205 于 2013-9-16 20:32 编辑

  1. #include "..\include\hardware.h"
  2. #include "..\include\sw.h"
  3. #include "stm32f4xx.h"
  4. #include "core_cm4.h"
  5. //---------------- Function Prototype -------------------//
  6. static int initialize(void);

  7. //---------------- Variable -----------------------------//
  8. SW_T sw={
  9.         .initialize = initialize

  10. };

  11. //-----------------Function------------------------------//
  12. /*
  13. * Name                                        : initialize
  14. * Description        : ---
  15. * Author                                : .
  16. *
  17. * History
  18. * ----------------------
  19. * Rev                                        : 0.00
  20. * Date                                        : 07/17/2013
  21. *
  22. * create.
  23. * ----------------------
  24. */
  25. static int
  26. initialize(void)
  27. {
  28.         
  29.         RCC->APB2ENR |= (1<<14);                        //使能syscfg
  30.         
  31.         GPIOB->MODER &= ~((1<<11)|(1<<10));                //PB5为输入模式
  32.         GPIOB->PUPDR |= (1<<10);                        //PB5为上拉
  33.         
  34.         EXTI->IMR |= (1<<5);                                //开放来自线5的中断请求
  35. //        EXTI->EMR |= (1<<5);                                //开放来自线5的事件请求
  36. //         EXTI->RTSR &= ~(1<<5);                                //禁止输入线5上的上升沿触发
  37.          EXTI->FTSR |= (1<<5);                                //允许输入线5上的下降沿触发
  38.         
  39.         SYSCFG->EXTICR[2] |= SYSCFG_EXTICR2_EXTI5_PB;
  40.         
  41.         NVIC->IP[23] = 0Xa;                                //中断优先级为a
  42.         NVIC->ISER[0] |= (1 << 23);                        //允许EXTI线[9:5]中断
  43.         
  44.         SYSCFG->CMPCR = (1<<0);                                //使用IO补偿单元
  45.                
  46.         return 0;
  47. }
  48. /*
  49. * Name                                        : delay_ms
  50. * Description        : ---
  51. * Author                                : .
  52. *
  53. * History
  54. * ----------------------
  55. * Rev                                        : 0.00
  56. * Date                                        : 07/17/2013
  57. *
  58. * create.
  59. * ----------------------
  60. */
  61. void
  62. EXTI9_5_IRQHandler(void)
  63. {
  64.         
  65.         if(EXTI->PR&(1<<5)!=0){
  66.                 LED_ON;
  67.                         }
  68.                
  69.                 EXTI->PR = (1<<5);                //该位置1,清除中断标志位(清除 中断挂起)
  70.                
  71.         }
 楼主| 墨如风0205 发表于 2013-9-16 11:04 | 显示全部楼层
然后在nvic里,设置的
SCB->VTOR= ((unsigned long)0x08000000); //设置中断的基地址
SCB->AIRCR = 0x05AF0000 | 0x400;          //中断优先级分组
airwill 发表于 2013-9-17 09:07 | 显示全部楼层
本帖最后由 airwill 于 2013-9-17 09:09 编辑

EXTICR 也应该设置一下
用寄存器操作, 这里要注意一下.
SYSCFG->EXTICR[1] 是 EXTICR2
 楼主| 墨如风0205 发表于 2013-9-22 12:02 | 显示全部楼层
airwill 发表于 2013-9-17 09:07
EXTICR 也应该设置一下
用寄存器操作, 这里要注意一下.
SYSCFG->EXTICR[1] 是 EXTICR2  ...

恩,是的,我已经找到问题了,不仅这个地方,问题是我调试过程中,断点设置不对,谢谢您
outstanding 发表于 2013-9-22 13:04 | 显示全部楼层
 楼主| 墨如风0205 发表于 2013-9-25 16:40 | 显示全部楼层
outstanding 发表于 2013-9-22 13:04

chuangpu 发表于 2013-9-25 19:51 | 显示全部楼层
问题解决了就好   楼主   
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:不畏将来,不念过往。如此,安好!

4

主题

111

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:不畏将来,不念过往。如此,安好!

4

主题

111

帖子

0

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