对2022年TI杯的记录

发布于:2022-08-06 ⋅ 阅读:(341) ⋅ 点赞:(0)

  比赛一路坎坷,但好在一路积极学习,算是学到了一些东西,以下也算是给刚刚接触单片机和电子设计竞赛的小伙伴的一些我自己积累的学习经验,让大家少走一些弯路吧(因为自己也是第一次参加比赛,第一次学习单片机所以去精华去糟粕就好了,勿喷!)

   首先就是介绍一下我学习所用的单片机的型号,STM32F407ZGT6(价格100-500不等),并且我竞赛的方向是仪器仪表方向,我的建议就是先买个核心板探探底,反正芯片一样,大部分初学用到的外设资源也是大同小异。

  感觉会有小伙伴跟我一样纠结对于常见的两款单片机型号103和407的型之间的选择,407的优势在于性能更好,芯片主频高,定时器频率,ADC频率高,这就意味着在做一些运算和采样的时候更加的精确,尤其是在竞赛中对精确度有要求的时候,精度上不去往往很让人头大,其次就是407的串口更多些,在实现与多设备进行交互的时候,不会出现串口不足的焦虑;但事实就是103对于竞赛来说应该是够用,一方面是本科期间的比赛对单片机的功能运用较少,举个例子,2022年F题 调制度测量,如果根据模拟电路的方法,单片机只需要进行简单的FFT运算和对于信号类型的识别,并且输入的低频信号,单片机仅需要开通两路AD通道,和一个串口输出口(TX)即可,其他均由软件编程实现;另一方面就仪器仪表类比赛来说,避免不了跟许多的模块打交道,学了以后就会知道,许多模块都有程控的需求以及DDS信号发生,大部分商家都会提供参考代码,那问题就来了模块商家给的大多是103的参考代码,当时我在测试模块为比赛做准备的时候就很头大,最终也是选择的代码移植,但代码的稳定性确实是不如商家给的要好,实现的功能也不是很完善,但好在常用的 DDS模块也就那几种(9854,9910)网上应该能找到大佬们成功移植的代码,总之决定权在自己,只是说出自己的一些想法罢了,个人更偏向103(价格便宜这倒是真的)

  说完了单片机的类型的问题,接下来要说的是对于单片机开发语言的选择,首先可以明确的就是寄存器版本基本是跟当代大学生无缘了,个人感觉相当的繁琐,学过51的就知道了,更何况32相对于51难度上升了不只一个层次,个人比较推荐的就是HAL库(标准库函数我们一会儿再讲),因为学了C语言以后其实大家对整体函数的编写还是比较熟悉 的,但是对于单片机来说,在编写主体函数之前还要对各个即将用到的部分进行初始化,这里面光头文件的类型和命名都会让初学者一头雾水,所以我自己看的就是HAL库+STM32CUBEMX ,这是我初学时看的视频,这个视频非常的基础,大家可以倍速播放和快进,看完就大概熟悉了整个单片机的代码实现过程了,至于应用的话还是需要大家对算法多多积累,很简单的道理,就像光有一张计算机二级的证书,是不会有公司认可你的。

STM32系列视频(CubeMX+MDK5+HAL库+库函数一站式学习)_哔哩哔哩_bilibili

  网上也有配套的书籍购买(但是很奇怪,书和视频都没有讲到AD以及DA转换,以至于我要到处找帖子学),当然标准库学会以后的话也是相当的好用,可以根据自己的逻辑思维去对代码一步步的实现,但是我实在是忍受不了对各种头文件的命名和编写,而且一旦引用的头文件不太对,就会出现头文件的重定义,改起来还是很麻烦的(亲身实践会有更深刻的理解)。

下面介绍一下最常见的串口重定义功能,在usart.c的文件中添加一下代码即可

使用的时候在主函数中包含头文件即可

串口重定义代码

#include <stdio.h>

int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);
  return ch;
}

int fgetc(FILE *f)
{
  uint8_t ch = 0;
  HAL_UART_Receive(&huart1, &ch, 1, 0xffff);
  return ch;
}

   初次作文,漏洞还很多,以后会努力改进的

  下面说说对这次电赛的感悟吧,2022年省赛年,题目确实有点难度,但我们应该相信事在人为,而机会往往留给有准备的人,F题信号调制度测量,如果大家有兴趣可以去了解一下,代码层面抛开精确度(精确度是需要采集一些数据后期去做非线性拟合的,因为ADC采集数据一定会出现误差),需要的就是ADC+TIM+DMA的信号采集程序,以及用于计算频率的FFT运算,这是我很久前就已经做好准备的,如果小伙伴们有耐心看到这里的话,记住一句话,信号采集和FFT是仪器仪表绕不开的代码,希望大家早早准备,我为什么说机会留给有准备的人,我们这道题走的是模拟电路的方案,也就是说一定一定需要解调模块NE564,从第一天某宝到处都是,我没有下单到它坐地起价我犹犹豫豫,最后是全网断货,我至今还是后悔自己的选择,如果有模块,我相信我会在代码上有进展,没有模块的感觉其实挺窒息的,空有满身精力,却不知道熬夜在实验室该干什么,除了这个模块还有许多常见的模块其实我们也没有准备,比如放大模块,电压跟随器模块,以至于比赛的时候有点火烧眉毛的感觉,谁也不怨吧就是自己没做好,如果有机会明年国赛再来。

  说点题外话,还是希望大家能够在仅有的四年大学时光里珍惜时间努力提升自己,专业能力也好,为人处世的智慧也行,相信每个人都希望自己拥有美好前途和爱情,以后的日子里,一个人的时候好好提升自己,因为你终将会遇到一个值得你付出的人,而恰恰不应该在那个时候因为无能为力而留下遗憾。

 

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到