stm32f407如何配置外部中断

这几天又重新学了stm32f4,遇到了一个外部配置的实验,实验内容仅作简单的外部中断,读者只要搞懂其中的原理,稍微复杂的中断就能很好解决。
实验内容:按键key0按下,触发外部中断,中断函数点亮led0
现将实验笔记做一个分享。
外部中断需要如下几步(此处我们以正点原子探索者开发板为例)
1)初始化led灯,按键的gpio
2)配置nvic
3)将按键 gpio 连接到 exti 源输入
4)配置按键 exti 中断/事件线
5) 编写 exti 中断服务函数
正点原子key0对应io口为pe4,led0对应io口为pf9.
1)初始化led灯,按键的gpio
rcc_ahb1periphclockcmd(rcc_ahb1periph_gpiof|rcc_ahb1periph_gpioe, enable);
//同时初始化两个io口
rcc_apb2periphclockcmd(rcc_apb2periph_syscfg, enable);
gpio_inittypedef gpio_initstructure;
gpio_initstructure.gpio_mode=gpio_mode_out;
gpio_initstructure.gpio_otype=gpio_otype_pp;
gpio_initstructure.gpio_pin=gpio_pin_9;
gpio_initstructure.gpio_pupd=gpio_pupd_nopull;
gpio_initstructure.gpio_speed=gpio_speed_25mhz;
gpio_init(gpiof,&gpio_initstructure);
//led0配置:输出模式,上拉模式(此处不用上拉也行),推挽输出,25mhz
gpio_initstructure.gpio_mode=gpio_mode_in;
gpio_initstructure.gpio_pin=gpio_pin_4;
gpio_initstructure.gpio_pupd=gpio_pupd_up;
gpio_initstructure.gpio_speed=gpio_speed_25mhz;
gpio_init(gpioe, &gpio_initstructure);
///key0配置:输入模式,上拉模式,25mhz
2)配置nvic
nvic_inittypedef nvic_initstructure;
nvic_initstructure.nvic_irqchannel=exti4_irqn;//pe4选择中断线exti_irqn
nvic_initstructure.nvic_irqchannelpreemptionpriority=1;
nvic_initstructure.nvic_irqchannelsubpriority=1;
nvic_initstructure.nvic_irqchannelcmd=enable;
nvic_init( &nvic_initstructure);
3)将按键 gpio 连接到 exti 源输入
syscfg_extilineconfig(exti_portsourcegpioe,exti_pinsource4);
4)配置按键 exti 中断/事件线
rcc_apb2periphclockcmd(rcc_apb2periph_syscfg, enable);
//外部中断一定要配置时钟syscfg
exti_inittypedef exti_initstructure;
exti_initstructure.exti_line=exti_line4;
exti_initstructure.exti_mode=exti_mode_interrupt;
exti_initstructure.exti_trigger=exti_trigger_falling;
exti_initstructure.exti_linecmd=enable;
exti_init(& exti_initstructure);
//exti_line的参数在stm32f4xx_exti.h可以找到,不能直接写0x04,此处容易出错。
5) 编写 exti 中断服务函数
void exti4_irqhandler(void)
{
if(exti_getitstatus(exti_line4) != reset)
{
gpio_setbits(gpiof,gpio_pin_9);
}
exti_clearitpendingbit(exti_line4);
}
最后只需要在main函数里写
int main(void)
{
exit_key_config();
while(1)
{ }
};

寻找AI技术与产业互联网融合的“芯”动力
盘点AI芯片全新黑科技
OPPO成功实现了商用手机5G信令和数据链路的连接
遥遥领先 韩国5G普及率是中国的14倍
西门子pcs7是dcs系统吗
stm32f407如何配置外部中断
淬火裂纹产生的原因_防止淬火裂纹的措施
自举电路的放电过程
福特投资十亿美元在德国建设电动汽车厂
三种情况产生的感应电势分析
古巴服务器机房的介绍,它的优势有哪些
示波器探头的基本知识
温湿度传感器在温湿度电子标签中的应用
华为首批折叠屏手机将升级鸿蒙系统
区块链在哪一些领域已经开始有了探索了
DARPA与英特尔乔治亚理工学院合作防御机器学习算法对抗欺骗攻击
超六类网线和七类网线选购因素
三星显示与三星半导体合作加速OLEDoS技术突破
浪潮发布AI服务器NF5488A5,计算性能提升234%
乘“储”而上!新风光构建能源“路由器”