MAIX BIT 开发板 RTC时钟编程
K210 RTC API
int rtc_init ( void ) RTC初始化
int rtc_timer_set ( int year, int month, int day, int hour, int minute , int second) 设置RTC时间
int rtc_timer_get ( int ∗year, int ∗month, int ∗day, int ∗hour, int ∗minute , int ∗second) 获取RTC时间
int rtc_alarmr_set ( int year, int month, int day, int hour, int minute , int second) 设置闹钟
int rtc_alarm_get ( int ∗year, int ∗month, int ∗day, int ∗hour, int ∗minute , int ∗second) 获取闹事时间
int rtc_tick_irq_register ( bool is_single_shot , rtc_tick_interrupt_mode_t mode, plic_irq_callback_t callback , void ∗ctx, uint8_t priority) 设置 RTC tick 中断,可以设置整秒、整分、整时、整天中断。
void rtc_tick_irq_unregister ( void ) ; 注销 tick 中断。
int rtc_alarm_irq_register ( bool is_single_shot , rtc_mask_t mask, plic_irq_callback_t callback , void ∗ctx, uint8_t priority)
void rtc_alarm_irq_unregister ( void ) 注册 alarm 中断
代码示例
#include <stdio.h>
#include <sysctl.h>
#include <rtc.h>
int alarm_irq ( void * ctx) {
printf ( " %s :\n" , __func__ ) ;
rtc_timer_get ( & year, & month, & day, & hour, & minute, & second) ;
printf ( "alarm_irq: %4d-%d-%d %d:%d:%d\n" , year, month, day, hour, minute,
second) ;
return 0 ;
}
int tick_irq ( void * ctx) {
printf ( " %s :\n" , __func__ ) ;
rtc_timer_get ( & year, & month, & day, & hour, & minute, & second) ;
printf ( "tick_irq: %4d-%d-%d %d:%d:%d\n" , year, month, day, hour, minute,
second) ;
return 0 ;
int main ( ) {
rtc_init ( ) ;
rtc_timer_set ( 2020 , 5 , 6 , 17 , 0 , 0 ) ;
rtc_timer_get ( & year, & month, & day, & hour, & minute, & second) ;
printf ( "Hello World\n" ) ;
printf ( "%4d-%d-%d__%d:%d:%d\n" , year, month, day, hour, minute, second) ;
rtc_tick_irq_register ( false, RTC_INT_MINUTE, tick_irq, NULL , 1 ) ;
rtc_alarm_set ( 2020 , 5 , 6 , 17 , 0 , 15 ) ;
rtc_mask_t mask = ( rtc_mask_t) {
. second = 7 ,
. minute = 0 ,
. hour = 0 ,
. day = 0 ,
. month = 0 ,
. year = 0 ,
} ;
rtc_alarm_irq_register ( false, mask, alarm_irq, NULL , 2 ) ;
sysctl_enable_irq ( ) ; 打开系统中断
while ( 1 ) {
rtc_timer_get ( & year, & month, & day, & hour, & minute, & second) ;
printf ( "timer: %4d-%d-%d %d:%d:%d\n" , year, month, day, hour,
minute, second) ; rtc_alarm_get ( & year, & month, & day, & hour, & minute,
& second) ; printf ( "alarm: %4d-%d-%d %d:%d:%d\n" , year, month, day, hour,
minute, second) ;
sleep ( 1 ) ;
}
}