学习原子哥STM32M4(1):GPIO输出配置

当初写51感觉IO口输出配置很简单,直接写入16进制数就可以了,而当我开始学STM32时我便发现了STM32的IO的强大之处,复用功能也很厉害。这里写一下贴一下我在学习GPIO输出的心得。

以为本人能力有限,理解可能有误,希望各位大虾包容包容,在评论区指出我的错误

GPIO_InitTypeDef GPIO_InitST;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
	
	GPIO_InitST.GPIO_Pin=GPIO_Pin_2;
GPIO_InitST.GPIO_Mode=GPIO_Mode_OUT;
GPIO_InitST.GPIO_OType=GPIO_OType_PP;
GPIO_InitST.GPIO_PuPd=GPIO_PuPd_DOWN;
GPIO_InitST.GPIO_Speed=GPIO_Speed_100MHz;
GPIO_Init(GPIOB,&GPIO_InitST);	
	GPIO_ResetBits(GPIOB,GPIO_Pin_2);

这段代码是蜂鸣器的,下面一段是LED的。

GPIO_InitTypeDef GPIO_InitST;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);
	
GPIO_InitST.GPIO_Pin=GPIO_Pin_15|GPIO_Pin_14|GPIO_Pin_13|GPIO_Pin_12|GPIO_Pin_11;
GPIO_InitST.GPIO_Mode=GPIO_Mode_OUT;
GPIO_InitST.GPIO_OType=GPIO_OType_PP;
GPIO_InitST.GPIO_PuPd=GPIO_PuPd_UP;
GPIO_InitST.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOE,&GPIO_InitST);	
	GPIO_SetBits(GPIOE,GPIO_Pin_15|GPIO_Pin_14|GPIO_Pin_13|GPIO_Pin_12|GPIO_Pin_11);
	

我们可以发现共同之处。

首先他们都是GPIO配置成输出模式

GPIO_InitTypeDef GPIO_InitST;

定义一个函数GPIO_InitST,这个名字是自己定义的,它的作用是参数结构体指针
 
  

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE,ENABLE);

这个是使能时钟,因为GPIOA-G都是在AHB1下的,所以我们要使能AHB1
而后面那一段代码则是我们定义的结构体的成员变量 
  
 
  

GPIO_InitST.GPIO_Pin

指定针脚,因为我们之前使能时钟时便指定了是GPIOE,所以这里的成员变量是在指定E的针脚

GPIO_InitST.GPIO_Mode

配置GPIO的模式为输出输入模式,OUT为输出,IN为输入,如果我们用键盘输入的话这里就要写成IN
AIN模拟输入
FLOATING浮空输入
IPD下拉输入
IPU上拉输入
OD开漏输出
PP推挽输出
AF_OD复用开漏输出
AF_PP复用推挽

GPIO_InitST.GPIO_OType

OType即Output Type?(本人猜测的),配置输出类型
所以只有PP OD两种

GPIO_InitST.GPIO_PuPd

配置上下拉,有三种
GPIO_PuPd_NOPULL 
GPIO_PuPd_UP     GPIO_PuPd_DOWN 

GPIO_InitST.GPIO_Speed

配置IO口速度,有2 25 50 100MHz四种

GPIO_Init();

初始化GPIO,有两个参数,第一个是哪一组IO,GPIOE,就是E,第二个就是取我们定义的那个结构体的地址,可以知道我们怎么配置的

以上都是我们配置IO口时的参数,也是学习STM32的第一课

 
  
 
 

你可能感兴趣的:(STM32)