STM32 GPIO
## 一、GPIO简介
### 1、什么是GPIO
GPIO(General-purpos Input/Output)通用输入输出口
作用:
采集外部的器件信息(输入):麦克风、按键
控制外部的器件工作(输出):LED、蜂鸣器
GPIO是所有微控制器必不可少且常用的外设接口。
预研发:需要用万用表对所有GPIO进行测量
### 2、STM32F407ZE的GPIO
1、STM32中144个引脚114 = 16X7+2
GPIO引脚划分为:(A..H),每组GPIO有16个脚位,H组仅有0.1两个脚位
命名:PXY(X代表组号,Y代表端口号)
2、GPIO的工作模式
输入模式:
上拉输入:脚位空闲时,读取数据是高电平
下拉输入:脚位空闲时,读取数据是低电平
模拟输入:用于ADC采集
浮空输入:脚位空闲时,读取的数据不确定
输出模式:
推挽输出:可以输出高电平和低电平
开漏输出:可以输出低电平,但是不能输出高电平,加上拉电路
复用推挽输出:片上外设SPI
复用开漏输出:片上外设IIC
高电平:VDD*0.7 = 3.3Vx0.7=2.3V
低电平:VDD*0.3 = 3.3Vx0.3=0.99V
## 补充:keil5软件的部分问题
1、中文乱码问题
Edit-->Configuration-->Encoding-->Chinese GB2312(Simp..)
2、代码不提示问题
Configuration-->Text Compliton-->Function Parameters
3、内部上拉/下拉和外部上拉/下拉优缺点?
优点:节省PCB空间 缺点:不能更换
优点:随时修改更新参数 缺点:不能省PCB空间
## 二、时钟
1、时钟的概念
原则:处理器内核是要在时钟的驱动下才能完成指令,状态转换,且芯片内部有很多的外设模块,比如说GPIO,UART,这些模块彼此的协同工作,是要时钟来智慧运行。
芯片内部有很多的外设,这些端口在不使用/才上电的时候往往处于关闭状态,这些内部功能启动与关闭,不是借助传统的开关量。而是通过时钟去控制的。如果打开了某个时钟,某个模块才能打开,否则,关闭。
问题:既然功能模块的开启需要时钟,那么由谁来提供?
答案:时钟总线
问题:STM32F407ZE内部总线有什么?
高级高速总线
AHB1(频率168MHz)
AHB2(频率168MHz)
高级外设总线
APB1(频率42MHz)
APB2(频率84MHz)
拓展:
1、标准库函数的命名规律:标准的外设名_函数功能
2、函数传参的规律:形参名_XXX
3、标准的外设初始化结构体规律:标准的外设名称_InitTypeDefine
## 课堂案例:驱动蜂鸣器发声
1、查看原理图 BEEP--20--PF8
2、设置功能脚位 GPIO输出模式
3、分析电路获得控制逻辑 高电平发声
4、软件实现
4.1 对应使能GPIO时钟
4.2 设脚位功能
4.3 初始化脚位设置
4.4 根据控制逻辑完成外设控制
## 三、模块化编程
1、以BEEP代码为例,首先在BEEP文件夹内部新建一个文件夹叫HARDWARE
2、打开工程,右键Target 1添加Add group,一个新组并改名HARDWARE,在工程内的名字与第1步新建的名字一样
3、打开魔术棒按钮,选择C/C++,选择include Pahts添加HARDWARE文件形成依赖关系
4、右键点击HARDWARD新建.c和.h,注意:在新建.c和.h时候,一定包含HARDWARE路径