目录
一、GPIO外设概述
1、GPIO概念
2、GPIO定义
3、引脚布局(以STM32F103C8T6为例)
4、引脚功能
二、GPIO外设使用
1、查看原理图
2、分析原理图
3、程序设计
(1)GPIO外设源码分析
(2)时钟开启
(3)初始化GPIO配置
一、GPIO外设概述
1、GPIO概念
GPIO指的是通用的输入输出端口,input指的是输入,output指的是输出,可以由用户通过软件配置的方式来进行控制,GPIO引脚需要和外设连接在一起的,就可以和外设实现通信以及采集数据等功能。
2、GPIO定义
指的是对芯片的某个引脚进行高低电平的输出,以及可以去检测某个引脚的电平状态。一般电平采用都是TTL电平信号,TTL电平信号规定:+5V等价于逻辑“1”,0V等价于逻辑“0”。电平其实有一个电平范围:>2.4V就表示高电平,<0.4V就表示低电平。
3、引脚布局(以STM32F103C8T6为例)
一般是由P(Pin)开头,分为很多组(端口),以字母A~C来命名,每个组(端口)有16个引脚,引脚的编号为0~15,所以如端口A引脚范围: PA0 ~ PA15 端口A引脚范围:PB0~PB15.....
4、引脚功能
需要注意:芯片的引脚有很多的功能,一般默认的功能都是作为GPIO(输入输出),但是引脚也有其他的功能,被称为“第二功能”,只有在使用ADC通道和DAC需要把引脚设置模拟模式,其他情况下想要把引脚当做别的功能使用,需要把引脚设置复用模式。
注意:如果想要了解引脚的功能,应该查阅芯片的数据手册!!!!引脚在芯片复位之后的默认功能一般都是GPIO功能,但是并不绝对,所以用户在使用后任何一个引脚的时候都应该查阅芯片数据手册.
二、GPIO外设使用
想要学习硬件开发,一般都是从点亮LED开始,主要是以基础外设作为入门,掌握外设的控制流程。
1、查看原理图
找到控制发光二极管的芯片的IO口,LED -- PC13引脚,其他引脚类似!!
2、分析原理图
理解硬件的控制原理(复杂外设还需要结合数据手册),输出低电平就亮。发光二极管具有单向导电性
3、程序设计
根据ST公司提供的函数库(标准外设库+HAL库)的帮助手册学习开发流程。此时不会写代码很正常。
(1)GPIO外设源码分析
(2)时钟开启
配置GPIO引脚参数之前,应该提前打开和外设引脚相关的端口时钟,时钟也必须打开!
ST公司设计的STM32系列的MCU采用的内核都是ARM公司设计的Cortex-M4内核,Cortex-M系列的内核一般用于低功耗产品中,所以STM32芯片为了降低功耗,在芯片复位之后默认把所有外设的时钟都关闭,如果用户打算使用某个外设,则需要打开该外设的时钟。
另外,STM32为了降低功耗,把不同性能的外设挂载在不同的总线上,STM32的总线分为3种:AHB总线(高级高性能总线)、APB总线(高级外设总线,又分为两条:APB1 and APB2)
总线和外设的关系:好比高速公路(左车道 中间车道 右车道)和汽车(汽车性能)的关系
打开时钟的目的:控制硬件必须通过访问硬件的寄存器,而寄存器是由触发器组成的,而触发器属于时序逻辑电路,所以需要时钟信号才可以选择触发,所以时钟信号就相当于触发器的开关,而触发器又是寄存器的组成部分(寄存器是由若干个触发器级联在一起)。
外设通过寄存器控制 寄存器要依赖触发器 触发器要依赖时钟信号 --- 时钟控制外设
(3)初始化GPIO配置
根据GPIO外设的初始化结构体中的成员对外设引脚进行设置并调用GPIO_Init()初始化
注意:GPIO_Init()会把已经配置好的结构体中的成员的值写入到对应GPIO端口的寄存器中!
根据实际的需求控制GPIO外设的引脚,比如控制引脚输出电平 or 控制引脚读取电平