- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ARM7实训教案-精确定时的交通灯电路
教 案 课题序号 1 授课班级 授课时间 第十五周 授课形式 讲练结合 授课章节 名 称 精确定时的交通灯电路 教学目的 复习学过的有关GPIO控制、中断控制和定时器控制的所有内容,设计并实现一个精确定时的交通灯电路。 教学重点 1、熟悉C语言的程序设计思路 ?2、掌握GPIO口相关寄存器的设置 3、掌握定时计数器相关寄存器的设置 4、训练学生结合硬件开发平台,提高对ARM软件程序的分析设计 能力 教学难点 掌握定时器匹配功能寄存器的设置与初始化 2、掌握精确定时的寄存器设置 更新、补 充、删节 内 容 无 课外作业 无 教学后记 定时器本身不能定时,必须结合匹配功能实现。要详细推导公式,使学生掌握定时值的设置方式。 授 课 主 要 内 容 或 板 书 设 计 (请您谈谈简易交通灯的的缺陷。 (项目描述 运用ARM实训平台的GPIO口和定时计数器控制南北方向的绿灯、黄灯、红灯;东西方向的绿灯、黄灯、红灯,实现精确定时的交通灯功能。 (交通灯控制的基本原理 图 交通灯控制电路 (GPIO寄存器描述 (定时器结构图 (分频器寄存器描述 名称 描述 访问 复位值 PR 预分频控制寄存器。用于设定预分频值,为32位寄存器。 读写 0 PC 预分频计数器。为32位计数器,计数频率为PCLK,当计数值等于预分频计数器的值时,TC计数器加1。 读写 0 TC 定时器计数器。为32位计数器,计数频率为PCLK经过预分频计数器后频率值。 读写 0 (匹配功能寄存器描述-匹配控制寄存器 匹配控制寄存器用于控制在发生匹配时定时器所执行的操作。 位 功能 描述 复位值 0 中断(MR0) 为1时,MR0与TC值的匹配将产生中断。为0时禁止。 0 1 复位(MR0) 为1时,MR0与TC值的匹配将使TC复位。为0时禁止。 0 2 停止(MR0) 为1时,MR0与TC值的匹配将清零TCR的bit0位,使TC和PC停止。为0时该特性被禁止。 0 5 : 3 MR1 与匹配0(MR0)对应位功能相同(略) 0 8 : 6 MR2 0 11 : 9 MR3 0 (匹配功能寄存器描述-匹配寄存器 匹配寄存器(MR0~MR3)值与定时器计数值相比较,当两个值相等时自动触发在MCR寄存器中设置的动作。 位 31 : 0 复位值 功能 匹配值 0 (控制寄存器-TCR 定时器控制寄存器TCR用于控制定时器计数器的操作。 TCR 功能 描述 复位值 0 计数器使能 1:定时器计数器和预分频计数器使能计数; 0:定时器计数器和预分频计数器停止计数。 0 1 计数器复位 为1时定时器计数器和预分频计数器在PCLK的下一个上升沿同步复位。计数器在TCR的bit1恢复为0之前保持复位状态。 0 (中断标志寄存器-IR 中断寄存器包含4个位用于匹配中断,另外4个位用于捕获中断。如果有中断产生,IR中的对应位会置位。向对应的IR位写入1会复位中断,写入0无效。 位 功能 描述 位 功能 描述 0 MR0中断 匹配0中断 4 CR0中断 捕获0中断 1 MR1中断 匹配1中断 5 CR1中断 捕获1中断 2 MR2中断 匹配2中断 6 CR2中断 捕获2中断 3 MR3中断 匹配3中断 7 CR3中断 捕获3中断 (定时计数器应用举例 #include config.h“ #define BUZZER (0 10) #define PORTDIR (0 25) void Time0Init(void) { T0PR = 99; // 设置定时器0分频为100分频,得110592Hz T0MCR = 0x03; // 匹配通道0匹配中断并复位T0TC T0MR0 = 110592; // 比较值(1S定时值) T0TCR = 0x03; // 启动并复位T0TC T0TCR = 0x01; } int main(void) { PINSEL0 = 0 PINSEL1 = 0 IO0DIR = BUZZER | PORTDIR; IO0SET = PORTDIR; Time0Init(); // 初始化定时器0 while(1) { while((T0IR 0x01) == 0) { ; } T0IR = 0x01; // 清除中断标志 if((IO0SET BUZZER) == 0) {
文档评论(0)