RTC 滴答计时器

1. RTC 滴答计时器

1.1 寄存器配置

RTCCON RTC控制寄存器

7:4\] = 0000 设置频率 \[8\] = 1 使能滴答计时器 ![](https://file.jishuzhan.net/article/1752921564875067394/cfb8e30938ec247a052150f1285cdd2d.webp) #### **TICNT** 32位滴答时间计数值。 滴答计时器是一个上行计数器。如果当前的滴答数达到这个值,滴答时间中断发生。 备注:该值必须大于3 ![](https://file.jishuzhan.net/article/1752921564875067394/6e57e0eab4a6a5cafd8fe69b523e8b3e.webp) 周期= (n + 1)/滴答时钟源频率 (n =滴答计数器值) ![](https://file.jishuzhan.net/article/1752921564875067394/f749e37539a9395610fff33694cc62d7.webp) rtc_tic----main.c ```cpp #include"exynos_4412.h" #include"uart.h" //rtc作为滴答定时器使用 /* * 滴答计时器初始化 * 参数:tic :滴答时钟计数 32768HZ 输入 * 初始化完成后自动开始 */ void rtc_tic_init(unsigned int tic) { //设置寄存器RTCCON[7:4]位,设置滴答计时器子时钟源选择, //这里设置为0000,及时钟源为32.768KHz RTCCON = RTCCON & (~(0xF << 4)); //设置寄存器RTCCON[8]位置1,滴答计时器使能 RTCCON = RTCCON | (0x1 << 8); //配置TICCNT寄存器,这里设置为32.768KHz,1s发生一次中断 //周期= (n + 1)/滴答时钟源频率 //(n =滴答计数器值) TICCNT = tic; //GIC 面向中断源 //开启总中断 ICDDCR = ICDDCR | 0x1; //配置端口中断使能 ICDISER.ICDISER2 = ICDISER.ICDISER2 | (0x1 << 13); //配置端口优先级 优先级设置为5 rtc_alarm 中断id 77 ICDIPR.ICDIPR19 = ICDIPR.ICDIPR19 & (~(0xFF << 8)) | (5 << 8); //配置中断源送去哪个cpu处理 0x1表示直送cpu0 ICDIPTR.ICDIPTR19 = ICDIPTR.ICDIPTR19 & (~(0xFF << 8)) | (0x1 << 8); //GIC 面向cpu //cpu响应中断使能 =1 使能 =0 不使能 CPU0.ICCICR = CPU0.ICCICR | 0x1; //配置cpu过滤优先级 CPU0.ICCPMR = CPU0.ICCPMR | 255; } void rtc_tic_interrupt_clear(void) { RTCINTP = RTCINTP | (0x1 << 0); //清RTC中断标志位 ICDICPR.ICDICPR2 = ICDICPR.ICDICPR2 | (0x1 << 13); //清除GIC中断标志位 } void do_irq(void) { unsigned int irq_num; irq_num = CPU0.ICCIAR & 0x3FF; //获取中断号 switch(irq_num) { case 77: rtc_tic_interrupt_clear(); printf("rtc_tic time interrupt!\r\n"); break; } //最后清除cpu中断挂起 //写入中断id清除对应中断挂起 CPU0.ICCEOIR = irq_num; } int main() { int a = 100; uart_init(); printf("hello!a=%d\r\n",a); //周期= (n + 1)/滴答时钟源频率 //(n =滴答计数器值) rtc_tic_init(32767); while(1); return 0; } ``` ![](https://file.jishuzhan.net/article/1752921564875067394/4ebc10eb296e4ba83fd27aebf5352f02.webp)

相关推荐
Benmao⁢9 小时前
C语言期末复习笔记
c语言·开发语言·笔记·leetcode·面试·蓝桥杯
bubiyoushang88810 小时前
基于STM32F103与A3988驱动芯片的两相四线步进电机控制方案
stm32·单片机·嵌入式硬件
无限进步_13 小时前
深入理解 C/C++ 内存管理:从内存布局到动态分配
c语言·c++·windows·git·算法·github·visual studio
bai54593613 小时前
STM32 备份寄存器
stm32·单片机·嵌入式硬件
cold_Mirac13 小时前
stm32-freertos和逻辑编程下堆栈功能的区分
stm32·单片机·嵌入式硬件
youcans_14 小时前
【动手学STM32G4】(3)上位机实时显示多路波形
stm32·单片机·嵌入式硬件·上位机
liu****14 小时前
9.二叉树(一)
c语言·开发语言·数据结构·算法·链表
铁手飞鹰14 小时前
[HAL库分析—GPIO]
c语言·stm32·单片机·嵌入式硬件
水饺编程14 小时前
第3章,[标签 Win32] :处理 WM_PRINT 消息
c语言·c++·windows·visual studio
虚假程序设计14 小时前
pythonnet 调用C接口
c语言·python