标题:
STM32F407初学之中断:外部中断点亮LED灯
[打印本页]
作者:
csy-2015-06
时间:
2018-9-23 17:55
标题:
STM32F407初学之中断:外部中断点亮LED灯
选择中断源(EXTI0~EXTI22选择其一)
PA0产生上升沿:EXTI0
PE2~4产生下降沿:EXTI2~4
初始化:
1.初始化IO口:之前的按键初始化即可
2.模块时钟使能RCC->APB2ENR
IO口映射到相应的外部中断配置器
SYSCFG external interrupt configuration register 1
GPIO口中断映射到芯片内部的IO口配置寄存器->SYSCFG寄存器
例如:配置PE2
RCC->APB2ENR |=0x01<<14;
//选择中断源(EXTI2映射到PE)
SYSCFG->EXTICR[0] &=~(0x0f<<8); //EXTICR[0]~EXTICR[3]分别对应寄存器EXTICR1~4
SYSCFG->EXTICR[0] |=(0x04<<8);
映射概念:首先外部中断的io口都有对应的外部中断寄存器,以IO口数字序列编号
PA0在EXTI0 PB0在EXTI0
其次每个EXTI都对应一个四位的外部中断寄存器。配置见标号8.2.4 EXTI0在EXTICR1的第0~3位
EXTI3在EXTICR1的12~16位、、EXTI4在EXTICR1的0~3位 [中文参考手册8.2.1]
(小结:先找引脚再找组)
映射PE2
EXTI2->EXTICR1的8~11位。
SYSCFG->EXTICR[0] |=(0x04<<8);
//注意!!EXTICR[0]~EXTICR[3]对应EXTICR1~4,寄存器的写法跟寄存器编号不一致
3.选择边沿检测方式(上升沿检测,下降沿检测,双边沿检测)
EXTI->FTSR |=0x01<<2;//下降沿检测
FTSR:Falling trigger selection register
EXTI->RTSR &=~(0x01<<2); //上升沿检测关闭
RTSR:Rising trigger selection register
4.屏蔽软中断
EXTI->SWIER =0;
Software interrupt event register
5.屏蔽事件
Event mask register
EXTI->EMR =0;
6.模块级中断使能(设置中断屏蔽寄存器)
Interrupt mask register
0:屏蔽来自 x 线的中断请求
1:开放来自 x 线的中断请求
EXTI->IMR |=0x01<<2;
7.系统级中断使能(设置NVIC)
NVIC_SetPriority(EXTI2_IRQn,NVIC_EncodePriority (7-2, 2,2));
8.编写中断服务函数(清标志:挂起请求寄存器)
EXTI->PR |=0x01<<2;//清标志
通过对中断状态寄存器写1可以清楚标志
STM32F407系列学习心得
简单串口初始化:
STM32F407初学之串口:
查询方式
收发字符串教程与源码
http://www.51hei.com/bbs/dpj-135607-1.html
(出处: 单片机论坛)
STM32F407初学之串口
:
中断收发
字
符串教程与源码
http://www.51hei.com/bbs/dpj-135708-1.html
(出处: 单片机论坛)
STM32F407初学之中断:外部中断点亮LED灯.zip
2018-9-23 17:54 上传
点击文件名下载附件
下载积分: 黑币 -5
1.49 MB, 下载次数: 18, 下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1