打印
[应用相关]

STM32使用HAL库操作外部中断——实战操作(转载)

[复制链接]
1265|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
观海|  楼主 | 2018-11-13 12:48 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
一、Cube配置
需求:使用PD10作为外部中断(下降沿触发)控制LED(PD12-PD14)
1.选型
STM32-F4-Discovery使用的是F407VGT6.
2.使能时钟

沙发
观海|  楼主 | 2018-11-13 12:49 | 只看该作者
3.设置GPIO
PD12-PD15对应4个LED,设置为输出
使用PD10作为外部中断,于是PD10设置为GPIO_EXIT10

使用特权

评论回复
板凳
观海|  楼主 | 2018-11-13 12:49 | 只看该作者
4.根据F4-Discovery硬件配置时钟
外部8MHz晶振,系统频率设置168(最大只能设置168,这个可随便设置)

使用特权

评论回复
地板
观海|  楼主 | 2018-11-13 12:49 | 只看该作者
5.配置
5.1首先配置GPIO的PD10(外部中断输入)
5.2配置GPIO的PD12-PD15
5.3配置NVIC
由于只有这一个中断,所有优先级都设置为0

6.最后生成工程就行了。

使用特权

评论回复
5
观海|  楼主 | 2018-11-13 12:50 | 只看该作者
二、Keil程序
需求:外部中断触发,改变四个LED的状态。
再说一遍中断执行顺序
(1)PD10的中断服务函数
(2)中断服务函数原型

使用特权

评论回复
6
观海|  楼主 | 2018-11-13 12:50 | 只看该作者
(3)中断处理函数
(4)回调函数(用户在main.c中重写)
while(1)就不要动了,目前用不到。

使用特权

评论回复
7
观海|  楼主 | 2018-11-13 12:51 | 只看该作者
编译,下载,齐活。

使用特权

评论回复
8
观海|  楼主 | 2018-11-13 12:51 | 只看该作者
最后再补充一点,中断初始化的问题,在mian.c的main()函数中只有下面几个初始化函数:

使用特权

评论回复
9
观海|  楼主 | 2018-11-13 12:52 | 只看该作者
那么中断的初始化去哪了呢?
其实,中断初始化的代码被放置到GPIO初始化函数MX_GPIO_Init(void)里了:

使用特权

评论回复
10
xiaoqizi| | 2018-11-15 12:55 | 只看该作者
关于中断优先级这个 就是用的默认的吗

使用特权

评论回复
11
wakayi| | 2018-11-15 13:32 | 只看该作者
非常感谢楼主分享呀

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

3882

帖子

1

粉丝