一、STM32相关介绍
首先你得先了解STM32相关的内容,其中包括七部分:
1 芯片命名规则
2 Cortex-M内核和STM32芯片内部结构
3 时钟系统配置
4 STM32内部资源地址(存储空间)
5 BOOT映射和代码启动运行顺序
6 HAL库、LL库、标准库编程和寄存器编程
7 程序工程代码结构和编译过程
HAL库
ST官方推崇的新编程库;HAL是Hardware Abstraction Layer的缩写,中文名:硬件抽象层。HAL库是ST为STM32最新推出的抽象层嵌入式软件,可以更好的确保跨STM32产品的最大可移植性。HAL使用了比较大的Flash和SRAM。
LL库(Low Layer)
是ST最近新增的库,与HAL捆绑发布,文档也是和HAL文档在一起的LL库更接近硬件层,对需要复杂上层协议栈的外设不适用,直接操作寄存器。其支持所有外设。使用方法:独立使用,该库完全独立实现,可以完全抛开HAL库,只用LL库编程完成。在使STM32CubeMX生成项目时,直接选LL库即可。如果使用了复杂的外设,例如USB,则会调用HAL库混合使用,和HAL库结合使用。编译后LL库只有HAL库的33%体积。
标准固件库
旧版本编程库;HAL库是ST未来主推的库,从前年开始ST新出的芯片已经没有STD库了。
二、STM32GPIO外设
GPIO:General Purpose Input Output通用用途输入输出
它的核心功能:输入、输出和高级外设的复用功能
每个GPIO包括10个寄存器来配置GPIO的具体功能(每个引脚功能都是完全可以独立配置,互不影响):
- GPIOx_MODER:GPIO 端口模式寄存器
- GPIOx_OTYPER :GPIO 端口输出类型寄存器
- GPIOx_OSPEEDR :GPIO 端口输出速度寄存器
- GPIOx_PUPDR :GPIO 端口上拉/下拉寄存器
- GPIOx_IDR :GPIO 端口输入数据
- GPIOx_ODR :GPIO 端口输出数据寄存器
- GPIOx_BSRR :GPIO 端口置位/复位寄存器
- GPIOx_LCKR :GPIO 端口配置锁定寄存器
- GPIOx_AFRL :GPIO 复用功能低位寄存器
- GPIOx_AFRH :GPIO 复用功能高位寄存器
- GPIOx_BRR:GPIO位复位寄存器
为实现不同工作条件要求,GPIO有8种工作模式:
- 输入浮空
- 输入上拉
- 输入下拉
- 模拟功能
- 开漏输出
- 推挽输出
- 复用开漏输出
- 复用推挽输出