RTC 滴答计时器

1. RTC 滴答计时器

1.1 寄存器配置

RTCCON RTC控制寄存器

7:4 = 0000 设置频率

8 = 1 使能滴答计时器

TICNT

32位滴答时间计数值。

滴答计时器是一个上行计数器。如果当前的滴答数达到这个值,滴答时间中断发生。

备注:该值必须大于3

周期= (n + 1)/滴答时钟源频率

(n =滴答计数器值)

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;
}
相关推荐
广州灵眸科技有限公司14 分钟前
瑞芯微(EASY EAI)RV1126B display
开发语言·数据库·人工智能·科技·嵌入式硬件
豆芽脚脚1 小时前
华为鲲鹏arm服务器部署DeepSeek-V4-Flash-0731-w8a8
运维·服务器·arm开发
国产化创客1 小时前
创客开发入门(三)Arduino IDE 开发环境
ide·单片机·嵌入式硬件·课程设计·智能硬件
CedarQR1 小时前
LubanCat-2 (RK3568) Debian 下让 H3C Magic USB 无线网卡(AIC8800)联网全记录
linux·网络·单片机·嵌入式硬件·debian·3568·h3c
T1mzhou11 小时前
ARM64 Linux 6.10内核启动流程7-ioremap和readl writel
linux·服务器·c语言
芯片人00712 小时前
纯硬件一键开关机ASIC芯片,为什么比 MCU 方案更适合更可靠
人工智能·单片机·嵌入式硬件·物联网·芯片
染予13 小时前
Ka 阵面星历下发与执行逻辑说明
stm32·嵌入式硬件
芯片人00713 小时前
武汉广昇科技的GMUX1308A模拟开关芯片成功导入中国台湾上市企业联昌电子,助力汽车电子供应链自主可控
科技·嵌入式硬件·物联网·汽车·芯片
未来之窗软件服务16 小时前
计算机二级[英文]-C 字符串移动—东方仙盟
c语言·开发语言·仙盟创梦ide·东方仙盟
恒锐丰科技林技术员16 小时前
EG2181D 半桥栅极驱动芯片详解:高压 MOS/IGBT 驱动实用器件
经验分享·嵌入式硬件·硬件工程