- 1、本文档共79页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式导论05解读
本章内容提要及教材对应章节 GPIO功能和寄存器 创建工程模板 输出应用:LED控制程序 软件模拟和硬件仿真 寄存器直接编程的简单对比 输入应用:KEY检测程序 参考资料:STM32F10x系列参考手册 参考资料:STM32库帮助文档 stm32f10x_stdperiph_lib_um.chm 参考资料:STM32库开发实战指南 机械工业出版社,2013.5 刘火良 杨森 编著 STM32库开发实战指南 网络支持:阿莫电子论坛 STM32的通用输入输出端口 提供通用的输入输出引脚(GPIO) 输出高低电平控制外设 输入0、1检测外设状态 可配置为复用的输入输出引脚(AFIO) 大多数GPIO都有默认的复用功能: 可作为片上外设(如串口、ADC等)的I/O引脚 部分GPIO还有重映射功能: 把原来是A引脚的默认复用功能,映射到B引脚使用 GPIO端口位的基本结构 通用I/O端口GPIO STM32F10x微控制器有7组通用I/O端口 用GPIOx(x是A、B、C、D、E、F、G)表示 即GPIOA、GPIOB、……GPIOG 每组端口有16个引脚 分别用Px0、Px1、……Px15(x是A~G)表示 每组端口具有7个寄存器 1. 配置寄存器:GPIOx_CRL、GPIOx_CRH 2. 数据寄存器:GPIOx_IDR、GPIOx_ODR 3. 位控寄存器:GPIOx_BSRR、GPIOx_BRR 4. 锁定寄存器:GPIOx_LCKR GPIO的寄存器 每组端口具有7个寄存器 实现对GPIO端口初始化配置和数据输入输出控制 每个寄存器只能以32位(字)进行访问 不允许16位(半字)或8位(字节)访问 7个寄存器分成4种 1. 配置寄存器:选择引脚功能,例如输入或输出 2. 数据寄存器:保存引脚输入电平或输出电平 3. 位控寄存器:控制某引脚为1或0 4. 锁定寄存器:锁定引脚配置(不允许修改) 1. GPIO的配置寄存器 每组端口有两个32位配置寄存器 配置寄存器低(Low)字GPIOx_CRL 配置寄存器高(High)字GPIOx_CRH (x是A~G) 配置寄存器低字CRL对应配置 低8位引脚Px0、Px1、……Px7 配置寄存器高字CRH对应配置 高8位引脚Px8、Px9、……Px15 GPIO的引脚配置 两个32位(一个64位)配置寄存器 每4位对应一个引脚 低2位设置其工作模式(MODE) 高2位设置其配置(CNF:Configuration) 共有4种输入功能、4种输出功能 GPIO的引脚配置功能表 2. GPIO的数据寄存器 每组端口有两个32位数据寄存器 一个是输入数据寄存器IDR 一个是输出数据寄存器ODR 都只使用其低16位、依次对应每个GPIO引脚 当设置GPIO引脚为输入模式时 从输入数据寄存器GPIOx_IDR的相应位读出 该I/O引脚的高(1)、低(0)电平 当配置GPIO引脚为输出模式时 向输出数据寄存器GPIOx_ODR相应位写入1或0 控制该I/O引脚为高(1)、低(0)电平 端口输入数据寄存器(GPIOx_IDR) 端口输出数据寄存器(GPIOx_ODR) 位输出问题 对输出数据寄存器某位写入时 要考虑其他位的状态,不能任意改变 需要首先读出输出数据寄存器的内容 修改相应位再写入 GPIO的输出数据寄存器ODR可以读出 用以支持位输出控制 3. GPIO的位控寄存器 每个端口有两个位控寄存器 只能写入、不能读出 某位写入1实现I/O引脚复位或置位 写入0对I/O引脚无影响(作用) 一个是位置位/复位寄存器BSRR 高16位控制引脚为低电平(复位BR:Bit Reset) 低16位控制引脚为高电平(置位BS:Bit Set) 一个是位复位寄存器BRR 低16位控制引脚为低电平(复位BR:Bit Reset) 端口位设置/复位寄存器(GPIOx_BSRR) 端口位复位寄存器(GPIOx_BRR) 4. GPIO的锁定寄存器 这个32位的端口配置锁定寄存器GPIOx_LCKR 用于冻结配置寄存器对I/O引脚功能的改变 当对端口执行了写入锁定序列后 被锁定引脚配置的工作模式不能再改变 直到下次复位后才被解锁 锁定功能可以防止程序随意改变GPIO配置 GPIO寄存器 stm32f10x_gpio.h定义的GPIO结构类型 每组端口具有7个寄存器 依次作为结构成员 定义结构体变量(指针) 通过结构成员访问寄存器 stm32f10x.h定义的GPIO基地址 定义基地址后,每组端口 被定义为指向这个基地址的结构类型指针 GPIO输出应用示例:LED亮灭控制 第一个应用程序:利用GPIO控制LED灯亮灭 俗称流水灯或跑马灯程序 LED在目标板上的连接(TEB-CM5000开发板) 使用PF3~P
文档评论(0)