Q:怎样设计ARM处理器汇编语言程序使用定时器中断实现实时时钟?
A:此前我们曾使用轮询定时器I/O的方式实现实时时钟,而在本实验中将采用定时器中断的方式。新增第三个中断源A9 Private Timer,对该定时器进行配置,每1/100秒产生一次中断。 修改上一期实验的主程序,添加代码用于调用配置A9 Private Timer产生中断的子程序CONFIG_PRIV_TIMER。定义一个全局变量TIME作为实时时钟,以SS:DD的形式显示该实时时钟,其中SS为秒,DD为百分之一秒,当时钟增加到59:99时,再从00:00开始重新计时。
下载程序到DE1-SoC开发板后,观察实验现象除了上一期实验的LED计数器之外,还有新增的实时时钟功能:HEX[1:0]从00到99(百分秒)循环计数,每计数到99时,HEX[3:2]显示的秒数增加1直到59,再从0重新开始计数直到59;任意KEY,时钟会停止计时;再次按下任意KEY,时钟会从上一次停止的时间开始继续计时。