摘要
本章讲解STM32 GPIO的输入与输出,以使用一个按键控制一个LED灯的亮与灭。
创建工程
打开STM32CubeMX,新建工程,选择单片机型号,这里以STM32F411CEU6为例。
新建工程可参考 STM32CubeMX系列教程0:创建工程
如果需要安装环境,可参考《STM32开发环境安装》
配置外设与IO
配置RCC与Debug
进入System Core-SYS设置,选择Debug为Serial wire。其他参数默认
进入System Core-RCC设置,分别配置HSE为Crystal/Ceramic Resonator(晶体/陶瓷谐振器)。其他参数默认
选择GPIO引脚与功能
在右侧的单片机上选择连接有LED灯和按键的IO引脚,比如我的单片机系统的PA0连接了LED灯,PC13连接了一个按键。
配置输出引脚。
在连接了LED灯的引脚上单击左键,选择Output功能。
在PA0上右键,选择Enter User Label,键入别名,输入LED。
配置输入引脚,在连接了按键的引脚上单击左键,选择Input功能。然后同样在PC13上右键,键入别名KEY。
配置GPIO
进入System Core-GPIO设置,上方选择GPIO引脚设置。
配置输出引脚PA0.。选中上方的PA0。
1. 引脚上电时的默认状态。(高电平/低电平) 因我的LED灯的阴极连接的单片机引脚,所以选择高电平,表示默认熄灭。
2. 引脚模式。(推挽输出/开漏输出) 这里选择推挽输出。
3. 开启引脚外部上拉或下拉。(浮空/上拉/下拉) 这里选择上拉。
4. 引脚输出速度。(低/中/高/很高) 默认即可。
5. 引脚别名。 这里之前选择GPIO时已经配置过就不用在配置。
配置输入引脚PC13。.选中PC13.。
1. 引脚模式。 这里默认为输入模式,不可更改。
2. 开启引脚外部上拉或下拉。(浮空/上拉/下拉) 根据电路设计选择,一般使用上拉。
3. 用户别名设置。
时钟配置
进入时钟配置界面。根据单片机系统中采用的晶振频率设置HSE,我的单片机系统采用的8M晶振。这里必须使能System Core-RCC中的HSE才可以设置。刚才我们已经配置过了。
配置系统主频,时钟源选择HSE,系统主频选择PLLCLK,再在HCLK框中输入系统推荐的主频,点击回车,软件即可自动配置各个分频器的值。
工程输出设置
点击上方的 Project Manager进入配置界面。在project设置中,分别设置好工程名称,工程路径,与开发环境,比如,如果使用的是keil环境,则选择MDK_ARM。
左侧选择Code Generator设置,选择仅复制需要的库文件,勾选外设初始化生成独立的.c/.h文件。这样生成的工程文件比较小并且后期容易修改。
点击右上角的GENERATE CODE生成工程。
编写用户代码
插入用户代码
打开生成的工程,打开main.c文件,找到main(void)入口函数,找到while语句,加入判断按键按下,改变led灯的状态的语句。
用户代码要加在USER CODE BEGIN N和USER CODE END N之间,否则下次重新生成代码后,会被删除
/* USER CODE BEGIN WHILE */
while (1)
{
if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin) == 0) //判断按键KEY是否被按下
{
HAL_Delay(10); //延时10ms消除按键抖动if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin) == 0) //再次判断按键KEY是否依然被按下
{
HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin); //对LED引脚进行取反操作while(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin) == 0); //等待按键抬起
}
}/* USER CODE END WHILE */
编译
点击左上角的编译图标,稍等一会儿,可以看到,下方的Build Output窗口提示编译完成,输出程序占用的空间,没有警告与错误。
下载代码进入单片机
STM32单片机程序下载方法有多种,有需要请跳转
STM32程序下载0:STM32CubeProgrammer安装
STM32程序下载1:通过keil-ST-Link方式下载
STM32程序下载2:通过STM32CubePro-ST-Link下载
STM32程序下载3:通过STM32CubePro-UART下载
STM32程序下载4:通过STM32CubePro-USB下载
选择你所需要的下载方法。