记录一下自己一周的学习

这周进行了对stm32的学习,对GPIO有了一些了解。

GPIO简介:

GPIO(General Purpose Input Output)是通用输入输出口的简称,主要用于数字量的输入和输出,是微控制器中使用频率最高的外设。 其可配置为8种输入输出模式。

引脚电平:0V~3.3V,部分引脚可容忍5V

输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等

输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等

GPIO基本结构:

        在STM32中所有的GPIO都是挂在APB2外设总线上,GPIO被分为了很多组(GPIOA,GPIOB...),每个GPIO都可以看作一个单独的子模块(端口),每个子模块(端口)都接有属于自己的16个引脚(如:PA0-PA15)。GPIO中包含了寄存器和驱动器,寄存器就是一段特殊的存储器,内核可以通过APB2总线对寄存器进行读写,这样就能实现输出电平和读取电平的功能,并且GPIO也是通过寄存器来控制引脚的工作模式,输出寄存器输出1就会引脚输出高电平,输出0则引脚输出低电平。驱动器是用来负责增大驱动能力的。

GPIO的电路结构:

        整个电路结构由三部分组成:端口寄存器组,输入/输出驱动器,引脚电路(从左往右的三个部分)。

GPIO的工作模式:

如图可以了解GPIO的工作模式

浮空输入:引脚电平状态不确定,完全由外部输入决定

上拉输入:引脚内部接上拉电阻,没有外部信号输入时,默认高电平

下拉输入:引脚内部接下拉电阻,没有外部信号输入时,默认低电平

推挽输出:P-MOS和N-MOS管轮流工作,可以输出高电平或低电平(我常用的)

开漏输出:P-MOS一直处于截止状态,只有N-MOS管工作,只能输出低电平

基于HAL库的一些GPIO函数介绍:

引脚初始化函数:HAL_GPIO_Init

该函数用于初始化GPIO并且是由CubeMX软件自动生成,至于如何初始化就看你CubeMX中如何设置的

引脚读取函数:HAL_GPIO_Readpin

该函数用于读取指定引脚的电平状态,需要用户自己调用。输入的两个参数,第一个是选择端口号即GPIOA/GPIOB/GPIOC,第二个是选择引脚号即PIN1/PIN2/PIN15

如:HAL_GPIO_ReadPin(Light_GPIO_Port,Light_Pin);

引脚写入函数:HAL_GPIO_WritePin

该函数用于设置引脚输出高电平或低电平,需要用户自己调用。输入的三个参数,第一个是选择端口号即GPIOA/B/C,第二个是选择引脚号即PIN1/2/15,第三个是输出高电平还是低电平。GPIO_PIN_RESET表示输出低电平,GPIO_PIN_SET表示输出高电平

如:HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET);

引脚翻转函数:HAL_GPIO_TogglePin

如:HAL_GPIO_TogglePin(Light_GPIO_Port,Light_Pin);

该函数用于翻转引脚的电平状态,即原来是高电平,现在翻转为低电平,需要用户自己调用。输入的两个参数,第一个是选择端口号即GPIOA/GPIOB/GPIOC,第二个是选择引脚号即PIN1/PIN2/PIN15。

总结:

         本次学习了GPIO,知道GPIO是什么,有什么功能,结构是怎么样的以及对GPIO的一些函数有了一定的了解。虽然了解这些知识都十分浅薄、基础,但对我而言这已经是一个进步了。原本在大一的时候,就学过一段时间STM32,但当时对模电,数电没有了解,什么都看不懂,越听越困导致学习的时候十分困难。现在大二了,学习数电,模电之后勉强能知道讲了什么,是什么个原理,就又燃起学习STM32的兴趣,希望以后能一直坚持吧。

参考文献:

江协科技的STM32入门教程-2023版

嵌入式系统设计——基于STM32CubeMX与HAL库

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值