|
|
本帖最后由 qrk123 于 2026-7-28 09:48 编辑
很久没关注过论坛了,也不知道有没有朋友曾经发过类似的帖子,如果有,请一笑而过,不要喷,如果没有,且又喜欢,可以往下看看。
相信很多朋友跟我一样,玩过GPS校时,WIFI校时,当然,也想过用最方便的手机蓝牙校时,但因为很多朋友都不会制作APP,不得不放弃。前段时间在网络上看到一款蓝牙芯片K6368A时间查询RTC版(记住,RTC版,也叫时间同步版),在某宝上有卖,大约四元一个。它十分的简单,无需APP支持,只要手机蓝牙联上它,它就会调用手机上的时间,发送一组时间给串口。它的格式是“AT+ATYYYYMMDDHHMMSS”只要将蓝牙芯片的TX端连上P30 IO脚上,波特率9600,接收程序就是原来的GPS串口接收程序,稍改动一下就好。
void Uart_Receive(void) interrupt 4
{
unsigned char ch,num;
ES = 0;
if (RI) //如果接收完成则进入
{
ch = SBUF;
if (ch == '$') //如果收到字符'$',便开始接收
{
rev_start = 1;
rev_stop = 0; //接收停止标志
}
if (rev_start == 1) //标志位为1,开始接收
{
buf[num++] = ch; //字符存到数组中
if (ch == '\n') //如果接收到换行
{
buf[num] = '\n';
rev_start = 0;
rev_stop = 1; //接收停止标志
num = 0;
}
}
}
RI = 0; //RI清0,重新接收
ES = 1; //串口1中断允许
}
是不是十分熟悉呢
if(rev_stop==1)//如果接收到GPRMC
{
ES=0;
hour= (buf [13]-0x30)* 16+ buf[14] -0x30;
min= (buf [15]-0x30)* 16+ buf[16]-0x30;
sec= (buf[17]-0x30)* 16+ buf[18]-0x30;
write_byte(DS3231_HOUR,hour);
write_byte(DS3231_MINUTE,min);
write_byte(DS3231_SECOND,sec);
ES=1;
rev_stop=0;
}
就是BUF[X]中的X要改动一下。每人的时钟硬件不同,自己根据实际情况去修改了
本人亲测有效,希望朋友喜欢。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|