第五章STM32F103处理器内部资源C编程与实例
可编程控制器应用技术与设计实例
第2章 可编程控制器的硬件结构
· PAGE 94·
· PAGE 93·
第五章 STM32F103 处理器内部资源C编程与实例
5.1 I/O控制模块C编程与实例
5.1.1 实例内容与目标
● 熟悉STM32F103 处理器 I/O编程方法;
● 通过实验掌握STM32F103 处理器 I/O口控制LED显示的方法;
● 学习LED驱动原理。
5.1.2
(1)STM32F103 处理器 I/O口控制工作原理
STM32F103 处理器有A~E五组输入输出端口,每组端口都拥有自己的两个32bit寄存器(GPIOx_CRL,GPIOx_CRH)、2个32bit数据寄存器(GPIOx_IDR,GPIOx_ODR)、一个32bit set/reset寄存器(GPIOx_BSRR)、一个16bit reset寄存器(GPIOx_BRR)和一个32bit 锁定寄存器(GPIOx_LCKR)。
每组端口都有复用的功能,例如作为输入口或输出口,还可以定义为中断触发功能,我们可以通过软件配置寄存器来满足不同系统和设计的需要。在运行主程序之前,必须先对每一个用到的引脚的功能进行设置。如果某些引脚的复用功能没有使用,那么可以先将该引脚设置为I/O 口。
由于I/O 口的配置过程都完全类似,因此接下来主要以GPIO E 口作为对象来进行讲解。
● 端口配置低寄存器
表5.1显示了该寄存器的定义。
表5.1 端口配置低寄存器定义
比特位
定义
Bits:31:30,27:26,23:22,19:18,15:14,11:10,7:6,3:2
软件可写位,配置相应的I/O端口。
输入模式(mode[1:0]=00):
00:模拟输入模式
01:浮点输入
10:输入上拉/下拉
11:保留位
输出模式(mode[1:0]> 00):
00:通用功能输出上拉
01:通用功能输出Open-drain
10:转换功能输出上拉
11:转换功能输出Open-drain
Bits29:28,25:24,21:20,17:16,13:12,9:8,5:4,1:0
软件可写位,配置相应的I/O端口。
00:输入模式
01:输出模式,最大速率10MHz
10:输出模式,最大速率2MHz
11:输出模式,最大速率50MHz
● 端口配置高寄存器
表5.2显示了该寄存器的定义。
表5.2 端口配置高寄存器定义
比特位
定义
Bits:31:30,27:26,23:22,19:18,15:14,11:10,7:6,3:2
软件可写位,配置相应的I/O端口。
00:模拟输入模式
01:浮点输入
10:输入上拉/下拉
11:保留位
Bits29:28,25:24,21:20,17:16,13:12,9:8,5:4,1:0
软件可写位,配置相应的I/O端口。
输入模式(mode[1:0]=00):
00:模拟输入模式
01:浮点输入
10:输入上拉/下拉
11:保留位
输出模式(mode[1:0]> 00):
00:通用功能输出上拉
01:通用功能输出Open-drain
10:转换功能输出上拉
11:转换功能输出Open-drain
● 端口输入数据寄存器
GPIO端口数据可以通过该寄存器读入。表5.3显示了数据寄存器的定义。
表5.3 端口输入寄存器定义
Bits31:16
保留位,读出数据为0
Bits:15:0
IDRx[15:0]:端口输入数据(x=0….15)
该寄存器为只读寄存器并且只能在字模式下访问;读出数据为相应I/O端口的输入值。
● 端口输出数据寄存器
地址偏移量:0Ch;初始值
GPIO端口数据可以通过该寄存器读入。表5.4显示了数据寄存器的定义。
表5.4 端口输入寄存器定义
Bits31:16
保留位,读出数据为0
Bits:15:0
IDRx[15:0]:端口输入数据(x=0….15)
该寄存器为可读可写寄存器,只能在字模式下访问。
注意:该寄存器允许原子操作(设置/重启),每一位允许单独操作。通过对GPIOx_BSRR寄存器的操作,可以设置或重启任一比特位。
● 比特位设置/重启寄存器GPIOx_BSRR
地址偏移量:10h;初始化值。
表5.5显示了比特位设置/重启寄存器的定义。
表5.5 比特位设置/重启寄存器定义
Bits31:16
BRx:reset bit x(x=1…15)
该寄存器为只写寄存器而且仅能在字模式下访问。
0:对相应ODRx位不做任何操作;
1:重启ODRx相应位。
注意:如果同时设置了BSx和BRx,BSx具有较高优先级。
Bits:15:0
BSx:相应的x位置位(x=1…15)
该寄存器为只写寄存器而且仅能在字模式下访问。
0:对相应ODRx位不