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)

相关推荐
草莓熊Lotso2 小时前
《算法闯关指南:优选算法-双指针》--01移动零,02复写零
c语言·c++·经验分享·算法·leetcode
longxiangam2 小时前
墨水屏程序
单片机·嵌入式硬件·rust·risc-v
索迪迈科技9 小时前
基于野火F407开发板实现电源管理-停止模式
c语言·stm32·单片机·嵌入式硬件·mcu
小莞尔9 小时前
【51单片机】【protues仿真】基于51单片机宠物投食系统
c语言·stm32·单片机·嵌入式硬件·51单片机
方圆工作室10 小时前
Arduino音乐键盘程序
单片机·嵌入式硬件·计算机外设
Echo_cy_10 小时前
STM32 SPI通信协议
stm32·单片机·嵌入式硬件
JiaWen技术圈11 小时前
关于 MCU 芯片外围电路的快速入门介绍
单片机·嵌入式硬件
小马学嵌入式~11 小时前
嵌入式 SQLite 数据库开发笔记
linux·c语言·数据库·笔记·sql·学习·sqlite
青 .11 小时前
数据结构---二叉搜索树的实现
c语言·网络·数据结构·算法·链表
武文斌7712 小时前
arm启动代码总结
arm开发·嵌入式硬件·学习