HAL库深入了解--STM32与GPIO

STM32简介

首先来介绍一下STM32,从广义的技术架构上讲,STM32 是 SoC;但在行业习惯和产品分类中,我们通常称它为 MCU(微控制器)。

1.为什么说 STM32 架构上是 SoC?

SoC (System on Chip) 的字面意思是"片上系统"。它的定义是:在一个芯片上集成了支撑系统运行的所有核心组件。

一颗STM32芯片里有:

  • 运算核心(CPU): ARM Cortex-M 内核。
  • 存储(Memory): 内置的 Flash(存程序)和 SRAM(存变量)。
  • 时钟系统(Clock): 内部 RC 振荡器、锁相环(PLL)。
  • 外设控制器(Peripherals): GPIO、UART、SPI、I2C、ADC、DMA、看门狗等。
  • 电源管理(PMU): 内部稳压器(LDO)。

一个芯片就是一个完整系统,所以实际上就是一个SOC。

2.为什么行业里习惯管它叫 MCU?

既然它符合 SoC 的定义,为什么全世界都叫它 MCU(Microcontroller Unit)呢?这主要是为了将它与以手机芯片(如高通骁龙、苹果 A 系列)为代表的高性能 SoC 区分开来。

特性 STM32 (典型 MCU) 高性能 SoC (如骁龙、瑞芯微)
内存架构 内置 SRAM 和 Flash 外接 DDR 内存和 eMMC/UFS 闪存
操作系统 裸机或 RTOS (FreeRTOS/RT-Thread) 复杂 OS (Linux/Android/Windows)
功耗 极低(μA 级别),注重实时性 较高(W 级别),注重吞吐量
核心任务 控制硬件、传感器采集、实时响应 大规模计算、图形处理、多媒体
  • MCU 侧重于"控": 控制外设、低延迟响应。
  • 高性能 SoC 侧重于"算": 跑大型软件、处理复杂数据。

3.一个模糊地带:STM32MP1 系列

事实上STM家族里有一个特例,意法半导体(ST)推出了 STM32MP1 系列

这一款芯片:

  • 它拥有 Cortex-A7 内核(能跑 Linux)。
  • 它通常需要外挂 DDR3/LPDDR3
  • 它集成了 GPU。

这时候,如果你管 STM32MP1 叫 MCU,就不太合适了,行业内会直接称它为 MPU(Micro Processor Unit SoC

GPIO使用

所以要使用GPIO的话就需要四个步骤:

1.使能GPIO

2.选择pin的功能

3.选择方向(输入/输出)

4.设置输出值/组曲引脚值

这里使用HAL库搭配STM32CubeMX来使用

如果我们在这里配置了PC13引脚,来看一下生成的代码会替我们做什么

1、首先在stm32f1xx_hal_conf.h里面,开启了宏定义使用GPIO模块

2、增加了gpio.c的源码

3、在main.c里面初始化了GPIO

4、

要想使用引脚来控制LED,需要:

①·使能GPIO 模块←

②·把引脚配置为GPIO功能:把引脚连接到芯片内部的GPIO模块,而不是连接到其他模块

③·配置GPIO模块,把引脚配置为输出引脚

④·配置引脚,让它输出高电平或低电平

这里STM32CubeMX帮我们完成了前三步。

我们只需要写应用代码即可。

HAL库的本质是操作寄存器

使用HAL库里面的函数看他的内部也是通过寄存器的方式执行的。

其实我可以直接写入寄存器的地址去改变对应的值,一版不用这种方法。

ST是提供了寄存器的可以方便的修改

先找到寄存器对应的地址然后写入0或1即可。

相关推荐
杰杰桀桀桀12 小时前
基于stm32ARM库函数的IIR二阶巴特沃斯低通滤波器--附完整代码
arm开发·stm32·嵌入式硬件·数字滤波器·巴特沃斯低通滤波
危桥带雨13 小时前
Freertos——使用队列集优化数据传输
stm32·单片机·嵌入式硬件·freertos
来生硬件工程师13 小时前
【程序库】 MutiButton 按键库
c语言·笔记·stm32·单片机·mcu·嵌入式实时数据库
sweetone13 小时前
好帅(HOST) HS-AF01T电烤炉(空气炸锅)的小修及物联网设备的安全思考
经验分享·单片机·嵌入式硬件·物联网
多看多敲多思考13 小时前
华润微CS32ME10 MCU使用教程(1)---CS32ME10之GPIO使用
c语言·stm32·单片机·嵌入式硬件·mcu
小谦325113 小时前
第十一篇、CubeMX | 可见光谱颜色传感器 AS7341
单片机·嵌入式硬件
黑白园14 小时前
STM32 printf函数重定向到USATR1输出打印
stm32·单片机·嵌入式硬件
踏着七彩祥云的小丑14 小时前
嵌入式——认识电子元器件——温度保险丝系列
单片机·嵌入式硬件
12.=0.14 小时前
【stm32_6.1】串行异步接口USART,串口的原理和应用
c语言·stm32·单片机·嵌入式硬件
雅斯驰15 小时前
4Gbit密度+16位总线宽度:H5AN4G6NBJR-UHC在DDR4成熟期的产品定位
运维·单片机·嵌入式硬件·物联网·自动化