注:凡是有 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 模式进行烧写程序 修改配置