微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 野火stm32,我按照修改例程编写了一个两个中断法按键的程序,第二个按键不能立即生效

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

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

  1. #include "bsp_exti_key.h"

  2. /**
  3.   * @brief  ??????ì×?òá??D???????÷NVIC
  4.   * @param  ?T
  5.   * @retval ?T
  6.   */
  7. static void NVIC_Configuration(void)
  8. {
  9.   NVIC_InitTypeDef NVIC_InitStructure;
  10.   
  11.   /* Configure one bit for preemption priority ????ó??è??×é±e*/
  12.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  13.   
  14.   /* ?????D???′ */
  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 ?a???D???ú£?2¢éè???D??ó??è??
  29.   * @param  ?T
  30.   * @retval ?T
  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; //???μ???D??
  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; //???μ???D??
  71.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;
  72.   EXTI_Init(&EXTI_InitStructure);
  73. }

复制代码



哦,这是我修改了之后的,没用
我前面编写的是在一个函数里面
两个gpio和一个afio或起来
然后还是分开初始化
本质没有变化

问题我已经发现了
我来这论坛问的每一个问题都没人回答。

不懂帮顶!

这个问题我已经解决了。你遇到类似问题了吗?

看看

怎么解决啊,大神

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top