[CW32F030系列]

【有那么点详细的CW32学习笔记】内核外设-滴答定时器

[复制链接]
274|3
手机看帖
扫描二维码
随时随地手机跟帖
CW32生态社区|  楼主 | 2024-4-29 10:59 | 显示全部楼层 |阅读模式
我们在前两节讲解了单片机启动到时钟树配置的内容,到此为止,单片机已经能开发别的功能并使用了,但这里我插入一个笔者个人觉得很重要的章节来介绍一个内核外设——滴答定时器(System Tick)。
根据cortex-M0+内核手册的介绍,这是一个24位倒计时定时器,它拥有4个可以访问的寄存器,
6be0de71fe36fc49395a0297f75463fd
这个定时器和一般的定时器用法没什么区别,他没有高级定时器的功能,但是由于是内核白送的定时器,所以经常用于单片机的心跳时钟。
值得注意的是,滴答定时器是一个不可修改计数方式的定时器,他只能向下计数,查阅寄存器定义之后,进行如下代码的初始化操作,即可实现1ms定时并开启定时器中断。
4a2d297bba7df1a8d90e4245934dfbc4
开启定时器并打开中断之后,定时器就能正常工作,并且会正常进入其对应的中断服务函数,中断服务函数的名字可以直接在启动文件中找到(还记得第一节讲的中断向量表吗?)。
68a9f98ede04cd9be60d18753f7b4037
一般情况下,芯片厂商不会主动提供滴答定时器的中断服务函数接口,也就是xxxxx_it.c文件中不会出现此中断服务函数的名字(CW32的库会提供一个参考stm32 hal库的固件库,但是我觉得写的不符合我的风格索性自己写了一个滴答定时器的文件),任何时候,只需要有这么个同名函数存在于工程文件中,该中断服务函数就能被正常调用并执行,例如这样:
773288842da1ada0e036e3c9687d7739
实际上,任何中断服务函数都可以用这种办法来重写一个自己的,只是大部分时候官方都已经提供了良好的固件库,也就不需要我们手动重写了。
这里编写了一个测试函数来测试滴答定时器是否正常工作,实际上是使用延时函数来验证的:
737ed41ae6a93fe17da3c5c16df24246 89cb51b092ab3e146c7d904f55bf7b89
那么结果当然是正常工作辣!
在这里给一些建议,上手一款新的芯片的时候,完全可以直接用滴答定时器点灯来测试和上手。
总结:
滴答定时器是内核外设,芯片手册不会记录它的用法,内核手册才会有它的用法。
滴答定时器可以作为整个程序的心跳时钟,非常常用。

使用特权

评论回复
AdaMaYun| | 2024-5-9 19:28 | 显示全部楼层
嘀嗒定时器确实很有用,在内核手册里面有使用方法

使用特权

评论回复
OKAKAKO| | 2024-5-11 11:10 | 显示全部楼层
楼主讲解的内核外设滴答定时器非常详细,学习一下

使用特权

评论回复
中国龙芯CDX| | 2024-5-20 18:16 | 显示全部楼层
确实一般手册将嘀嗒定时器的比较少

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

9

帖子

1

粉丝