时间设置timer_stamp
/*
软RTC
缺点:若软件跑死,无法发应真实时间,外部时间芯片独立可以保证时间是真实的
优点:不用频繁访问IIC总线,少调用delay_us()死等
*/
/*
why use soft rtc timer: Because soft iic bus which will call delay_us() often , hard delay is not good for RTOS.
*/
/*
step:
1.bq32000 init/net/screen ok -->
2.get bq3200time -->
3.set soft rtc timer -->
4.ok, now it can get time from soft rtc timer
*/
time_t timestamp = 0;
void soft_rtc_timeout(void* parameter)
{
timestamp++;
}
void set_soft_time(CSU_TIME* t)
{
struct tm time;
//time.tm_year = bq32000_time->g_years+2000-1900;
time.tm_year = t->g_years + 100;
time.tm_mon = t->g_month - 1;
time.tm_mday = t->g_date;
time.tm_hour = t->g_hours;
time.tm_min = t->g_minutes;
time.tm_sec = t->g_seconds;
timestamp = mktime(&time);
}
void get_soft_time(void)
{
struct tm* time_;
time_ = localtime((const time_t*) ×tamp);
CSUtime_soft.g_years = time_->tm_year - 100;
CSUtime_soft.g_month = time_->tm_mon + 1;
CSUtime_soft.g_date = time_->tm_mday;
CSUtime_soft.g_hours = time_->tm_hour;
CSUtime_soft.g_minutes = time_->tm_min;
CSUtime_soft.g_seconds = time_->tm_sec;
}
int soft_rtc_timer(void)
{
rt_timer_init(&soft_rtc_timer_s, "soft_rtc_timer", soft_rtc_timeout, NULL, 1000, RT_TIMER_FLAG_PERIODIC | RT_TIMER_FLAG_HARD_TIMER); //默认硬定时器,在tick isr 调用
rt_timer_start(&soft_rtc_timer_s);
return 0;
}
void soft_rtc_init(void)
{
delay_ms(1000);
bq32000_Configure();
Get_CSU_time();
set_soft_time(&CSUtime);
soft_rtc_timer();
}

浙公网安备 33010602011771号