电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区首页
文章
GD32VF103之使用systick计时器实现1ms延时
分 享
扫描二维码分享
GD32VF103之使用systick计时器实现1ms延时
兆易创新
RISC-V
gcrisis
关注
发布时间: 2020-09-21
丨
阅读: 1785
现在大部分芯片都有systick,它是内核的定时器,操作系统一般都是通过它来产生滴答。gd32vf103的systick是一个64位的定时器,可以实现系统计时、比较中断、软件中断等功能。它上电后自动开始自增计数,所以我们不需要做什么配置就可以获取到系统运行的时间。 本文介绍如何使用systick实现毫秒的延时函数delay_1ms(int millis)。 参考《Bumblebee core datasheet_cn》(bumblebee内核数据手册),可以找到systick的介绍,手册中它叫计时器单元(TIMER)。 它的基地址我找了很久找不到,只能看一下官方sdk,值为**0xd1000000**。它的寄存器如下所示: ![](https://cf01.ickimg.com/bbsimages/202009/334f080c6a5cabdef168d815e93a6f63.png) 0x0和0x4分别是计时单元的低32位和高32位,使用的时候读取然后将他们拼起来即可。 ![](https://cf01.ickimg.com/bbsimages/202009/bc18cc396ea3b1ad59db50d2883432ab.png) 从寄存器中读取的值是systick自增计数,我们需要将它转换成时间。在《GD32VF103_User_Manual_CN_V1.2》中复位和时钟单元一章提到AHB时钟4分频后作为systick的时钟。 ![](https://cf01.ickimg.com/bbsimages/202009/23e654ed5b778a69c1a00818ecf25a5b.png) AHB的频率我们是知道的,这样就可以算出来1毫秒需要多少个systick。 ![](https://cf01.ickimg.com/bbsimages/202009/8897e265ead94cdd643e05c2dc13f3c5.png) SystemCoreClock是系统时钟频率(这里AHB时钟与系统时钟相等),除以4就是systick的时钟频率,即1s的ticks;再除以1000就是1ms的ticks。 有了延时函数,我们就能准确控制代码的执行时间。 ![](https://cf01.ickimg.com/bbsimages/202009/02f51cf0366ea0d6d3adaa83aed61492.png) 下一篇讲讲串口的最小配置,在嵌入式领域串口太重要了,调通它对以后的开发必不可少。 ![](https://cf01.ickimg.com/bbsimages/202009/d79320eb842deb98409496df410c5301.jpg)
原创作品,未经权利人授权禁止转载。详情见
转载须知
。
举报文章
点赞
(
0
)
gcrisis
关注
评论
(0)
登录后可评论,请
登录
或
注册
相关文章推荐
MK-米客方德推出工业级存储卡
Beetle ESP32 C3 蓝牙数据收发
Beetle ESP32 C3 wifi联网获取实时天气信息
开箱测评Beetle ESP32-C3 (RISC-V芯片)模块
正点原子数控电源DP100测评
DP100试用评测-----开箱+初体验
Beetle ESP32 C3环境搭建
【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏之二
X
你的打赏是对原创作者最大的认可
请选择打赏IC币的数量,一经提交无法退回 !
100IC币
500IC币
1000IC币
自定义
IC币
确定
X
提交成功 ! 谢谢您的支持
返回
我要举报该内容理由
×
广告及垃圾信息
抄袭或未经授权
其它举报理由
请输入您举报的理由(50字以内)
取消
提交