通讯模块获取时间转成时间戳HAL库

该博客内容涉及使用UART进行数据传输,从接收到的数据中提取时间信息,并将这些信息转换为时间戳。通过HAL库的UART接口发送AT命令并接收BC20模块的回复,然后解析以':'为分隔的时间字符串,将其转换为年、月、日、小时、分钟和秒,并计算为双精度浮点数的时间戳。

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

uint8_t BC20_buffer[100];
void get_time()
{
	uint16_t x,y;		
	HAL_UART_Transmit(&huart1,AT_CCLK,sizeof(AT_CCLK),0x40);
	HAL_UART_Receive(&huart1,BC20_buffer,sizeof(BC20_buffer),0X50);
	for(x=0;x<100;x++)
	{	
			if(BC20_buffer[x]==':')
		{
				for(y=0;y<24;y++)
					{times[y]=BC20_buffer[1 + ++x];}
		}
	}
double timestamp,year,mon,day,hour,min,sec,Y,M,D,T,X;
double time_to_timestamp()
{
	
	year=(times[0]-48)*1000+(times[1]-48)*100+(times[2]-48)*10+(times[3]-48);
	mon=(times[5]-48)*10+(times[6]-48);
	day=(times[8]-48)*10+(times[9]-48);
	hour=(times[11]-48)*10+(times[12]-48);		
	min=(times[14]-48)*10+(times[15]-48);
	sec=(times[17]-48)*10+times[18]-48;
	if (0 >= (int) (mon -= 2))
	{   
         mon += 12;      
         year -= 1;
    }

	T=((((unsigned long)(year/4 - year/100 + year/400 + 367*mon/12 + day) +
             year*365 - 719499
          )*24 + hour 
       )*60 + min 
    )*60 + sec;

	return T;
}

转换方式借鉴网上代码

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值