当初写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的第一课
关键字:STM32M4 GPIO 输出配置『本文转载自网络,版权归原作者所有,如有侵权请联系删除』