第五章通用和复用功能IO口
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#define PERIPH_BASE
(APB2PERIPH_BASE + 0x0800) (APB2PERIPH_BASE + 0x0C00) (APB2PERIPH_BASE + 0x1000) (APB2PERIPH_BASE + 0x1400)
((uint32_t)0x40000000)
举例说明,分析流水灯例程—了解库开发流程
举例说明,分析流水灯例程—了解库开发流程
3、编写用户文件 (1)初始化库函数 GPIO_Init
在这个函数内部,把输入的这些参数按照一定 的规则转化,进而写入寄存器,实现了配置GPIO端口 的功能
举例说明,分析流水灯例程—了解库开发流程
3、编写用户文件 (2)控制I/O口高低电平 GPIO_SetBits 置1,led亮 GPIO_ResetBits
STM32单片机 最多有7个16位的并行 I/O端口:PA、 PB、PC、PD、PE、PF、PG。
STM32F103单片机 只有5个16位的并行 I/O端口:PA、 PB、PC、PD、PE。(实验板型号:TM32F103VET6)
一、引脚介绍
➢ 每个GPIO管脚都可以由软件配置成输出(推拉或开 路)、输入(带或不带上拉或下拉)或其它的外设功能 口。
第五章 通用和复用功能I/O
5.1 GPIO的工作原理
一、引脚介绍 二、STM32 GPIO主要功能 三、IO口的基本结构
5.2 编程举例
5.3 GPIO复用功能
一、引脚介绍
5.1 GPIO的工作原理
通用IO口,又称为GPIO(General-Purpose IO ports )CPU的一个接口模块,为一些协议比较简 单的外部设备/电路提供了一种控制手段。
寄存器操作 int main(void) {
GPIOB->CRL=0x3<<20; //配置PB5为推挽输出,50MHZ
while(1) { GPIOB->ODR=0x0; Delay(0xAFFFF); GPIOB->ODR=0x20; Delay(0xAFFFF); } }
举例说明,分析流水灯例程—了解库开发流程
1地址映射
STM32固件库对寄存器的封装
#define GPIOA
((GPIO_TypeDef *) GPIOA_BASE)
#define GPIOB
((GPIO_TypeDef *) GPIOB_BASE)
#define GPIOC
((GPIO_TypeDef *) GPIOC_BASE)
#define GPIOD
((GPIO_TypeDef *) GPIOD_BASE)
#define GPIOE
((GPIO_TypeDef *) GPIOE_BASE)
typedef struct {
__IO uint32_t CRL;-----0x00 __IO uint32_t CRH;-----0x04 __IO uint32_t IDR;------0x08 __IO uint32_t ODR; __IO uint32_t BSRR; __IO uint32_t BRR; __IO uint32_t LCKR; } GPIO_TypeDef;
➢ 多数GPIO管脚都与数字或模拟的外设共用。所有 的GPIO管脚都有大电流通过能力。
➢ 在需要的情况下,I/O管脚的外设功能可以通过一 个特定的操作锁定,以避免意外的写入I/O寄存器 。
➢ 在APB2上的I/O脚提供高达18MHz的翻转速度。
一、引脚介绍:以STM32F103x为例
5.1 GPIO的工作原理
举例说明,分析流水灯例程—了解库开发流程
2、STM32时钟设置 在startup_stm32f10x_hd.s中运行systemInit(), 这个函数定义在system_stm32f10x.c,他的作用是设 置系统时钟, 之后调用SetSysClock( )设置具体的系统时钟
举例说明,分析流水灯例程—了解库开发流程
3、编写用户文件 配置gpio口的相关操作:初始化结构体 库函数
GPIO_InitTypeDef GPIO_InitStructure; typedef struct 库文件利用关键字typedef定义的新类型 { uint16_t GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; }GPIO_InitTypeDef;
3)设置GPIO输出高低电
平控制LED灯的亮灭
举例说Fra Baidu bibliotek,分析流水灯例程—了解库开发流程
要实现功能
选定与LED硬件 相连的引脚
选定GPIO的 特定功能
控制LED亮灭
相应状态
PD6\PD3 输出功能 设置GPIO引脚 电平的高低
对应的寄存器 配置
引脚在D上, 选择x=d
配置寄存器 GPIOx-CRL
设置数据寄 存器
举例说明,分析流水灯例程—了解库开发流程
3、编写用户文件 (3)led.h头文件 (4)main文件分析
举例说明,分析流水灯例程—了解库开发流程
4、总结
1)为了控制led,要使用GPIO外设 2)了解GPIO外设的功能,如何使用 3)知道GPIO的地址映射,挂载在APB2 4)了解ST官方库对寄存器的封装 5)了解时钟树,查看GPIOC时钟来源,PCLK2 6)在stm32f10x_conf.h文件中用到的头文件stm32f10x_gpio.h 和stm32f10x_rcc.h 7)添加用户文件led.c文件 8)编写驱动初始化函数LED_GPIO_Config(void)
1地址映射 stm32f10x.h
#define GPIOD_BASE
(APB2PERIPH_BASE + 0x1400)
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
#define PERIPH_BASE
((uint32_t)0x40000000)
#define GPIOA_BASE #define GPIOB_BASE #define GPIOC_BASE #define GPIOD_BASE
PE口 16脚
PC口 16脚
PA口 16脚
PD口 16脚
PB口 16脚
STM32F103包含5个端口: PA口 、PB口、PC口、 PD口、 PE口。
一、引脚介绍:以STM32F103VET6为例 5.1 GPIO的工作原理
补充举例说明,分析流水灯例程—了解库开发流 程
1)选择GPIO端口
2)选择GPIO端口功能
(APB2PERIPH_BASE + 0x0800) (APB2PERIPH_BASE + 0x0C00) (APB2PERIPH_BASE + 0x1000) (APB2PERIPH_BASE + 0x1400)
((uint32_t)0x40000000)
举例说明,分析流水灯例程—了解库开发流程
举例说明,分析流水灯例程—了解库开发流程
3、编写用户文件 (1)初始化库函数 GPIO_Init
在这个函数内部,把输入的这些参数按照一定 的规则转化,进而写入寄存器,实现了配置GPIO端口 的功能
举例说明,分析流水灯例程—了解库开发流程
3、编写用户文件 (2)控制I/O口高低电平 GPIO_SetBits 置1,led亮 GPIO_ResetBits
STM32单片机 最多有7个16位的并行 I/O端口:PA、 PB、PC、PD、PE、PF、PG。
STM32F103单片机 只有5个16位的并行 I/O端口:PA、 PB、PC、PD、PE。(实验板型号:TM32F103VET6)
一、引脚介绍
➢ 每个GPIO管脚都可以由软件配置成输出(推拉或开 路)、输入(带或不带上拉或下拉)或其它的外设功能 口。
第五章 通用和复用功能I/O
5.1 GPIO的工作原理
一、引脚介绍 二、STM32 GPIO主要功能 三、IO口的基本结构
5.2 编程举例
5.3 GPIO复用功能
一、引脚介绍
5.1 GPIO的工作原理
通用IO口,又称为GPIO(General-Purpose IO ports )CPU的一个接口模块,为一些协议比较简 单的外部设备/电路提供了一种控制手段。
寄存器操作 int main(void) {
GPIOB->CRL=0x3<<20; //配置PB5为推挽输出,50MHZ
while(1) { GPIOB->ODR=0x0; Delay(0xAFFFF); GPIOB->ODR=0x20; Delay(0xAFFFF); } }
举例说明,分析流水灯例程—了解库开发流程
1地址映射
STM32固件库对寄存器的封装
#define GPIOA
((GPIO_TypeDef *) GPIOA_BASE)
#define GPIOB
((GPIO_TypeDef *) GPIOB_BASE)
#define GPIOC
((GPIO_TypeDef *) GPIOC_BASE)
#define GPIOD
((GPIO_TypeDef *) GPIOD_BASE)
#define GPIOE
((GPIO_TypeDef *) GPIOE_BASE)
typedef struct {
__IO uint32_t CRL;-----0x00 __IO uint32_t CRH;-----0x04 __IO uint32_t IDR;------0x08 __IO uint32_t ODR; __IO uint32_t BSRR; __IO uint32_t BRR; __IO uint32_t LCKR; } GPIO_TypeDef;
➢ 多数GPIO管脚都与数字或模拟的外设共用。所有 的GPIO管脚都有大电流通过能力。
➢ 在需要的情况下,I/O管脚的外设功能可以通过一 个特定的操作锁定,以避免意外的写入I/O寄存器 。
➢ 在APB2上的I/O脚提供高达18MHz的翻转速度。
一、引脚介绍:以STM32F103x为例
5.1 GPIO的工作原理
举例说明,分析流水灯例程—了解库开发流程
2、STM32时钟设置 在startup_stm32f10x_hd.s中运行systemInit(), 这个函数定义在system_stm32f10x.c,他的作用是设 置系统时钟, 之后调用SetSysClock( )设置具体的系统时钟
举例说明,分析流水灯例程—了解库开发流程
3、编写用户文件 配置gpio口的相关操作:初始化结构体 库函数
GPIO_InitTypeDef GPIO_InitStructure; typedef struct 库文件利用关键字typedef定义的新类型 { uint16_t GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; }GPIO_InitTypeDef;
3)设置GPIO输出高低电
平控制LED灯的亮灭
举例说Fra Baidu bibliotek,分析流水灯例程—了解库开发流程
要实现功能
选定与LED硬件 相连的引脚
选定GPIO的 特定功能
控制LED亮灭
相应状态
PD6\PD3 输出功能 设置GPIO引脚 电平的高低
对应的寄存器 配置
引脚在D上, 选择x=d
配置寄存器 GPIOx-CRL
设置数据寄 存器
举例说明,分析流水灯例程—了解库开发流程
3、编写用户文件 (3)led.h头文件 (4)main文件分析
举例说明,分析流水灯例程—了解库开发流程
4、总结
1)为了控制led,要使用GPIO外设 2)了解GPIO外设的功能,如何使用 3)知道GPIO的地址映射,挂载在APB2 4)了解ST官方库对寄存器的封装 5)了解时钟树,查看GPIOC时钟来源,PCLK2 6)在stm32f10x_conf.h文件中用到的头文件stm32f10x_gpio.h 和stm32f10x_rcc.h 7)添加用户文件led.c文件 8)编写驱动初始化函数LED_GPIO_Config(void)
1地址映射 stm32f10x.h
#define GPIOD_BASE
(APB2PERIPH_BASE + 0x1400)
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
#define PERIPH_BASE
((uint32_t)0x40000000)
#define GPIOA_BASE #define GPIOB_BASE #define GPIOC_BASE #define GPIOD_BASE
PE口 16脚
PC口 16脚
PA口 16脚
PD口 16脚
PB口 16脚
STM32F103包含5个端口: PA口 、PB口、PC口、 PD口、 PE口。
一、引脚介绍:以STM32F103VET6为例 5.1 GPIO的工作原理
补充举例说明,分析流水灯例程—了解库开发流 程
1)选择GPIO端口
2)选择GPIO端口功能