写在前面:
本文章为《STM32MP1系列教程之Cortex-M4开发篇》系列中的一篇,全系列总计11篇。笔者使用的开发平台为华清远见FS-MP1A开发板(STM32MP157开发板)。针对该开发平台,后续会陆续更多更多系列教程,包括Cortex-A7开发篇、Cortex-M4开发篇、Linux应用开发篇、Linux系统移植篇、Linux驱动开发篇、硬件设计篇、项目实战篇等。欢迎关注,更多stm32mp157开发教程及视频,可加技术交流Q群459754978,感谢关注。
FS-MP1A开发板详情介绍:https://item.taobao.com/item.htm?id=622457259672
第 1 章Cortex-M4 外部中断
1.1实验目的
熟悉STM32CubeIDE工具软件的使用。
掌握STM32CubeIDE软件的基本设计流程和设计步骤,能够使用工具进行设计、编程、仿真调试。
学习GPIO口的使用方法,掌握如何利用STM32MP157A芯片的I/O口作为外部中断输入。
1.2实验环境
FS-MP1A开发平台
ST-Link仿真器
STM32CubeIDE开发软件
PC机 XP、Window7/10 (32/64bit)
1.3实验原理
本实验的原理主要是,通过开发板上按键K2的外部中断方式读取键值即IO口状态,控制LED点亮、熄灭查看实验现象。
配置IO口外部中断的步骤:
使能 IO 口时钟。
初始化 IO 口模式,触发条件。
配置中断优先级( NVIC),并使能中断。
在中断服务函数中调用外部中断共用入口函数 HAL_GPIO_EXTI_IRQHandler。
编写外部中断回调函数。
通过以上几个步骤的设置,我们就可以正常使用外部中断了。
1.4实验步骤
打开STM32CubeIDE->File->New->STM32 Project
可以在左侧搜索框内输入芯片型号STM32MP157A进行搜索,选择对应芯片,点击Next
填写工程名,点击Finsh
点击Yes打开配置页面
搜索框内搜索LED对应GPIO引脚PZ5,左键点击设置为GPIO_output
搜索框内搜索K2对应GPIO引脚PA0,左键点击设置为GPIO_EXTI0
这里我们需要注意一下,和其他单片机不同,还需要继续设置“ Pin Reservation”给“Cortex-M4”,否则STM32CubeMX不会生生成GPIO初始化相关代码。具体操作:在刚才选择的引脚上,鼠标右键选择“ Pin Reservation”->“ Cortex-M4”。
在Code Generator处选择为每个外设生成单独的C和H文件,这样设置方便阅读代码
完成以上设置后,Ctrl+S保存,会提示是否需要生成代码,选择Yes即可自动生成代码。系统会自动生成System Clock代码
可以在左侧工程文件夹找到EXIT_CM4子工程,打开stm32mp1xx_it.c
添加GPIO中断回调函数,自定义延时函数
C++ Code
上述为新建工程配置过程,可参考16.3.2章节进行导入已有工程,工程存放路径【华清远见-FS-MP1A开发资料\02-程序源码\ARM体系结构与接口技术\Cortex-M4\3_EXTI】
配置完成或导入工程后进行程序下载,具体步骤参考16.3.3节进行开发板连接,程序编译、下载
1.5实验现象
按下K2键,可看到LED灯状态发生改变