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;
}
相关推荐
蜕变的土豆36 分钟前
二、重学C++—C语言核心
c语言·c++
爱写代码的雨一颗1 小时前
STM32-SPI通信外设
stm32·单片机·嵌入式硬件
Python小老六2 小时前
软件IIC和硬件IIC的主要区别,用标准库举例!
stm32·单片机·嵌入式硬件
honey ball2 小时前
一些优秀的硬件方案及芯片
单片机·嵌入式硬件
折枝寄北3 小时前
从零开始 | C语言基础刷题DAY1
c语言·开发语言·算法
hrrrrb4 小时前
【C语言】指针篇
c语言·数据结构·算法
*.✧屠苏隐遥(ノ◕ヮ◕)ノ*.✧4 小时前
C语言_数据结构总结4:不带头结点的单链表
c语言·开发语言·数据结构·算法·链表·visualstudio·visual studio
极客代码5 小时前
Linux IPC:System V共享内存汇总整理
linux·c语言·开发语言·并发·共享内存·通信·system v
DOMINICHZL5 小时前
卡尔曼滤波算法从理论到实践:在STM32中的嵌入式实现
stm32·嵌入式硬件·算法
无际单片机编程6 小时前
单片机OTA升级中Bootloader怎么判断APP有没有问题?
java·stm32·单片机·嵌入式硬件·嵌入式