预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共13页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

关于RTC的万年历实验 目的: 通过实验加深对实时时钟RTC结构和工作原理的理解和相关寄存器的应用; 通过UART传输数据并由PC机终端软件EasyARM.exe显示,复习异步串行口UART内容; 通过对《深入浅出ARM7》中万年历显示实验程序的修改添加,实现闹钟功能,以及通过按键可实现时钟和闹钟时间的调整。 仪器: ARM开发板一块、 装有ADS1.2及EasyJTAG仿真器的电脑一台 实验原理: 1.RTC功能结构如下图所示: 2.相关寄存器描述: (1)中断位置寄存器—InterruptLocationRegister(ILR–0xE0024000) (2)时钟控制寄存器—ClockControlRegister(CCR–0xE0024008) (3)计数器增量中断寄存器—CounterIncrementInterruptRegister(CIIR–0xE002400C) 计数器增量中断寄存器可使计数器每次增加时产生一次中断。在中断位置寄存器的位0(ILR[0])写入1之前,该中断一直保持有效。 (4)报警屏蔽寄存器—AlarmMaskRegister(AMR–0xE0024010) 对于报警功能来说,要产生中断,非屏蔽的报警寄存器必须匹配对应的时间计数器。只有当计数器之间的比较第一次从不匹配到匹配时,才会产生中断。向中断位置寄存器(ILR)的位写入1,会清除相应的中断。如果所有屏蔽位都置位,报警将被禁止。 实验程序:(见附录。) 实验结果: 通过EasyARM的万年历功能实现了实时时钟和闹钟时间的显示。同时LED1每秒间隔闪烁,到预设的闹钟时间(即报警时间)时,LED8闪烁三次后蜂鸣器开始播放“虹彩妹妹”的音乐,播放音乐同时LED1跟随音乐节奏闪烁。按键KEY1按一次,实时时钟计数停止,LED1长亮指示秒调整状态,可通过KEY3(减一)、KEY4(加一)调节秒。KEY1按两次,进入分钟调整状态,可通过KEY3(减一)、KEY4(加一)调节分钟。依次类推,可依次调整秒、分、时、星期、日、月、年;按键KEY2按一次,EasyARM显示闹钟时间,类似实时时钟调整功能,可通过按KEY2依次调整闹钟时间(由于程序中报警屏蔽寄存器AMR只是没屏蔽秒报警值,故只要所设的秒报警值与时钟秒计数值相等就会产生报警)。每次按键时,都有LED8闪烁一次和BEEP蜂鸣一声提示。 调试总结和体会: 经过整整一天的努力和老师同学的帮助,终于将实验调试成功了。 一开始,经过反复的调试终于实现了报警功能,然后在实验室通过老师的指导,实现了播放音乐过程中时钟实时更新功能以及实现LED灯跟随音乐节奏闪烁。再经过程序的改进,实现了实时时钟和闹钟调整功能。在同学建议下,添加了LED灯指示调整时间点(秒、分、时、星期、日、月、年)功能。 在调试过程中,总结了一些错误原因分析以及编程注意点: ①刚开始时,由于没注意格式书写,程序看起来很乱,在老师的建议下,将程序中函数的正反大括号对齐,这样程序变得更直观。 ②经过调试以及和同学的探讨,成功实现了KEY3和KEY4按键在最小值和最大值的变化。其中关键是使用类似if(SEC==0)SEC=59;elseSEC--;和if(SEC==59)SEC=0;elseSEC++;而自己原来是将类似SEC--和SEC++放在前面,由于SEC寄存器不能取-1值,所以SEC--放在前面时,不能减到00的状态,直接从01到59了。原来只是个顺序问题,让程序变得如此微妙。 ③在调试时,由于错在将#defineKEY11<<16后面多加了“;”导致调试时显示很多错误。从中发现,有时会因一个地方出错导致显示很多错误。同样的,有时也会是调试时只显示一个错误,但其实有多个地方有错。以后要注意这点。 ④在调整星期时发现,当7加一时竟变成0了。和同学讨论后得知原来星期寄存器只用了3为(26:24),所以当7加一时为8但第四位没被获取故只得0。以后多了解寄存器地址、结构等内部原理知识,这样一些问题就会迎刃而解。 ⑤调试时发现,当双击“{”或“}”所在行,则其所包含的函数体会用黑色显示,如下图,这样即可快速找到“{”或“}”的匹配括号,因此也可以很方便用来查错。 ⑥通过调试,掌握了按键释放程序的应用。程序中采用类似while((IO0PIN&KEY4)==0);语句,其作用与while(!(IO0PIN&KEY4));等价得知“!(IO0PIN&KEY4)”并不是取反的意思。程序中KEY1和KEY2采用等待按键释放,而为了按住按键时自动快速加减,KEY3和KEY4不用等待按键释放程序。 这次实验,我习得了不少,从中体会到多调试多实际操作练习将会发现很多的问题,同时在解决问题过程中可以获得很多知识。 再次,感谢老师的指导和同学的帮助。