STM8教程-第七章 STM8S207 GPIO模块及其应用.docxVIP

STM8教程-第七章 STM8S207 GPIO模块及其应用.docx

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
STM8教程-第七章 STM8S207 GPIO模块及其应用

第七章 STM8S207 GPIO模块及其应用本章终于开始 STM8S207 的例程编写了,通过前面章节的学习,相信对STM8S207 已经有了一定的认识。本章从 STM8S207 最简单的 IO 口模块开始STM8S207 的编程。 7.1 GPIO 简介 STM8S207 内部有非常丰富的输入、输出端口资源,同时也集成了多种功能模块,其输入、输出引脚大多为复用引脚。STM8S207 单片机的 IO 口包括 PA、PB、PC、PD、PE、PF、PG、PI 等 52 个 IO 口 通用输入/输出口用于芯片和外部进行数据传输。一个 IO 端口可以包括多达8 个引脚,每个引脚可以被独立编程作为数字输入或者数字输出口。另外部分口还可能会有如模拟输入,外部中断,片上外设的输入/输出等复用功能。但是在同一时刻仅有一个复用功能可以映射到引脚上。复用功能的映射是通过选项字节控制的。请参考数据手册关于选项字节的描述。 每个 IO 口都有 5 个对应的寄存器,IO 的工作方式也由这 5 个寄存器控制,它们分别为: 1、数据方向寄存器 2、配置寄存器 1 3、配置寄存器 2 4、输出数据寄存器 5、输入数据寄存器 一个 I/O 口工作在输入还是输出是取决于该口的数据方向寄存器的状态。 7.1.1 GPIO 主要功能 1、端口的各个位可以被单独配置 2、可选择的输入模式:浮动输入和带上拉输入 3、可选择的输出模式:推挽式输出和开漏输出 4、数据输入和输出采用独立的寄存器 5、外部中断可以单独使能和关闭 6、输出摆率控制用以减少 EMC 噪声 7、片上外设的 I/O 功能复用 8、当作为模拟输入时可以关闭输入施密特触发器来降低功耗 9、在数据输出锁存时支持读-修改-写 10、输入兼容 5V 电压 11、I/O 口工作电压范围为 1.6 V 到 VDDIOmaxGPIO 模块框图7.2 IO 口的配置和使用 每一个端口都有一个输出数据寄存器 (ODR),一个引脚输入寄存器 (IDR)和一个数据方向寄存器 (DDR)。 控制寄存器 1(CR1)和控制寄存器 2(CR2)用于对输入/输出进行配置。任何一个 I/O 引脚可以通过对 DDR、CR1 和 CR2 寄存器的相应位进行编程来配置。寄存器中的位 n 对应于口的引脚 n 。STM8S 的每个 IO 端口都有 5 个寄存器来控制,CR1 和 CR2 一起配置模式,DDR方向控制,ODR 输出数据寄存器,IDR 输入数据寄存器。 7.2.1 IO 口端口寄存器设置 除了 IO 口默认功能外,要使用 IO 口操作时,必须先设置 IO 口寄存器,让对应 IO 口工作于实际所需的功能。这里分别讲解 DDR 方向寄存器,CR1 和 CR2配置寄存器,输出时的 ODR 输出数据寄存器以及 IDR 输入数据寄存器。 1、方向寄存器 DDR如果对应位数据方向寄存器 DDRx x 取值(0-7)的数值为?0ā,即将对应引脚定义为输入;如果对应数据方向寄存器 DDRx 的数值为?1ā,即将对应引脚定义为输出。 这里注意的地方是在 IAR 环境中,例如 PA 口定义为输出时,可以定义为PA_DDR = 0xFF,其它端口也一致。还有就是单独操作一个引脚时,可以这样定义 PA_DDR_DDR0 就是 PA 的第一个引脚,其他引脚也类似。2、配置寄存器 CR1、CR2CR1 和 CR2 是一起使用的,具体的功能是实现配置为上拉,悬浮,中断以及高速 IO 口等等功能。上图已经详细说明了 CR1,CR2 的功能使用方法。例如当配置为输出时,推挽模式,也是 PA 口,可以定义为 PA_CR1 = 0xFF; PA_CR2 = 0x00; 当然,当定义单独一个引脚时,分别定义为 PA_CR1_C10 = 1; //PA0 PA_CR2_C20 = 0; 3、输出数据寄存器 ODR当对应 IO 口定义为输出时,如何输出一个让程序控制的数值呢?这就要用到输出数据寄存器。具体实现的是当向对应的输出数据寄存器写入数据时,这个数值就会在对应的引脚中产生相应的高低电平,具体实现办法是,例如 PA0 输出高电平可以定义为 PA_ODR |= 1; //其它寄存器已经配置好当然也可以单独一个位操作 PA_ODR_ODR0 = 1; //效率比上面的更高 4、输入数据寄存器 IDRIDR 实现的功能是:当 IO 口定义为输入时,通过读取 IDR 寄存器可以知道对应 IO 口的电平。这里简单说明当 PA0 定义为输入时,可以直接读取 PA0_IDR 寄存器来判断 PA0 电平的情况 if(PA_IDR 0x01 == 1) //判断 PA0 口的状态 也可以单独读取一个 IO 口,例如 if(PA_IDR_IDR0 == 1) //效率比上面的更好 7

文档评论(0)

有一二三 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档