【GPIO口简介】 STM32
输入浮空模式:无上拉下拉电阻
输入上拉模式:上拉电阻被接上
输入下拉模式:下拉电阻被接上
模拟模式:模拟量(电压)从①进入
开漏输出模式:由CUP来写入
①写入1时,N-MOS管截止。I/O的输出由外设的上拉或者下拉电阻决定。
②写入0时,N-MOS管打开。I/O的输出为0。
开漏复用输出模式:由外设来写入
写1或者0的情况与上面的 开漏输出模式 一样。
推挽输出模式:由CPU写入
①当写入1时,P-MOS管导通,N-MOS管截止,I/O口输出1。
②当写入0时,P-MOS管截止,N-MOS管导通,I/O口输出0。
推挽复用输出模式:由外设来写入
写1或者0的情况与上面的 推挽输出模式 一样。
===点亮LED(库函数版本)===
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
GPIO_TypeDef* GPIOx GPIO_InitTypeDef* GPIO_InitStruct
表示哪一组IO口 :GPIOA — GPIOG 结构体中有三个参数:
uint16_t GPIO_Pin
GPIOSpeed_TypeDef GPIO_Speed
GPIOMode_TypeDef GPIO_Mode
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) //设置输出高电平
{
/* Check the parameters */
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
assert_param(IS_GPIO_PIN(GPIO_Pin));
GPIOx->BSRR = GPIO_Pin;
}
-------------------------------------------------------
uint16_t GPIO_Pin
表示哪一个IO口:
GPIO_Pin_0 — GPIO_Pin_15
-------------------------------------------------------
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) //设置输出低电平
{
/* Check the parameters */
assert_param(IS_GPIO_ALL_PERIPH(GPIOx));
assert_param(IS_GPIO_PIN(GPIO_Pin));
GPIOx->BRR = GPIO_Pin;
}
GPIO_Mode_Out_PP 推挽输出模式
GPIO_Speed_50MHz 速度为50MHz
===点亮LED(寄存器版本)===
图片来自:正点原子STM32教学视频