1. 学习如何在KEIL新建一个工程,自己百度。
      1. 有启动文件:startup_stm32f10x_hd.s
      2. 有寄存器映射文件:stm32f10x.h
      3. 然后才是我们的main.c 文件
    2. 开始学习GPIO

    GPIO理论原理部分

    GPIO是通用输入输出端口的简称,简单来说就是STM32可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图1

    除了IO引脚其他都为内部结构,VDD接3.3V电压,当输入正电压高于3.3V时二极管导通,起到保护作用。VSS接地,当输入负电压低于0时起保护作用。

    输出部分:有推挽输出和开漏输出两种方式;

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图2

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图3

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图4

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图5

    输入方面:有上拉输入和下拉输入;

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图6

    使用GPIO的方式

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图7

    GPIO详情

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图8

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图9

    进入实际代码操作

    1.寄存器编程(学51单片机时用的方法)

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图10

    其中的运算非常有意思,仔细看就可以知道原理

    • 由于STM32的外设很多,为了降低功耗,每个外设都对应着一个时钟,在芯片刚上电的时候这些时钟都是被关闭的,如果想要外设工作,必须把相应的时钟打开。
    • 三步:开启时钟,配置引脚模式,控制电平

    2.固件库编程(STM32新引入的一种方式)

    原理:通过结构体封装GPIO的寄存器,枚举限制寄存器取值,定义位操作函数

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图11

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图12

    操作函数代码太多,只是贴出一个例子

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图13

    库编程其实就是官方将所有的端口都经过上面这些处理,之后的编程就成了这个样子的

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图14

    下面进入标准库学习

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图15

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图16

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图17

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图18

    学会库编程的关键:学会查文档,因为官方实现的标准库内容非常多

    新建工程库文件版(还有其他设置省略)

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图19

    1.配置GPIO之从寄存器编程方式引入到固件库编程方式 - 图20

    GPIO输出—使用固件库点亮LED

    GPIO输入—按键检测

    等回学校实操

    位带操作,自己百度