杰发科技AC7801——滴答定时器获取时间戳

打印 上一主题 下一主题

主题 916|帖子 916|积分 2748

1. 滴答定时器

杰发科技7801内部有一个滴答定时器,该定时器是M0+核自带的,因此可以直接用该定时器来获取时间戳。
同样,7803也可以利用该方式获取时间戳。

2. 滴答定时器原理

SysTick是一个24位的递减计数器,它从预设的重装载值开始,每经过一个系统时钟周期,计数值就减1。当计数器的值递减到0时,如果SysTick中断使能,处置惩罚器将产生一个SysTick非常(非常号通常为15),并跳转到SysTick中断服务例程(ISR)执行相应的中断处置惩罚代码。此时,计数器会自动从重装载寄存器中重新加载初值,开始新一轮的递减计数。

3. 定时器配置

  1. #include "ac780x.h"
  2. #include "timer_sample.h"
  3. #include <stdint.h>
  4. #include "core_cm0plus.h"
  5. void systick_init(void) {
  6.     // 配置 SysTick 重装载值为最大值
  7.     SysTick->LOAD = 0xFFFFFF; // 24-bit 最大值
  8.         // 配置寄存器
  9.         SysTick->CTRL = 0x00010007;
  10. }
  11. uint32_t tick_count[100];
  12. unsigned char cou = 0;
  13. int main(void) {
  14.     // 初始化 SysTick
  15.     systick_init();
  16.         TIMER_Clock(); //1ms定时器初始化
  17.         InitDelay();
  18.        
  19.     while (1)
  20.     {
  21.                          if(g_timer0Count)
  22.                                 {
  23.                                         g_timer0Count = 0;
  24.                                        
  25.                                         tick_count[cou] = SysTick->VAL;
  26.                                         cou++;
  27.                                 }
  28.     }
  29.     return 0;
  30. }
复制代码
4. 寄存器状态



5. 注意

 注意7801自带的Initdelay()也是利用systick
实测初始化delay不影响滴答计数



6. 效果

图中的数值两两相减列出效果,48M主频 1ms计数值正确




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

自由的羽毛

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表