STM32 学习笔记 — 之 GPIO 端口篇 最近刚开始学习 STM32,所以从最基本的 GPIO 开始学起;首先看看 STM32 的 datasheet 上对GPIO 口的简单介绍:每个 GPI/O 端口有两个 32 位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个 32 位数据寄存器(GPIOx_IDR,GPIOx_ODR),一个 32 位置位/复位寄存器(GPIOx_BSRR),一个 16 位复位寄存器(GPIOx_BRR)和一个 32 位锁定寄存器(GPIOx_LCKR)
GPIO 端口的每个位可以由软件分别配置成多种模式
每个 I/O 端口位可以自由编程,然而 I/0 端口寄存器必须按 32 位字被访问(不允许半字或字节访问)
GPIOx_BSRR 和 GPIOx_BRR 寄存器允许对任何GPIO 寄存器的读/更改的独立访问;这样,在读和更改访问之间产生 IRQ 时不会发生危险
端口位配置 CNFx[1:0]=xxb,MODEx[1:0]=xxb再看 GPIO 功能很强大:1
通用 I/O(GPIO):最最基本的功能,可以驱动 LED、可以产生 PWM、可以驱动蜂鸣器等等;2
单独的位设置或位清除:方便软体作业,程序简单
端口配置好以后只需 GPIO_SetBits(GPIOx, GPIO_Pin_x)就可以实现对 GPIOx 的 pinx 位为高电平;3
外部中断/唤醒线:端口必须配置成输入模式时,所有端口都有外部中断能力;4
复用功能(AF):复用功能的端口兼有 IO 功能等
复位期间和刚复位后,复用功能未开启,I/O 端口被配置成浮空输入模式:(CNFx[1:0]=01b,MODEx[1:0]=00b)
软件重新映射 I/O 复用功能:为了使不同器件封装的外设 I/O 功能的数量达到最优,可以把一些复用功能重新映射到其他一些脚上