【STM32学习笔记】第一章:STM32的GPIO配置

  有时间准备给大家整理了一下学习STM32需要了解的基本知识。在我们学习STM32过程中,首先我们最先要学习的就属STM32的GPIO了。
  什么是GPIO?就是STM32的输出输入控制引脚。
  那么我们怎么去配置和使用GPIO引脚呢。下面由我来给大家讲解讲解一下GPIO的配置。

一、准备工作

这里我们要想配置好GPIO并验证需要的准备工作如下:

1、MDK for ARM(KEIL5)或者IAR FOR ARM(这个是软件必备开发平台)

2、一块STM32最小系统开发板(这个是验证软件的平台)

3、这里最好有一本关于STM32学习的书籍(这里就不推荐了,网上有一大把)

4、万用表(测试硬件是否正常工具)

二、具体的操作

1、工程建立

  这里我们需要一个根据自己的开发板配套的基础工程。工程建立就不多说了可以参考我的STM32CUBUMX工程建立博客,或者用其它的Demo例程。

2、GPIO初始化配置

  下面我给大家分享一部分代码。

 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;				
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		
 GPIO_Init(GPIOB, &GPIO_InitStructure);										

从这个代码里面我们可以看到我们使用的是GPIOB05。
GPIO_InitTypeDef GPIO_InitStructure;这句话是定义了一个名字叫GPIO_InitStructure的结构体,如果大家对结构体的定义和声明不了解的建议去看一下C语言里面讲结构体的知识。因为结构体声明对大家而言以后是非常重要的!
下面我来给大家讲解这个GPIO_InitStructure结构体里面各个参数的作用。
1)RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
这个是使能GPIOB的时钟,只有打开时钟GPIO才能正常工作。
2)GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
这里是选择要配置的GPIO引脚为GPIO_Pin_5
3)GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
这个是配置GPIO的模式,这里总共有八种模式可以配置。
(1)GPIO_Mode_AIN 模拟输入
(2)GPIO_Mode_IN_FLOATING 浮空输入
(3)GPIO_Mode_IPD 下拉输入
(4)GPIO_Mode_IPU 上拉输入
(5)GPIO_Mode_Out_OD 开漏输出
(6)GPIO_Mode_Out_PP 推挽输出
(7)GPIO_Mode_AF_OD 复用开漏输出
(8)GPIO_Mode_AF_PP 复用推挽输出。
我们这里GPIO_Mode_Out_PP配置的是推挽输出模式。
4)GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
这里配置的是GPIO工作速度,我们这里配置的是50MHz。这个配置只是IO口作为输出的时候要配置,作为输入口则不需要配置。
5)GPIO_Init(GPIOB, &GPIO_InitStructure);
这里是初始化我们配置好的结构体,调用完这个函数我们配置的GPIO就可以正常使用了。

3、GPIO如何使用

这里我给大家举个例子如下:

GPIO_SetBits(GPIOB,GPIO_Pin_5);	
GPIO_ReSetBits(GPIOB,GPIO_Pin_5);	

GPIO_SetBits(GPIOB,GPIO_Pin_5);
这里我们用的是库函数的方式将GPIOB05置为1,我们可以通过万用表去测量该引脚电平。电平是3.3V。

GPIO_ReSetBits(GPIOB,GPIO_Pin_5);
这里我们用的是库函数的方式将GPIOB05置为0,我们可以通过万用表去测量该引脚电平。电平是0V。

4、总结

给大家说了这么多,打击赶快去实践实践吧。

有问题欢迎加 QQ:380390633,乐意给大家答疑~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章