前言
第十三届蓝桥杯成绩已经公布了,充满遗憾,对于这个比赛还是准备了一段时间的,但是没想到最后只能以省三结束蓝桥杯之旅,目前对成绩存在异议,已经申请了复查,不过感觉复查也不会改变什么结果了,调整好心态才是最重要的,接下来给大家分享一些我的感触吧。
一、感想
1.1 比赛分析
第十三届蓝桥杯电子赛,可能是这一届线上线下都有比赛的原因,这一届比赛的结果分外混乱,不同赛区情况不一样,在一个蓝桥杯交流群中,我发现很多人在说自己明明所有比赛要求的功能都实现了,却只是一个省三等奖(我也是),也有人说别人只点了一个灯,切换了一个页面,就得了省二等奖。没有针对和讽刺其他比赛选手的意思,只是对于这个比赛的评分机制产生了一定的怀疑,我也是将赛题所要求的所有功能都实现了,但分数却并不高,在我们赛区里处于三等奖批次,而且还是比较靠后的位置,也正是因为这样,我才选择申请成绩复核,试图挽救回那一点点的希望。现在结果还没有出,等成绩复核结果出来后我会再更新一下的!
但是如果有的同学想要以赛促学,我觉得还是可以报名参加的,因为如果我没有报名参加蓝桥杯嵌入式组,我也不能有机会更加熟练地使用HAL库进行编程,从以赛促学的角度来看,我其实在这次比赛中已经收获地盆满钵满了,当然,付出了总是想要有回报,还是想要争取一下。
另外,我也看了软件组的成绩单,软件组才是真正的神仙打架,想要体会蓝桥杯含金量的朋友建议报名软件组!与其他大神共同切磋技艺!
1.2 博主推荐
AゞOctopus๊——宝藏博主!有超多详细的功能讲解!
是大毛吖——F103板的大佬!
ORI2333——第十二届蓝桥杯嵌入式组国奖大佬!
二、使用模块
我使用的是新板子(G431),搭配的不是原先老板子使用的标准库,而是HAL库,是对STM32CubeMX配置好开发环境以及时钟等相关参数后生成的工程文件进行修改和功能实现。
比赛中经常用到的功能有以下几个功能,有一些我写过文章的就附一下文章的链接啦,没写过的就把思路或者代码放上来,大家有问题可以私信或者评论我哈!
- 时钟配置
STM32CubeMX配置时钟树 - 8个LED灯
通过宏定义去单独控制每一个灯的亮灭。
PD2控制锁存器开关!一定要配置PD2!!!
#define ON GPIO_PIN_RESET
#define OFF GPIO_PIN_SET
#define LED1(a) HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8,a)
#define LED2(a) HAL_GPIO_WritePin(GPIOC,GPIO_PIN_9,a)
#define LED3(a) HAL_GPIO_WritePin(GPIOC,GPIO_PIN_10,a)
#define LED4(a) HAL_GPIO_WritePin(GPIOC,GPIO_PIN_11,a)
#define LED5(a) HAL_GPIO_WritePin(GPIOC,GPIO_PIN_12,a)
#define LED6(a) HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,a)
#define LED7(a) HAL_GPIO_WritePin(GPIOC,GPIO_PIN_14,a)
#define LED8(a) HAL_GPIO_WritePin(GPIOC,GPIO_PIN_15,a)
- 4个按键
可以通过查询的方式,也可以通过EXTI外部中断的方式,这里放置查询的方式给大家。
uint8_t KEY_Scan(GPIO_TypeDef *GPIOx,uint16_t GPIO_Pin) //按下返回1,反之返回0
{
if(HAL_GPIO_ReadPin(GPIOx,GPIO_Pin) == RESET)
{
while(HAL_GPIO_ReadPin(GPIOx,GPIO_Pin)==RESET);
return 1;
}
else
return 0;
}
- ADC通道采集
实现ADC通道采集只需要两步:
第一步:开启要进行采集的ADC
第二步:获取ADC采集到的值
double GET_ADC_R37(void)
{
double adc2;
HAL_ADC_Start(&hadc2);
adc2 = HAL_ADC_GetValue(&hadc2);
return (adc2*3.3/4096);
}
- LCD屏
LCD屏的内容太多啦,大家看头文件就好,在main函数中需要先进行LCD初始化,随后可以设置背景和前景颜色,同时清屏保证屏幕为同一颜色,即
LCD_Init();
LCD_SetBackColor(Black);
LCD_SetTextColor(White);
LCD_Clear(Black);
实现显示功能的函数可以先构建一个字符数组,再将字符数组展示出来,即:
sprintf(adc1_R38_Buf," VR38:%.2fV",VR38);
LCD_DisplayStringLine(Line6,(uint8_t*)adc1_R38_Buf);
- 定时器中的PWM输出功能
配置主要还是在STM32CubeMX中进行配置,如果需要改计数周期或者占空比,可以使用:
__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1,Period);//调节占空比
__HAL_TIM_SetAutoreload(&htim2,Period);//调节计数周期
- 定时器本身的定时功能
配置也是在STM32CubeMX中进行配置,计算公式如下图所示。
- UART串口通信
UART串口(非DMA)学习随笔(STM32-HAL库) - 通过I2C对E2PROM进行读写操作
I2C学习随笔
E2PROM学习随笔 - RTC时钟
RTC时钟学习随笔
总结
在整个备赛过程中还是经历了很多,也学到了很多知识的,有帮助过遇到困难的同学,我自己也遇到过困难,接收到了别的博主的帮助,无论最后成绩复核的结果如何,我觉得对我而言都是一次宝贵的经历,就算是以省三等奖的结局完成本次比赛,我也只是在成绩上留下了遗憾,但在经历上,我已经大赚特赚了!我会在以后保持着这份坚持,携带着这份鼓励,继续努力,为大家创作出更多优质的内容!
最后,祝参加比赛的同学能够取得优异的成绩!
同时也欢迎大家来和我讨论问题呀!