杰发科技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计数值正确

相关推荐
DOMINICHZL26 分钟前
STM32 RTC实时时钟详解与HAL库实战教程
stm32·单片机
亿道电子Emdoor30 分钟前
【ARM】DS如何查看工程的堆栈使用情况
arm开发·stm32·单片机·arm
子豪-中国机器人2 小时前
2月28日,三极管测量,水利-51单片机
单片机·嵌入式硬件·51单片机
陌夏微秋2 小时前
STM32单片机芯片与内部111 STM32 DSP内核 介绍 功能 库与源码
stm32·单片机·嵌入式硬件·硬件架构·硬件工程·信息与通信·智能硬件
盐析大白兔2 小时前
STM32G431RBT6——(2)浅析Cortex-M4内核
stm32·单片机·嵌入式硬件
桀骜陷阱5 小时前
【江科协-STM32】6. TIM编码器接口
stm32·单片机·嵌入式硬件
集大周杰伦5 小时前
深入解析 I²C 与 SPI 协议:原理、时序及软件实现
单片机·嵌入式硬件·iic·spi·通信协议
木燚垚13 小时前
汽车无人驾驶系统中的防撞设计
stm32·单片机·嵌入式硬件·物联网·汽车·智能家居
沐欣工作室_lvyiyi14 小时前
变电站蓄电池在线监测系统(论文+源码)
stm32·单片机·proteus仿真·油温
沐欣工作室_lvyiyi14 小时前
基于单片机的智能宿舍管理系统(论文+源码)
单片机·嵌入式硬件·电能表·数字电能表·心率血氧