这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » GPIO使用的一些总结

共6条 1/1 1 跳转至

GPIO使用的一些总结

高工
2022-02-15 08:39:31     打赏

1.GPIO是统用I/O口,对于stm32来说,IO的输入与输出需要一定的寄存器来进行一些控制,从图中也能看出GPIO的输入与输出分别做不同的控制,包括位设置/清除寄存器,输入与输出寄存器,如果希望真正了解GPIO,这个图需要了解电流走向;

image.png

2.接下来就是非常实际的编程问题,在寄存器设置这一块,有两个需要设置,一个GPIOx->CRL或者GPIOx->CRH,(其中x可以取到A-G)这个部分是设置GPIO的输出/输入,以及速度,即其中的CNF1,CNF0,mode1,mode0 见下图:

image.png

下面是补充一下mode1,mode0对应的速度;

image.png

3.接下来想说的就是GPIO口的设置在stm32固件库里有直接设置的函数,可以调用,当然也可以自己设置,下面给出的是一个LED输出的初始化GPIO口的函数,用的就是调用固件库,推荐用固件库;


void LED_Init(void)

{     

  GPIO_InitTypeDef  GPIO_InitStructure;

 

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE);

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽式 

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //50MHz

  GPIO_Init(GPIOG, &GPIO_InitStructure);      //GPIO

  GPIO_SetBits(GPIOG,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);

}


4.另一个事是关于时钟的,之前有了解过时钟,也看过相关结构体和函数,但是一直不是很了解他的作用,这里给出一个时钟必须使用的地方就是,在初始化GPIO前必须使能GPIO的时钟,我不懂时钟,只是学习期,供大神给出解释。


RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE);


5.还有一点就是上面关于CRL和CRH,这是两个32位寄存器,其实可以发现一个IO引脚需要4bit来确定输入输出方式及速度,所有CRL可以控制一个GPIO的0-7的8个引脚,CRH则控制8-15等8个引脚,正好确定了GPIOx的16个引脚;在一个就是GPIO的IDR和ODR,这两个均是32位寄存器,但都是去低16位来决定GPIO的引脚值,每位决定一个引脚值。这里给出GPIO->CRL的分配图,CRH类似;

image.png

目前就是我的了解。





关键词: GPIO     总结    

院士
2022-02-15 08:46:19     打赏
2楼

谢谢分享


院士
2022-02-15 08:47:19     打赏
3楼

学习


院士
2022-02-15 08:47:23     打赏
4楼

学习学习


院士
2022-02-15 08:47:27     打赏
5楼

学习


高工
2022-02-15 08:48:08     打赏
6楼

这个好厉害


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]