基于stm32的c语言版(HAL库函数)获取rtc时间和时间戳之间的转换例程

本文介绍了如何在STM32微控制器上使用HAL库进行RTC时间的获取,并将其转换为时间戳。代码经过验证,适用于基于HAL库的C语言开发。如有需要源码文件,可以留言索取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码使用的是HAL库

const u8 Days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
const u16 monDays[12] = {0,31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};

u32 time2Stamp(RTC_DateTypeDef date, RTC_TimeTypeDef time)    //北京时间转时间戳
{
	u32 result;
	u16 Year=date.Year+2000;
	result = (Year - 1970) * 365 * 24 * 3600 + (monDays[date.Month-1] + date.Date - 1) * 24 * 3600 + (time.Hours-8) * 3600 + time.Minutes * 60 + time.Seconds;
	printf("[%u]",result);
	result += (date.Month>2 && (Year % 4 == 0) && (Year % 100 != 0 || Year % 400 == 0))*24*3600;	//闰月
	printf("[%u]",result);
	Year -= 1969;
	result += (Year/4 - Year/100 + Year/400)*24 * 3600;		//闰年
	return result;
}

void stamp2Time(u32 stamp)        //时间戳转北京时间
{
	RTC_DateTypeDef date;
	RTC_TimeTypeDef time;
    u32 days; 
    u16 leap_num;
	
    time.Seconds = stamp 
评论 69
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值