stm8教程-第七章stm8s207gpio模块及其应用资料

上传人:w****i 文档编号:98764066 上传时间:2019-09-14 格式:DOC 页数:9 大小:914.37KB
返回 下载 相关 举报
stm8教程-第七章stm8s207gpio模块及其应用资料_第1页
第1页 / 共9页
stm8教程-第七章stm8s207gpio模块及其应用资料_第2页
第2页 / 共9页
stm8教程-第七章stm8s207gpio模块及其应用资料_第3页
第3页 / 共9页
stm8教程-第七章stm8s207gpio模块及其应用资料_第4页
第4页 / 共9页
stm8教程-第七章stm8s207gpio模块及其应用资料_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《stm8教程-第七章stm8s207gpio模块及其应用资料》由会员分享,可在线阅读,更多相关《stm8教程-第七章stm8s207gpio模块及其应用资料(9页珍藏版)》请在金锄头文库上搜索。

1、第七章 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 个引脚,每个引脚可以被独立编程作为数字

2、输入或者数字输出口。另外部分口还可能会有如模拟输入,外部中断,片上外设的输入/输出等复用功能。但是在同一时刻仅有一个复用功能可以映射到引脚上。复用功能的映射是通过选项字节控制的。请参考数据手册关于选项字节的描述。 每个 IO 口都有 5 个对应的寄存器,IO 的工作方式也由这 5 个寄存器控制,它们分别为: 1、数据方向寄存器 2、配置寄存器 1 3、配置寄存器 2 4、输出数据寄存器 5、输入数据寄存器 一个 I/O 口工作在输入还是输出是取决于该口的数据方向寄存器的状态。 7.1.1 GPIO 主要功能 1、端口的各个位可以被单独配置 2、可选择的输入模式:浮动输入和带上拉输入 3、可选择

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)用于对输入/输出进行配置。任

4、何一个 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如果对应位数

5、据方向寄存器 DDRx x 取值(0-7)的数值为0,即将对应引脚定义为输入;如果对应数据方向寄存器 DDRx 的数值为1,即将对应引脚定义为输出。 这里注意的地方是在 IAR 环境中,例如 PA 口定义为输出时,可以定义为PA_DDR = 0xFF,其它端口也一致。还有就是单独操作一个引脚时,可以这样定义 PA_DDR_DDR0 就是 PA 的第一个引脚,其他引脚也类似。2、配置寄存器 CR1、CR2CR1 和 CR2 是一起使用的,具体的功能是实现配置为上拉,悬浮,中断以及高速 IO 口等等功能。上图已经详细说明了 CR1,CR2 的功能使用方法。例如当配置为输出时,推挽模式,也是 PA

6、口,可以定义为 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、输入数据寄存器 I

7、DRIDR 实现的功能是:当 IO 口定义为输入时,通过读取 IDR 寄存器可以知道对应 IO 口的电平。这里简单说明当 PA0 定义为输入时,可以直接读取 PA0_IDR 寄存器来判断 PA0 电平的情况 if(PA_IDR & 0x01 = 1) /判断 PA0 口的状态 也可以单独读取一个 IO 口,例如 if(PA_IDR_IDR0 = 1) /效率比上面的更好 7.3 IO 口基础应用实例 本节以通用 IO 口简单应用的角度讲解如何控制 LED 灯和按键开关信号,通过几个实例的介绍,让读者掌握 IO 口的使用和编程方法。 7.3.1 输出设备 LED 控制实例 典型 LED 有阳极和

8、阴极两个引脚,LED 在正向偏置的状态下能够发光,通过通用 IO 口连接到 LED 的一个引脚,LED 另一个引脚接固定电平,即可点亮 LED。 本实例硬件连接如下图所示,PD03 端口连接 4 个 LED,编程实现明灯流水等操作。由电路图可知,使用 STM8S207 的 PD0PD3 端口控制 4 个 LED,PD0PD3 端口输出低电平点亮对应的 LED。本例中流水灯的流动速度没有实现精确控制,即延时时间没有精确计算,本书后面章节会讨论如何实现精确定时。 为了熟练使用 IAR,这里详细介绍这个实例的整个开发过程 1、 打开 IAR 软件,出现如下图所示:2、选择菜单 FileNewWork

9、space,新建一个 Workspace 3、选择 ProjectCreate New Project,新建一个工程,并学着 C 按 OK,选择保存路径保存。 4、选择 FileSaveWorkspace,保存 Workspace,出现下图所示5、编写程序代码就可以了,在 main 文件中添加如下代码,实现流水灯#include iostm8s207rb.h void delay_ms(int value); int main( void ) unsigned char i=0; /配置PD0PD3为输出模式 PD_DDR |= 0x0F; /0000 1111, 1为输出 PD_CR1 |=

10、 0x0F; /推挽输出 PD_CR2 = 0x00; while(1) /累加灯效果 PD_ODR = i & 0x0f; /先把i反转,再取低4位控制4个LED delay_ms(100); +i; /* * 简单延时程序 * */ void delay_ms(int value) int i,j; if(value Options,或者在 Workspace 窗口,选中 project 名字,右击选择选择Options 设置如下图所示:7、编译下载 按编译后,就会生成 hex 文件,在工程目录的 DebugExe 下面 8、下载,这里不详细说了,在第二章节中已经详细说明如下用串口下载程序

11、。7.3.2 输入设备按键开关读取实例 用户通过按键开关可以实现简单的输入控制。本实例按键开关的硬件连接如下图所示:由电路图可知,使用 STM8S207 的 PD5PD7 端口读取 3 个按键的状态。本例依然使用上面所使用的 LED 灯控制电路,使用 STM8S207 的 PD5PD7 端口控制LED1LED3 三个 LED 灯,考虑通过 3 个 LED 灯的亮灭反应 3 个按键的状态情况。 实例程序如下所示。 #include iostm8s207rb.h typedef unsigned char uchar; void delay_ms(int value); int main( voi

12、d ) /PD0-PD2输出LED PD5-PD7按键输入 PD_DDR = 0x07; /低三位输出 PD_CR1 = 0xFF; PD_CR2 = 0x00; /输出选择推挽,输入选择上拉 while(1) PD_ODR = (PD_IDR & 0xE0)5; delay_ms(10); /* * 简单延时程序 * */ void delay_ms(int value) int i,j; if(value 1) value = 1; for(i=0;i!=value;+i)for(j=0;j!=5000;+j); 编译下载后就可以验证实验的结果。 7.4 本章小结 本章开始了 STM8S207 的实例编程,这里选择了最为简单的 IO 操作的编程,同时希望读者在熟悉 STM8S207 的基本 IO 口操作后可以实现更多更为复杂的功能

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号