找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3734|回复: 0
打印 上一主题 下一主题
收起左侧

STM32F407初学之中断:外部中断点亮LED灯

[复制链接]
跳转到指定楼层
楼主
ID:237239 发表于 2018-9-23 17:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
选择中断源(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

1.49 MB, 下载次数: 18, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表