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

1. 滴答定时器

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

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

2. 滴答定时器原理

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

3. 定时器配置

cpp 复制代码
#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计数值正确

相关推荐
张海森-1688201 小时前
防止3.3v数字电源干扰到模拟电源3.3v 需做隔离,这里怎么实现
单片机
范纹杉想快点毕业2 小时前
自学嵌入式系统架构设计:有限状态机入门完全指南,C语言,嵌入式,单片机,微控制器,CPU,微机原理,计算机组成原理
c语言·开发语言·单片机·算法·microsoft
Blossom.1182 小时前
把大模型当“编译器”用:一句自然语言直接生成SoC的Verilog
数据库·人工智能·python·sql·单片机·嵌入式硬件·fpga开发
代码游侠10 小时前
ARM开发——阶段问题综述(二)
运维·arm开发·笔记·单片机·嵌入式硬件·学习
DLGXY10 小时前
STM32——旋转编码器计次(七)
stm32·单片机·嵌入式硬件
羽获飞11 小时前
从零开始学嵌入式之STM32——3.使用寄存器点亮一盏LED灯
单片机·嵌入式硬件
浩子智控12 小时前
商业航天计算机抗辐射设计
单片机·嵌入式硬件
独处东汉15 小时前
freertos开发空气检测仪之输入子系统结构体设计
数据结构·人工智能·stm32·单片机·嵌入式硬件·算法
czy878747516 小时前
机智云 MCU OTA可以对MCU程序进行无线远程升级。
单片机·嵌入式硬件
A9better18 小时前
嵌入式开发学习日志52——二值与计数信号量
单片机·嵌入式硬件·学习