野火stm32,我按照修改例程编写了一个两个中断法按键的程序,第二个按键不能立即生效

2019-07-14 21:30发布

按照野火的例程改变
把一个加成两个,给时钟的时候用或连接,然后先后初始化
中断服务函数也写了
第一个按键没有问题,第二个按键按得时候,led不会马上反转,而会在第一个按键按下的时候才反转
就是状态是由第二个按键决定的,但是第一个按键按下才会表现出来
下面是中断按键的c文件
  1. #include "bsp_exti_key.h"

  2. /**
  3.   * @brief  ÅäÖÃǶÌ×ÏòÁ¿ÖжϿØÖÆÆ÷NVIC
  4.   * @param  ÎÞ
  5.   * @retval ÎÞ
  6.   */
  7. static void NVIC_Configuration(void)
  8. {
  9.   NVIC_InitTypeDef NVIC_InitStructure;
  10.   
  11.   /* Configure one bit for preemption priority Ñ¡ÔñÓÅÏȼ¶×é±ð*/
  12.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  13.   
  14.   /* ÅäÖÃÖжÏÔ´ */
  15.   NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn;
  16.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  17.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  18.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  19.   NVIC_Init(&NVIC_InitStructure);
  20.        
  21.         NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;
  22.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  23.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  24.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  25.   NVIC_Init(&NVIC_InitStructure);
  26. }

  27. /**
  28.   * @brief  ÅäÖà PA0 ΪÏßÖжϿڣ¬²¢ÉèÖÃÖжÏÓÅÏȼ¶
  29.   * @param  ÎÞ
  30.   * @retval ÎÞ
  31.   */
  32. void EXTI_PA0_Config(void)
  33. {
  34.         GPIO_InitTypeDef GPIO_InitStructure;
  35.         EXTI_InitTypeDef EXTI_InitStructure;

  36.         /* config the extiline clock and AFIO clock */
  37.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE);
  38.                                                                                                
  39.         /* config the NVIC */
  40.         NVIC_Configuration();

  41.         /* EXTI line gpio config*/       
  42.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;      
  43.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;         // ÉÏÀ­ÊäÈë
  44.   GPIO_Init(GPIOA, &GPIO_InitStructure);

  45.         /* EXTI line mode config */
  46.   GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
  47.   EXTI_InitStructure.EXTI_Line = EXTI_Line0;
  48.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  49.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //ϽµÑØÖжÏ
  50.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  51.   EXTI_Init(&EXTI_InitStructure);
  52. }

  53. void EXTI_PC13_Config(void)
  54. {
  55.         GPIO_InitTypeDef GPIO_InitStructure;
  56.         EXTI_InitTypeDef EXTI_InitStructure;

  57.         /* config the extiline clock and AFIO clock */
  58.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO,ENABLE);
  59.                                                                                                
  60.         /* config the NVIC */
  61.         NVIC_Configuration();

  62.         /* EXTI line gpio config*/               
  63.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;      
  64.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;         // ÉÏÀ­ÊäÈë
  65.   GPIO_Init(GPIOC, &GPIO_InitStructure);

  66.         /* EXTI line mode config */
  67.   GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource13);
  68.   EXTI_InitStructure.EXTI_Line = EXTI_Line13;
  69.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
  70.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //ϽµÑØÖжÏ
  71.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  72.   EXTI_Init(&EXTI_InitStructure);
  73. }
复制代码


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
jiangers
1楼-- · 2019-07-15 09:13
不懂帮顶!!!!!!!!!!!
望着你发槑
2楼-- · 2019-07-15 13:40
jiangers 发表于 2015-11-25 20:33
不懂帮顶!!!!!!!!!!!

这个问题我已经解决了。你遇到类似问题了吗?
wangweijie2016
3楼-- · 2019-07-15 17:52
看看
邪恶的小怪兽
4楼-- · 2019-07-15 19:44
怎么解决啊,大神

一周热门 更多>