【电子爱好者福音】中科蓝讯AB530x定时器示例

本文介绍了如何使用中科蓝讯AB530xSDK中的定时器4功能来实现600ms定时打印。通过配置TMR4CON、TMR4PR和TMR4CNT寄存器,设置定时器4为自增模式并启用中断。在中断处理函数timer4_isr中,每600us更新计数器,达到1000时打印一次。中断处理函数中的字符串需存储在RAM中的comm区以保证快速响应。
摘要由CSDN通过智能技术生成

哈喽,大家好。

今天给大家分享一下中科蓝讯 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、中科蓝讯蓝皮书《芯片框架简述》 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值