初入STM32-GPIO设置

STM32基本概念

二进制

其实STM32内部的是由基础电路构造,有些程序的过程想当于把设置之前设计好未连接的硬件电路连接,程序转移成二进制,有些二进制位便是配置电路的连接状态, ,举例0打开开关(不连接电路),1闭合开关(连接电路),二进制在很多硬件编程中扮演着开和关的重要角色.

STM32为什么比51单片机快?

数据线

STM32拥有32根数据线传输32位二进制数据,而基于51内核的单片机是8位数据线,搬运一次数据的数量级根本不是一个概念.

时钟

32的时钟频率经过锁相环倍频高达72M,而51仅为12M.
重要概念:只有当时钟的脉冲(上升/下降沿)到来时才能改变寄存器的值,举例子,我想改变IO口状态为低电平,时钟脉冲到来时我才能改变,32(72M频率)则比51(12M频率)快6倍!
当然STM32比51块还因为它的哈佛结构等,只需要大概了解就好了.

STM32内部函数设计思想&GPIO口配置

1.项目文件简介

初入STM32-GPIO设置_第1张图片
自定义函数:是为了避免主函数有大量的程序而进行封装的函数,主函数一般仅仅是几行函数调用.
库函数: ST公司为使用者配置好的函数,避免使用者直接使用寄存器的繁琐工作,必须有一个思想:我需要用到的配置函数ST都帮我们写好了,我们只需要去找函数来调用!

2.STM32时钟

初入STM32-GPIO设置_第2张图片
大家注意黑色框中的图,系统时钟72M分成2个重要的部分APB1和APB2
APB1时钟管理普通定时器2\3\4等
APB2时钟管理GPIO,高级定时器1\8,ADC等
启用对应的功能都要开启时钟,时钟的脉冲才能改变对应寄存器的值.(上升沿和下降沿都能改变寄存器的值)
有人问过我为什么51的时钟不用开启啊??
因为51单片机的时钟都默认统一开启了,而32需要分别开启时钟的,好处是避免不必要的MCU资源浪费和能耗.
初入STM32-GPIO设置_第3张图片

3.IO口分组与基本电路结构

STM32 IO口分组是按字母分组例如PA/PB/P(A-G),而STC是按数字分组P0/P1/P(0-3)
STM32一组有16个口例如A组有16个口,而STC一组只有8个口
初入STM32-GPIO设置_第4张图片
GPIO 8种模式
-输入浮空
-输入下拉
-输入上拉
-模拟输入 (模拟量输入-AD,DA)
-开漏输出 : 外设电压比单片机电压低的时启用
-推挽式输出 (常用): 可以输出高(电源电压)/低电平,连接数字器件
-推挽式复用功能 (常用)
-开漏复用功能
重点:我们等会用程序去配置GPIO模式便是配置电路的连接来决定启用那种电路!!!

4.代码补全功能

函数名字都概括了函数的作用!
问题来了?我们无法确定具体的函数,只能大概确定名字
例如GPIO_Init ,一个特别重要的功能启用:代码提醒功能,新手最好启用,快速上手!
–KEIL下ARM编译环境功能十分强大
下面为启用设置
初入STM32-GPIO设置_第5张图片
初入STM32-GPIO设置_第6张图片
初入STM32-GPIO设置_第7张图片

5.STM32GPIO口库函数

这里写图片描述
初入STM32-GPIO设置_第8张图片
注意:参数已经是ST帮你定义好的了,那么如何知道我该赋入什么形参呢???
初入STM32-GPIO设置_第9张图片
初入STM32-GPIO设置_第10张图片

6.配置GPIO组类型结构体

初入STM32-GPIO设置_第11张图片
初入STM32-GPIO设置_第12张图片
初入STM32-GPIO设置_第13张图片

7.配置GPIO类型结构体

初入STM32-GPIO设置_第14张图片
找到了.h文件(宏定义和结构体都在.h文件声明)
初入STM32-GPIO设置_第15张图片
如何配置这些结构体的量?
记住我们一旦调用库函数则只需要往库的头文件(.h)中便能找到ST为我们定义好的参数进行配置
搜寻关键词快捷键:CTRL+F
选定管脚
初入STM32-GPIO设置_第16张图片
之后我们便找到了
初入STM32-GPIO设置_第17张图片
有人奇怪了?为什么要ST这样做呢?
试想32的寄存器和管脚如此之多,对于快速开发的人员来说,预先宏定义好所需函数和配置参数简直再好不过了,甚至不用阅读手册都能进行快速开发!
配置模式
初入STM32-GPIO设置_第18张图片

GPIO速度配置同样原理

自定义个函数对需要到GPIO设备进行配置

初入STM32-GPIO设置_第19张图片

源码下载

大家可以看我下一篇文章-KEIL波形仿真,不用下载程序就能看到结果

KEIL波形仿真

你可能感兴趣的:(51\STM32)