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)

相关推荐
森焱森21 分钟前
水下航行器外形分类详解
c语言·单片机·算法·架构·无人机
TESmart碲视4 小时前
HKS201-M24 大师版 8K60Hz USB 3.0 适用于 2 台 PC 1台显示器 无缝切换 KVM 切换器
单片机·嵌入式硬件·物联网·游戏·计算机外设·电脑·智能硬件
small_wh1te_coder5 小时前
硬件嵌入式学习路线大总结(一):C语言与linux。内功心法——从入门到精通,彻底打通你的任督二脉!
linux·c语言·汇编·嵌入式硬件·算法·c
花落已飘5 小时前
STM32中实现shell控制台(shell窗口输入实现)
stm32·单片机·嵌入式硬件
宇钶宇夕9 小时前
针对工业触摸屏维修的系统指南和资源获取途径
单片机·嵌入式硬件·自动化
黑听人9 小时前
【力扣 简单 C】70. 爬楼梯
c语言·leetcode
杜子不疼.9 小时前
二分查找,乘法口诀表,判断闰年,判断素数,使用函数实现数组操作
c语言
和风化雨9 小时前
stm32的三种开发方式
stm32·单片机·嵌入式硬件
kanhao10010 小时前
三态逻辑详解:单片机GPIO、计算机总线系统举例
单片机·嵌入式硬件