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)

相关推荐
犯困的土子哥44 分钟前
VS Code搭建C/C++开发环境
c语言
charade3121 小时前
【C语言】内存分配的理解
c语言·开发语言·c++
流影ng1 小时前
C语言HashTable基本理解
c语言·哈希算法
2401_867021902 小时前
文件缓冲区(IO与文件 ·III)(linux/C)
linux·运维·服务器·c语言
尤老师FPGA2 小时前
LVDS系列9:Xilinx 7系可编程输入延迟(二)
单片机·嵌入式硬件·fpga开发
雾削木4 小时前
mAh 与 Wh:电量单位的深度解析
开发语言·c++·单片机·嵌入式硬件·算法·电脑
RaLi和夕6 小时前
单片机学习笔记9.数码管
汇编·笔记·单片机·嵌入式硬件·学习
教练、我想打篮球7 小时前
03 基于 STM32 的温度控制系统
stm32·单片机·嵌入式硬件
newki8 小时前
学习笔记,Linux虚拟机中C/C++的编译相关流程步骤
c语言·c++
电鱼智能的电小鱼8 小时前
EFISH-SBC-RK3588 —— 厘米级定位 × 旗舰算力 × 工业级可靠‌
linux·人工智能·嵌入式硬件·边缘计算