STM32入门笔记——GPIO的初始化

Posted 若你遇见她

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32入门笔记——GPIO的初始化相关的知识,希望对你有一定的参考价值。

GPIO的初始化

初始化步骤
1、先时钟使能
2、对其进行具体配置(输出模式、端口、速率)
3、一般还对其输出进行默认配置,如默认高电平/低电平
STM32GPIO的模式有

库函数配置法

1、先时钟使能
2、对其进行具体配置(输出模式、端口、速率)
3、一般还对其输出进行默认配置,如默认高电平/低电平
下面展示一些 内联代码片

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//GPIOB时钟的使能
    
    GPIO_InitTypeDef GPIO_InitStructure; //一个结构体 指定结构体名
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //配置输出模式为推挽输出
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;         //配置端口为 5号口 
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  //配置输出频率为50MHZ
	GPIO_Init(GPIOB,&GPIO_InitStructure);        //一个结构体 通用语句     

GPIO_ResetBits(GPIOB,GPIO_Pin_5);    //ResetBits  置为低电平
GPIO_SetBits(GPIOB,GPIO_Pin_5);      //SetBits  置为高电平
    

寄存器配置法

实例如下 内联代码片

 RCC->APB2ENR |= 1<<3;	 //B的时钟使能
GPIOB->CRL &= 0xFF0FFFFF;
  //指明配置端口。因为led灯连接的是5号口,故第 5+1 = 6 为 0,其他位不变
  
GPIOB->CRL |= 0x00300000; 
//参考CRL的寄存器原理,该出置为通用50MHZ的推挽输出。即使0011.化为16进制即是3.位置同上

GPIOB->ODR&=~(1<<5);    //B的5号位置0,低电平
GPIOB->ODR|=1<<5;     //B的5号位置1,**配置端口高低电平**

CRL寄存器原理图如下

RCC->APB2ENR |= 1<<3:即是将其apb2寄存器的第三位置1(实际上是第四为,寄存器第一位都是0)
3号位GPIOB相连,APB2寄存器参考下图(其他APB寄存器配置见**“中文参考手册6.3.7”**)

位操作法

初始化部分可参考前两种方法
这里强调其使用
注意需要调用
#include “sys.h” //使用位操作必须引用这个头文件
下面展示一些 内联代码片

PBout(5) = 1;  //B5 号口设置为高电平
PBout(5) = 1;//B5 号口设置为低电平
	

以上是关于STM32入门笔记——GPIO的初始化的主要内容,如果未能解决你的问题,请参考以下文章

stm32如何判读输入IO口的高低电平

STM32学习笔记

stm32学习笔记-3GPIO通用输入输出口

STM32学习笔记

stm32读取gpio高低电平速度

STM32基本GPIO操作:按键输入(扫描+外部中断)