(3)STM32使用HAL库操作外部中断——实战操作
有了上一篇的基础入门知识,使用Cube创建一个简单的外部中断就容易多了。
一、Cube配置
需求:使用PD10作为外部中断(下降沿触发)控制LED(PD12-PD14)
1.选型
STM32-F4-Discovery使用的是F407VGT6.
2.使能时钟
3.设置GPIO
PD12-PD15对应4个LED,设置为输出
使用PD10作为外部中断,于是PD10设置为GPIO_EXIT10
4.根据F4-Discovery硬件配置时钟
外部8MHz晶振,系统频率设置168(最大只能设置168,这个可随便设置)
5.配置
5.1首先配置GPIO的PD10(外部中断输入)
5.2配置GPIO的PD12-PD15
5.3配置NVIC
由于只有这一个中断,所有优先级都设置为0
6.最后生成工程就行了。
二、Keil程序
需求:外部中断触发,改变四个LED的状态。
再说一遍中断执行顺序
(1)PD10的中断服务函数
(2)中断服务函数原型
(3)中断处理函数
(4)回调函数(用户在main.c中重写)
while(1)就不要动了,目前用不到。
编译,下载,齐活。
最后再补充一点,中断初始化的问题,在mian.c的main()函数中只有下面几个初始化函数:
那么中断的初始化去哪了呢?
其实,中断初始化的代码被放置到GPIO初始化函数MX_GPIO_Init(void)里了:
分类:
STM32
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现