stm32之点亮LED
学习stm32单片机的时候,会有三种,标准库,寄存器,HAL库。这里我们统一使用HAL库,使用stm32cubemx来建工程。会方便很多简化我们编写代码的时间但其实不管是HAL库还是标准库都是操作寄存器的只是官方给我们封装好了。软件就不演示安装了 。欢迎各位指出我的错误,共同进步。
我们通过每个案例来介绍单片机的知识点,流水的单片机,铁打的LED灯。大部分来说不管是什么单片机都是以点亮LED灯为基础
一分析原理图
这里我们根据给的原理图,找到led的区域。
先看LED0 是和PB5引脚相连的 即PB5引脚控制着LED0的电平,上接3.3V电压,即默认是高电平,所以我们将PB5设置为低电平的时候,电路导通。
(这里我们说明一下,电路导通,是需要一个高电平和一个低电平导致电流可以正常流通的。这里根据原理图发现PB5这个引脚所在的电路,是外接的有3.3V的VCC,即板子一上电就会有高电平)
所以我们想让LED0亮,就将PB5引脚设置为低电平。LED1同理。
那我们怎么设置,能否设置引脚为低电平或高电平呢?
二GPIO
2.1 什么是GPIO?
概述:General Purpose Input Output,即通用输入输出端口,简称GPIO 作用:负责采集外部器件的信息或者控制外部器件工作,即输入输出。
是不是很迷糊,简单来就是控制引脚使其能够达到输入和输出电平的操作。
比如我们这里的LED,我们需要将PB5设置为低电平,那是输入还是输出呢?
注意:这里的输入和输出的操作对象即主体是单片机。所以我们需要单片机去给PB5引脚输出低电平。即设置为输出模式。
2.2GPIO的特点
1,不同型号,IO口数量可能不一样,可通过选型手册快速查询
2,快速翻转,每次翻转最快只需要两个时钟周期(F1最高速度可以到50Mhz)
3,每个IO口都可以做中断 (后面会说明什么是中断)
4,支持8种工作模式
2.3GPIO的八种模式分析
这里补充一下,当IO口设置为输出模式的时候,也是可以读取IO的电平状态的。
正常情况开漏和推挽的区别是:开漏输出无法输出高电平(必须加外部上拉电阻),推挽可以
这里我们总结一下GPIO的八种模式 又可以分为输出和输入
输入:1 浮空输入
2 上拉输入
3 下拉输入
4 模拟输入
输出:1 开漏输出
2 复用开漏
3 推挽
4 复用推挽
三stm32cubemx配置
我们说完了GPIO的基础知识我们来看怎么用cubemx来配置
这里我们新建工程
输入自己单片机的型号
点system core,然后点RCC配置时钟
选择外部时钟
将PB4,PE5 设置为输出
代码
void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};//初始化GPIO使用的结构体变量
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOE_CLK_ENABLE();//打开gpioe的时钟
__HAL_RCC_GPIOB_CLK_ENABLE();//打开gpiob的时钟
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, GPIO_PIN_RESET);//将PE5 设置为低电平
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);//将PB5 设置为低电平
/*Configure GPIO pin : PE5 */
GPIO_InitStruct.Pin = GPIO_PIN_5;//选择引脚号
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;//推挽输出模式
GPIO_InitStruct.Pull = GPIO_NOPULL;//无上下拉,输出一般是无上下拉
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;//传输速度
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);//初始化GPIO
/*Configure GPIO pin : PB5 */
GPIO_InitStruct.Pin = GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
更多【stm32-stm32之点亮LED】相关视频教程:www.yxfzedu.com