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 输出高
}


posted @   MAOCE  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示