当前位置: 首页 > article >正文

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

1. 滴答定时器

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

同样,7803也可以使用该方式获取时间戳。

2. 滴答定时器原理

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

3. 定时器配置


#include "ac780x.h"
#include "timer_sample.h"
#include <stdint.h>

#include "core_cm0plus.h"

void systick_init(void) {
    // 配置 SysTick 重装载值为最大值
    SysTick->LOAD = 0xFFFFFF; // 24-bit 最大值
	// 配置寄存器
	SysTick->CTRL = 0x00010007; 
}

uint32_t tick_count[100];
unsigned char cou = 0;

int main(void) {
    // 初始化 SysTick
    systick_init();
	TIMER_Clock(); //1ms定时器初始化
	InitDelay();
	
    while (1) 
    {

			 if(g_timer0Count)
				{
					g_timer0Count = 0;
					
					tick_count[cou] = SysTick->VAL;
					cou++;
				}
    }

    return 0;
}

4. 寄存器状态

5. 注意

 注意7801自带的Initdelay()也是使用systick

实测初始化delay不影响滴答计数

6. 结果

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


http://www.kler.cn/a/568085.html

相关文章:

  • 2025春新生培训数据结构(树,图)
  • HTML 日常开发常用标签
  • RabbitMQ—保障消费者的可靠性和机制与策略
  • 【Vue教程】使用Vite快速搭建前端工程化项目 Vue3 Vite Node.js
  • 怎么写C#命令行参数程序,及控制台带参数案例(程序完整源码)下载
  • 【造个轮子】使用Golang实现简易令牌桶算法
  • 数据库测试
  • 蓝桥杯---归并排序算法题目(leetcode第912题)
  • 【SQL】MySQL中的字符串处理函数:concat 函数拼接字符串,COALESCE函数处理NULL字符串
  • 供应链管理系统--升鲜宝门店收银系统功能解析,登录、主界面、会员 UI 设计图(一)
  • 构建神经网络之常用pandas(补充中 )
  • JEEWMS departController.do存在SQL注入(DVB-2025-8837)
  • 【Python爬虫(93)】爬虫项目的安全防线:审计与合规攻略
  • Cocos Creator3.8.6拖拽物体的几种方式
  • java23种设计模式-备忘录模式
  • 本地部署阿里的万象2.1文生视频(Wan2.1-T2V-1.3B)模型
  • 【文献阅读】A Survey Of Resource-Efficient LLM And Multimodal Foundation Models
  • 前端开发核心知识点深度解析:从CSS到Vue的全面指南
  • 力扣hot100——回溯
  • DeepSeek 助力 Vue3 开发:打造丝滑的网格布局(Grid Layout)