中科蓝讯 AB530x 定时器示例

哈喽,大家好。

今天给大家分享一下中科蓝讯 AB530x 的定时器功能。 本文使用的 SDK 版本为:sdk_ab530x_v06x_s7356_20220827,样机为 AB5301A 开发板,用中科蓝讯 AB530x 的定时器 4 做一个 600ms 定时打印一次的示例,先介绍配置的寄存器,后做定时器程序介绍。 希望对大家进行定时器调试时有所帮助。

1、定时器 4 寄存器介绍

(1) TMR4CON

定时器 4 特殊功能寄存器; 600ms 定时打印一次的示例功能用到的是位 0:使能定时器,位(3:2):定时器工作模式选择,选择定时器自增模式(01),位 7:定时器溢出中断使能,位 16:定时器中断标志位。 还需做定时器其它配置可参考 ab53xx_usermanual。

(2) TMR4PR

定时器 4 周期寄存器; 周期为 ((TMR4PR + 1)*(1 /1M))s,默认分频时钟是 1M。

(3)TMR4CNT

定时器 4计数寄存器; 当定时器 4 使能时TMR4CNT将开始增加,默认 (1/1M) 秒加 1。 当TMR4CNT 的值与 TMR4PR 相等时将发生溢出,同时 TMR4CNT将被清除为 0x0000 重新开始计数,中断标志位将被设置为 “1”。

(4) TMR4CPND

定时器 4 清除挂起寄存器; 对该寄存器第 16 位写 1,清除定时器 4 中断标志位。

2、定时器 4 程序验证

(1) 定时器 4 初始化函数

 

系统时钟 26M,定时器 4 的时钟默认是 26 分频,即为 1M。 TMR4CNT(1/1M) 秒加 1,又 TMR4PR 为 (600 - 1),因此 600us 进一次中断处理函数 timer4_isr()。 TMR4CON 位 0 设置为 0,暂不使能计时。

(2)定时器  4 中断处理函数


sys_cb.timer4_cnt 变量 600us 加 1,当值为 1000 时,打印一次。

另外,中断处理函数特别说明一下打印的字符串为何放在数组 str_t4[],以及语句 AT(...... ) 的作用。 首先,在函数前面加入 AT(...... ) 用于指定数组或者函数存放到 comm 区(.com_rodata.isr 和 .com_text.isr 都是 comm 区中的段)。 中断处理函数需要非常及时地响应, comm 区程序常驻于 RAM 中, CPU 可以迅速响应中断处理函数。 printk 函数(printf 函数重命名)中的字符串常量默认是放在bank区中, 如果在中断处理函数中需要调用 printk 函数, 也需要把字符串常量放入 com 区,否则有可能会导致死机。

(3)定时器 4 初始化函数调用

 

(4)定时器 4 使能

 

单击 PWRKEY 按键,使能或者失能定时器 4。

(5)打印结果

  

把程序下载到开发板,勾选 Downloader “格式”选项卡里的 “时间戳”,打印结果如上,600ms 打印一次 T4。

中科蓝讯 AB530x 的定时器功能就介绍到这里,希望可以在大家进行定时器调试时帮助到大家。 如有错误欢迎大家批评指正。 如果大家还有什么其他的问题或者功能想要询问,亦可以在评论区中提出,可以共同探讨,一起进步。

参考文档:

1、ab53xx_usermanual

2、ab5301a_datasheet.pdf

3、中科蓝讯蓝皮书《芯片框架简述》 

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论