[STM32F3] STM32公共中断端口如何配置

[复制链接]
1025|18
 楼主| 一点点0321 发表于 2022-11-16 22:18 | 显示全部楼层 |阅读模式
今天我在配置STM32F103的时候要用到PA5---PA7作为中断,要配置他们的中断函数,但是所有配置都是正常的,自己查不出什么问题,具体代码如下:
  1. void KEY_Init(void) //IO初始化
  2. {
  3.      GPIO_InitTypeDef GPIO_InitStructure;
  4.      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能PORTA,PORTE时钟
  5.     GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;//KEY0-KEY1
  6.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
  7.     GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  8.      GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA 5.6.7
  9. }
  10. void EXITTI_Init(void)
  11. {
  12. EXTI_InitTypeDef EXTI_InitStructure;    //定义一个EXTI结构体变量
  13. NVIC_InitTypeDef NVIC_InitStructure;
  14. RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);    //使能IO复用功能,使用中断功能重要!!!
  15.     KEY_Init();
  16. /* 引脚选择 */
  17. GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource5|GPIO_PinSource6|GPIO_PinSource7);//配置端口C的13引脚为中断源
  18. /* 设置外部中断结构体的成员*/
  19. EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;    //中断模式为中断模式
  20. EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;    //下降沿触发
  21. EXTI_InitStructure.EXTI_Line = EXTI_Line5 | EXTI_Line6|EXTI_Line7;
  22. EXTI_InitStructure.EXTI_LineCmd = ENABLE;    //使能中断线
  23. EXTI_Init(&EXTI_InitStructure);    //根据参数初始化中断寄存器
  24. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);    //设置中断优先级分组2
  25. NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;    //设定中断源为PC13
  26. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;    //中断占优先级为2
  27. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;    //副优先级为0
  28. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    //使能中断
  29. NVIC_Init(&NVIC_InitStructure);    //根据参数初始化中断寄存器
  30. }
  31. void EXTI19_5_IRQHandler(void)
  32. {
  33. if(EXTI_GetITStatus(EXTI_Line5) != RESET)
  34.   {
  35.         delay_ms(10);//消抖
  36.     if(KEY0==0)
  37.     {                 
  38.         printf("555");
  39.         LED1=!LED1;   
  40.     }
  41.      /* Clear the Key Button EXTI line pending bit */
  42.     EXTI_ClearITPendingBit(EXTI_Line5);
  43.   }
  44.   else if(EXTI_GetITStatus(EXTI_Line6 )!= RESET)
  45.   {
  46.     delay_ms(10);//消抖
  47.         printf("666");
  48.     if(KEY1==0)         
  49.     {                 
  50.         LED0=!LED0;
  51.     /* Clear the Key Button EXTI line pending bit */
  52.     EXTI_ClearITPendingBit(EXTI_Line6);
  53.   }
  54.   else if(EXTI_GetITStatus(EXTI_Line7 )!= RESET)
  55.   {
  56.         printf("777");
  57.     EXTI_ClearITPendingBit(EXTI_Line7);
  58. }
  59. }




 楼主| 一点点0321 发表于 2022-11-16 22:19 | 显示全部楼层
GPIO也初始化了,中断也初始化了,中断服务函数也写了,它就是不工作,实在是想不到哪里出问题了,求帮
怎么总是重复啊 发表于 2022-11-16 22:50 | 显示全部楼层
这里代码多了 510326374f1d154d6f.png
201296374f1c711322.png
 楼主| 一点点0321 发表于 2022-11-16 23:25 | 显示全部楼层
非常感谢,原来是多了个1呀,马虎了,检查几遍也没发现,谢谢!
kepe 发表于 2024-7-31 01:21 | 显示全部楼层
你使用GPIO_EXTILineConfig配置中断引脚时,只需要针对每个引脚单独调用,而不是一起调用。
AdaMaYun 发表于 2024-7-31 16:04 | 显示全部楼层
其实还是非常不错的,加油多练习
铁血丹心LLLL 发表于 2024-8-28 00:54 | 显示全部楼层
根据具体的应用需求配置外部中断的触发条件
Bblythe 发表于 2024-11-16 07:23 | 显示全部楼层

因此以更高的速度使用重型铣削钻头。
周半梅 发表于 2024-11-16 09:19 | 显示全部楼层

共模电感有时候又叫共模扼流圈
Pulitzer 发表于 2024-11-16 10:22 | 显示全部楼层

电镀半孔可用于标准和高级PCB设计。
童雨竹 发表于 2024-11-16 12:18 | 显示全部楼层

共模电感对交流电流起着阻碍的作用
Wordsworth 发表于 2024-11-16 13:21 | 显示全部楼层

因此,可以精确铣削电镀半孔并提高工艺可靠性。
Clyde011 发表于 2024-11-16 14:24 | 显示全部楼层

确保当开关管导通,
公羊子丹 发表于 2024-11-16 15:17 | 显示全部楼层

高频变压器磁芯利用率高(与单端电路相比)、电源电压利用率高(与后面要叙述的半桥电路相比)、输出功率大、两管基极均为低电平,驱动电路简单。
万图 发表于 2024-11-16 16:20 | 显示全部楼层

静态测试是通过使用直流电压表和负载电流计来分别测试电源的输出电压和输出电流
Uriah 发表于 2024-11-16 17:23 | 显示全部楼层

主要起到支承作用,板不会散掉。
帛灿灿 发表于 2024-11-16 19:19 | 显示全部楼层

为了抑制共模干扰
您需要登录后才可以回帖 登录 | 注册

本版积分规则

68

主题

481

帖子

2

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