IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32CubeMX系列教程1:GPIO输入与输出 -> 正文阅读

[嵌入式]STM32CubeMX系列教程1:GPIO输入与输出

摘要

??本章讲解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下载

选择你所需要的下载方法。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-11 12:52:08  更:2021-11-11 12:53:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:57:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码