资源预览内容
第1页 / 共63页
第2页 / 共63页
第3页 / 共63页
第4页 / 共63页
第5页 / 共63页
第6页 / 共63页
第7页 / 共63页
第8页 / 共63页
第9页 / 共63页
第10页 / 共63页
亲,该文档总共63页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
CORTEX-M3+UCOS-II 嵌入式系统开发入门与应用 作者:华清远见 第第 5 章章 STM32F103处理器内部资源处理器内部资源C编程与实例编程与实例 专业始于专注 卓识源于远见 2 5.1 I/O 控制模块控制模块 C 编程与实例编程与实例 5.1.1 实例内容与目标实例内容与目标 熟悉 STM32F103 处理器 I/O 编程方法; 通过实验掌握 STM32F103 处理器 I/O 控制 LED 显示的方法; 学习 LED 驱动原理。 5.1.2 I/O 控制模块操作原理控制模块操作原理 (1)STM32F103 处理器 I/O 控制工作原理。 STM32F103 处理器有 AE 5 组输入/输出端口, 每组端口都拥有自己的 2 个 32bit 寄存器 (GPIOx_CRL 和 GPIOx_CRH) 、2 个 32bit 数据寄存器(GPIOx_IDR 和 GPIOx_ODR) 、1 个 32bit set/reset 寄存器 (GPIOx_BSRR) 、1 个 16bit reset 寄存器(GPIOx_BRR)和 1 个 32bit 锁定寄存器(GPIOx_LCKR) 。 每组端口都有复用的功能,例如可以作为输入/输出端口,还可以定义为中断触发功能,用户可以通过软件 配置寄存器来满足不同系统和设计的需要。在运行主程序之前,必须先对每一个用到的引脚的功能进行设 置。如果某些引脚的复用功能没有使用,那么可以先将该引脚设置为通用 I/O 端口。 I/O 端口的配置过程类似,因此接下来主要以 GPIO E 端口作为对象来讲解端口配置的方法。 端口配置低寄存器 表 5.1 所示显示了低寄存器的定义。 表 5.1 端口配置低寄存器定义 比 特 位 定 义 Bits:31:30,27:26,23: 22,19:18,15:14,11: 10,7:6,3:2 软件可写位,配置相应的 I/O 端口。 输入模式(mode1:0 = 00) : 00:模拟输入模式 01:浮点输入 10:输入上拉/下拉 11:保留位 输出模式(mode1:000) : 00:通用功能输出上拉 01:通用功能输出 Open-drain 10:转换功能输出上拉 11:转换功能输出 Open-drain Bits29:28,25:24,21:20, 17:16,13:12,9:8,5: 4,1:0 软件可写位,配置相应的 I/O 端口。 00:输入模式 01:输出模式,最大速率 10MHz 10:输出模式,最大速率 2MHz 11:输出模式,最大速率 50MHz 端口配置高寄存器 表 5.2 所示为端口配置高寄存器的定义。 表 5.2 端口配置高寄存器定义 比 特 位 定 义 Bits:31:30,27:26,23: 22,19:18,15:14,11: 10,7:6,3:2 软件可写位,配置相应的 I/O 端口。 00:模拟输入模式 01:浮点输入 专业始于专注 卓识源于远见 3 10:输入上拉/下拉 11:保留位 Bits29:28,25:24,21:20, 17:16,13:12,9:8,5: 4,1:0 软件可写位,配置相应的 I/O 端口。 输入模式(mode1:0 = 00) : 00:模拟输入模式 01:浮点输入 10:输入上拉/下拉 11:保留位 输出模式(mode1:000) : 00:通用功能输出上拉 01:通用功能输出 Open-drain 10:转换功能输出上拉 11:转换功能输出 Open-drain 端口输入数据寄存器 GPIO 端口数据可以通过该寄存器读入。表 5.3 所示为端口输入数据寄存器的定义。 表 5.3 端口输入数据寄存器定义 Bits31:16 保留位,读出数据为 0 Bits:15:0 IDRx15:0:端口输入数据(x = 0, , 15) 该寄存器为只读寄存器并且只能在字模式下访问;读出数据为相应 I/O 端口的输入值 端口输出数据寄存器 地址偏移量:0Ch;初始值:00000000h。 GPIO 端口数据可以通过该寄存器输出。表 5.4 所示为端口输出数据寄存器的定义。 表 5.4 端口输出寄存器定义 Bits31:16 保留位,读出数据为 0 Bits:15:0 IDRx15:0:端口输入数据(x = 0, , 15) 该寄存器为可读/可写寄存器,只能在字模式下访问。 注意:该寄存器允许原子操作(设置/重启) ,每一位允许单独操作。通过对 GPIOx_BSRR 寄存器的操作,可以设置或重启任一比特位 比特位设置/重启寄存器 GPIOx_BSRR 地址偏移量:10h;初始化值:00000000h。 表 5.5 所示为比特位设置/重启寄存器的定义。 表 5.5 比特位设置/重启寄存器定义 Bits31:16 BRx:reset bit x(x = 1, , 15) 该寄存器为只写寄存器,而且仅能在字模式下访问。 0:对相应 ODRx 位不做任何操作。 1:重启 ODRx 相应位。 注意:如果同时设置了 BSx 和 BRx,BSx 具有较高优先级 Bits:15:0 BSx:相应的 x 位置位(x = 1, , 15) 该寄存器为只写寄存器而且仅能在字模式下访问。 0:对相应 ODRx 位不做任何操作。 1:ODRx 相应位置位 端口位重启寄存器 GPIOx_BRR 地址偏移量:14h;初始化值:00000000h。 表 5.6 所示为端口位重启寄存器的定义。 专业始于专注 卓识源于远见 4 表 5.6 端口位重启寄存器定义 Bits31:16 保留位 Bits:15:0 BSx:重启相应的 x 位(x = 1, , 15) 该寄存器为只写寄存器,而且仅能在字模式下访问。 0:对相应 ODRx 位不做任何操作; 1:重启相应 ODRx 位。 注意:如果同时设置了 BSx 和 BRx,BSx 具有较高优先级 端口配置锁定寄存器 GPIOx_LCKR 当该寄存器的 bit16(LCKK)通过正确的序列写入时,I/O 端口位配置被锁定。Bit15:0用于锁定 GPIO 的 配置。当对 bit16 进行写操作时,LCKR15:0不允许变化。 配置锁定寄存器的每一位对应控制寄存器(CRL,CRH)的 4 个 bit 位。 地址偏移量:18h;初始化值:00000000h。 (2)LED 结构及发光原理。 50 年前人们已经了解半导体材料可产生光线的基本知识,第一个商用二极管产生于 1960 年。LED (Light Emitting Diode,发光二极管)的基本结构是一块电致发光的半导体材料,置于一个有引线的 架子上,然后四周用环氧树脂密封,起到保护内部芯线的作用,所以 LED 的抗震性能好。 LED 结构如图 5.1 所示。 图 5.1 LED 结构图 发光二极管的核心部分是由 P 型半导体和型半导体组成的晶片,在 P 型半导体和型半导体之间有 一个过渡层,称为 PN 结。在某些半导体材料的 PN 结中,注入的少数载流子与多数载流子复合时会把 多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN 结加反向电压,少数载流子难以注 入,故不发光。这种利用注入式电致发光原理制作的二极管叫发光二极管,通称 LED。当它处于正向 工作状态时(即两端加上正向电压) ,电流从 LED 阳极流向阴极时,半导体晶体就发出从紫外到红外 不同颜色的光线,光的强弱与电流有关。 LED 光源的特点 电压:LED 使用低压电源,供电电压在为 6V24V,根据产品不同而异,所以它是一个比使用高压电 源更安全的电源,特别适用于公共场所。 效能:消耗能量较同光效的白炽灯减少 80%。 适用性:其体积很小,每个单元 LED 小片是 35mm2的正方形,所以可以制备成各种形状的器件,并 且适合于易变的环境。 稳定性:连续工作 10 万小时,光衰为初始的 50%。 响应时间:白炽灯的响应时间为毫秒级,LED 灯的响应时间为纳秒级。 对环境污染:无有害金属汞。 颜色:改变电流可以变色,发光二极管方便地通过化学修饰方法,调整材料的能带结构和带隙,实现 红黄绿兰橙多色发光。如小电流时为红色的 LED,随着电流的增加,可以依次变为橙色、黄色,最后为绿 色。 价格:LED 的价格比较昂贵,较之于白炽灯,几只 LED 的价格就可以与一只白炽灯的价格相当,而通 常每组信号灯需由上 300500 只二极管构成。 单色光 LED 的种类及其发展史 专业始于专注 卓识源于远见 5 最早应用于半导体 P-N 结发光原理制成的 LED 光源问世于 20 世纪 60 年代初。 当时所用的材料是 GaAsP, 发红光(p = 650nm) ,在驱动电流为 20mA 时,光通量只有千分之几个流明,相应的发光效率约 0.1 流明/ 瓦。 20世纪70年代中期, 引入元素In和N, 使LED产生绿光 (p = 555nm) 、 黄光 (p = 590nm) 和橙光 (p = 610nm) , 光效也提高到 1 流明/瓦。 到了 20 世纪 80 年代初,出现了 GaAlAs 的 LED 光源,使得红色 LED 的光效达到 10 流明/瓦。 20 世纪 90 年代初,发红光、黄光的 GaAlInP 和发绿、蓝光的 GaInN 两种新材料的开发成功,使 LED 的光 效得到大幅度的提高。在 2000 年,前者做成的 LED 在红、橙区(p = 615nm)的光效达到 100 流明/瓦,而 后者制成的 LED 在绿色区域(p = 530nm)的光效可以达到 50 流明/瓦。 单色光 LED 的应用 最初 LED 用作仪器仪表的指示光源,后来各种光色的 LED 在交通信号灯和大面积显示屏中得到了广泛应 用,产生了很好的经济效益和社会效益。以 12 英寸的红色交通信号灯为例,本来是采用长寿命、低光效 的 140 瓦白炽灯作为光源,它产生 2 000 流明的白光。经红色滤光片后,光损失 90%,只剩下 200 流明的 红光。而在新设计的灯中,Lumileds 公司采用了 18 个红色 LED 光源,包括电路损失在内,共耗电 14W, 即可产生同样的光效。 汽车信号灯也是 LED 光源应用的重要领域。1987 年,我国开始在汽车上安装高位刹车灯,LED 响应速度 快(纳秒级) ,可以及早让后车司机知道行驶状况,减少汽车追尾事故的发生。 另外,LED 灯在室外红、绿、蓝全彩显示屏,匙扣式微型电筒等领域都得到了应用。 LED 驱动 由于单只 LED 管的工作电压低(1.5V2V) ,个别需达到 4V,同时工作电流仅为 1mA5mA,因此可以用 CPU 的通用输入/输出管脚(GPIO)就可直接控制。 图 5.2 所示为 STM32V100 评估板中由 CPU 直接驱动控制 LED 的原理图。以 LD1 为例,它的阳极通过串 联电阻接在CPU 的 PC6 管脚上,阴极接地。假设 LD1 的正向导通压降为 1.5V,当 PC6 输出高电平时,LD1 将会有电流通过,并导致 LD1 发光。反之,当 PC6 输出低电平是,LD1 几乎没有电流通过,因此将不会 发光。 图 5.2 LED 硬件连接图 5.1.3 I/O 控制实例操作步骤控制实例操作步骤 (1)准备实验环境:连接好主机 linker 目标板。 (2)启动 Keil Version 3,打开所需工程 GPIO.Uv
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号