十二届蓝桥杯大赛-第一场省赛-嵌入式

本文记录了第十二届蓝桥杯大赛经历,重点介绍了串口数据处理技巧,特别是如何计算停车时间,并附带纯C语言实现代码。

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

第十二届蓝桥杯大赛记录

请记得检查串口驱动是否安装正常!!!

我就在这点上浪费了半个多小时,结果最后也没做完题

本届赛题的主要考点在串口数据的处理,其余模块都不算太难

PWM输出波形和持续输出低电平的切换,算一点难度,但并不新鲜,第十一届已经出现过,主要是GPIO口的重新配置和定时器的开关

串口数据处理的重点是停车时间的计算(考场上并没有写出来)

纯C写的代码如下,在Keil中可将int替换为u16, char替换为u8,long int 替换为u32

#include <stdio.h>

/*
    时间格式:YYMMDDhhmmss
    200201120000表示:2020年2月1日12点0分0秒
*/
int Compute_Time(char* t1, char* t2)
{
    long int YY, MM, DD, hh, mm, ss, TT;
    // 假设停车不超过1个月,快速写出计算代码
    YY = ((t2[0] - '0')*10+(t2[1] - '0')) - ((t1[0] - '0')*10+(t1[1] - '0'));  
    MM = ((t2[2] - '0')*10+(t2[3] - '0')) - ((t1[2] - '0')*10+(t1[3] - '0')); 
    DD = ((t2[4] - '0')*10+(t2[5] - '0')) - ((t1[4] - '0')*10+(t1[5] - '0')); 
    hh = ((t2[6] - '0')*10+(t2[7] - '0')) - ((t1[6] - '0')*10+(t1[7] - '0')); 
    mm = ((t2[8] - '0')*10+(t2[9] - '0')) - ((t1[8] - '0')*10+(t1[9] - '0')); 
    ss = ((t2[10] - '0')*10+(t2[11] - '0')) - ((t1[10] - '0')*10+(t1[11] - '0')); 
    
    TT = (DD*24*3600+hh*3600+mm*60+ss);
    if(TT%3600 == 0)
    {
        return (TT / 3600);
    }
    else
    {
        return ((TT / 3600) + 1);   
    }
}

int main(void) 
{ 
    int time;
    char t1[] = "200201120000";
    char t2[] = "200201142105";
	time = Compute_Time(t1, t2);
	printf("停车%d小时\n", time);
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐观的lishan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值