单元二LED流水灯控制汤宇娇上海城建职业课件_第1页
单元二LED流水灯控制汤宇娇上海城建职业课件_第2页
单元二LED流水灯控制汤宇娇上海城建职业课件_第3页
单元二LED流水灯控制汤宇娇上海城建职业课件_第4页
单元二LED流水灯控制汤宇娇上海城建职业课件_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单元二LED流水灯控制主讲人:汤宇娇上海城建职业学院本单元内容GPIO功能概述GPIO寄存器功能说明基于寄存器方式控制GPIO教学目标了解GPIO的功能和电路结构了解GPIO模块的寄存器含义掌握基于寄存器的程序开发方式2.1GPIO功能概述用途GPIOGPIO是通用输入/输出(GeneralPurposeI/O)的简称,主要用于工业现场需要用的数字量输入/输出的场合,例如输出功能:继电器、LED、蜂鸣器等的控制输入功能:传感器状态、高低电平等信息的读取复用功能:片内外设的对外接口时序模拟:模拟SPI、I2C和UART等常用接口的时序基本特性STM32微控制器概述STM32的GPIO特性两个概念GPIOPA0对应STM32F103RE芯片的14脚,属于端口GPIOA,输出电平由端口GPIOA的输出数据寄存器GPIOA_ODR的第0位决定GPIO模块由端口GPIOA、GPIOB、GPIOC等多个独立的子模块构成例如:端口GPIOA包括PA0~PA15这16个引脚,通过7个硬件寄存器控制引脚工作目标芯片GPIOSTM32F103RE的端口及引脚端口引脚数量备注GPIOAPA0~PA1516--GPIOBPB0~PB1516GPIOCPC0~PC1213GPIODPD21总结:一个端口默认包含16个引脚,但是不同型号的STM32微控制器所包含的端口数量及各端口包含的引脚数量各不相同,具体信息可以查询芯片的数据手册引脚占用情况GPIOSTM32F103RE的端口及引脚PD0和PD1接入HSEPC14和PC15接入LSEPA13和PA14作为SWD接口1.2STM32GPIO模块的电路结构电路结构GPIO123端口寄存器组输入输出驱动器引脚电路工作模式分类GPIO工作模式输入模式输出模式模拟模式复用模式浮空输入上拉输入下拉输入推挽输出开漏输出根据上/下拉电阻的使能情况根据两个MOS管的导通情况用法总结GPIOGPIO工作模式的用法总结输入模式浮空输入:按键识别上拉输入:IO内部上拉电阻输入下拉输入:IO内部下拉电阻输入模拟模式作为片内模拟外设的对外引脚单纯作为低功耗使用用法总结GPIOGPIO工作模式的用法总结输出模式推挽输出:可以输出高/低电平,主要用于连接数字器件,如指示灯和继电器等模块;开漏输出:只能输出低电平,适用于电流型驱动,也可以作为电平转换;复用模式复用推挽:片内外设功能(URAT的TX,RX,SPI的MOSI,MISO,SCK,SS;

复用开漏:片内外设功能(I2C的SCL,SDA)2.3GPIO模块的寄存器介绍端口寄存器GPIO端口寄存器配置低寄存器GPIOx_CRL配置高寄存器GPIOx_CRH输入数据寄存器GPIOx_IDR输出数据寄存器GPIOx_ODR设置/复位寄存器GPIOx_BSRR复位寄存器GPIOx_BRR配置锁定寄存器GPIOx_LCKR配置寄存器GPIO端口配置低寄存器GPIOx_CRL配置寄存器GPIO端口配置高寄存器GPIOx_CRH配置寄存器GPIO输入数据寄存器GPIOx_IDR配置寄存器GPIO输出数据寄存器GPIOx_ODR配置寄存器GPIO置位/复位寄存器GPIOx_BSRR配置寄存器GPIO复位寄存器GPIOx_BRR配置寄存器GPIO端口配置锁定寄存器GPIOx_LCKR使用举例GPIO要求PA0输出低电平,PA15输出高电平2.4

利用指针访问单个寄存器端口地址范围GPIOSTM32F103RE芯片的GPIO模块各端口寄存器的地址范围端口号寄存器组地址范围备注GPIOA0x40010800-0x40010BFF每组端口占用了0x000~0x3FF共1K字节的存储空间,而实际每组端口只包括7个32位的寄存器,只需要28个字节的存储空间,多余的存储空间预留给芯片升级使用。

GPIOB0x40010C00-0x40010FFFGPIOC0x40011000-0x400113FFGPIOD0x40011400-0x400117FF端口地址范围GPIO端口GPIOA对应寄存器的起始地址及偏移量寄存器名称寄存器起始地址偏移量GPIOA_CRL0x400108000x00GPIOA_CRH0x400108040x04GPIOA_IDR0x400108080x08GPIOA_ODR0x4001080c0x0CGPIOA_BSRR0x400108100x10GPIOA_BRR0x400108140x14GPIOA_LCKR0x400108180x180x40010800作为模式寄存器的起始地址,也是端口GPIOA寄存器组的起始地址所有寄存器为32位,占用四个字节的存储空间12地址转换方法GPIO利用指针完成地址的转换地址转换方法GPIO利用指针完成地址的转换unsignedint*p表示定义一个指向无符号整型的指针p=0x40010800UL表示为指针变量p赋值,指向地址单元0x40010800UL*p即指针的解引用,表示访问从地址单元0x40010800UL开始的4个字节地址单元的内容地址转换过程GPIO寄存器定义:#defineGPIOA_CRL*(volatileunsignedint*)(0x40010800UL)0x40010800UL将有符号常数转换为一个无符号32位常数volatileunsignedint*(0x40010800UL)表示将常数强制转换为指向无符号整型的指针,即寄存器的地址*(volatileunsignedint*)(0x40010800UL)表示指针的“解引用”,访问(读/写)指针所指向地址的数据利用define取一个别名,用GPIOA_CRL代表该存储空间通过GPIOA_CRL来访问对应的存储空间1234避免编译器优化指针的基类型代表从地址0x40010800开始的4字节存储空间2.5

利用指结构体指针访问寄存器组寄存器组GPIO多个寄存器的定义地址连续

利用结构体实现寄存器名称寄存器起始地址偏移量GPIOA_CRL0x400108000x00GPIOA_CRH0x400108040x04GPIOA_IDR0x400108080x08GPIOA_ODR0x4001080c0x0CGPIOA_BSRR0x400108100x10GPIOA_BRR0x400108140x14GPIOA_LCKR0x400108180x18unsignedint数据类型占用4个字节地址转换过程GPIO#define

GPIOA

((GPIO_TypeDef*)0x40010800UL)0x40010800UL将有符号常数转换为一个无符号32位常数GPIO_TypeDef*(0x40010800UL)表示将常数强制转换为指向GPIO_TypeDef类型的结构体指针利用define取别名,用GPIOA作为结构体指针的别名123结构体指针加成员变量的形式访问硬件寄存器GPIOA->CRL;GPIO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论