stm32的GPIO端口
GPIO工作方式
GPIO结构体 GPIO_InitTypeDef
GPIO_Pin(端口号),GPIO_Speed(端口速率)
输入输出模式GPIO_Mode
输入模式
输入上浮 GPIO_Mode_IN_FLOATING
输入上拉 GPIO_Mode_IPU(传输过程接Vcc)
输入下拉 GPIO_Mode_IPD(传输过程接Vss)
模拟模式 GPIO_Mode_AIN(电频)
输出模式
开漏输出 GPIO_Mode_Out_OD
开漏复用 GPIO_Mode_AF_OD
推婉输出模式 GPIO_Mode_Out_PP
推婉复用输出 GPIO_Mode_AF_PP
配置GPIOx_CRL寄存器
一个寄存器32位,配置8个端口,每个端口4位,两位配置(00输入模式,01输出模式最大10MHz,10输出模式最大2MHz,11输出模式最大50MHz)
前两位确定模式,后两位确定是输出/输入
配置GPIOx_ODR寄存器
配置确定是上拉还是下拉寄存器
配置GPIOx_BSRR寄存器
32位的低16位直接配置所有的16个端口,设置为1是高电平,设置为0是不影响
配置GPIOx_BRR寄存器
端口的复用和端口重映射
rcc时钟、gpio端口
#include "led.h"
//LED IO初始化
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);//使能PB、PE端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5
GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 输出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 端口配置
GPIO_Init(GPIOE, &GPIO_InitStructure); //推挽输出,速度为50MHz
GPIO_SetBits(GPIOE,GPIO_Pin_5); //PE.5 输出高
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)