注:凡是有 FT 标志的,都是兼容 5V 电平的 IO 口,可以直接接 5V 的外设(注意:如果引脚设置的是模拟输入模式,则不能接 5V!,凡是不带 FT 标志的,不可与无5V链接,可能烧坏 MCU。
根据数据手册中列出的每个 I/O 端口的特性,可通过软件将通用 I/O (GPIO) 端口的各个端口 位分别配置为多种模式:
● 输入浮空
● 输入上拉
● 输入下拉
● 模拟功能 用于ADC输入引脚或者DAC的输出引脚
● 具有上拉或下拉功能的开漏输出
● 具有上拉或下拉功能的推挽输出
● 具有上拉或下拉功能的复用功能推挽
● 具有上拉或下拉功能的复用功能开漏
P-MOS |
N-MOS |
输出 |
打开 |
关闭 |
高电平 |
关闭 |
打开 |
低电平 |
关闭 |
关闭 |
浮空/高阻态 |
打开 |
打开 |
烧毁 |
推挽输出
MOS管保持一下两种状态
P-MOS |
N-MOS |
输出 |
打开 |
关闭 |
高电平 |
关闭 |
打开 |
低电平 |
开漏输出
永远保持P-MOS关闭状态
P-MOS |
N-MOS |
输出 |
关闭 |
打开 |
低电平 |
关闭 |
关闭 |
浮空/高阻态 |
作用1
改变高电平的电压,使用外部上拉电阻。
例子:单片机电压为3.3V,芯片使能端电压位5V。使用5V上拉电阻,当N-MOS关闭,芯片上拉为5V,当N-MOS打开,芯片使能端为低电平。
作用2
支持线与模式
多个GPIO同时控制输出端
HAL库驱动
void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init) |
初始化函数 CUBEMX生成 |
void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin) |
恢复为复位后的状态 |
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) |
读 |
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) |
写 |
void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) |
翻转 |
HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) |
锁定配置 |
特殊的GPIO控制
__HAL_RCC_AFIO_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE(); //
__HAL_RCC_GPIOF_CLK_ENABLE(); //
/* JTAG-DP Disabled and SW-DP Disabled */
__HAL_AFIO_REMAP_SWJ_DISABLE(); //完全禁用SWD及JTAG
__HAL_AFIO_REMAP_SWJ_NOJTAG(); //禁用JTAG
常用
__HAL_RCC_AFIO_CLK_ENABLE();
__HAL_AFIO_REMAP_SWJ_NOJTAG();
注:非不要设保留这些接口
禁用掉后可能会出现 “RAM check failed at :”或者“NO M-Cortex”.
解决办法
禁用掉JTAG 后可以使用SWD 进行下载程序
采用BOOT0 模式进行烧写程序 修改配置