电赛学习路径深度解析:STM32学习优先于51单片机的理由及人生规划启示

1. 大一纯小白,你有没有一个学习路线推荐?  

   学习路线是吧?开始的话,我先从硬件开始说。  

   硬件的话,我其实建议选那种资料比较多的、网上资料比较多的,同时开始学的时候做一个集成度比较高的开发板会比较好。  

   因为一开始学,可能对硬件不是特别了解。我当时开始学的时候选的是51,但现在有点不太推荐,因为直接学32的话会更好一点。  

   软件的话,我推荐的是Keil和Keil MDK5,还有那个MX Q5,MX联合的一个开发平台。  

   库的话,MX会自动给你集成,生成一个HAL库。所以学习的话,我建议从HAL库开始学。  

   因为后面会涉及到和队友协同开发,几个人一起做同一个项目。如果你们之间的库不相同,做出来就很难一起合作和讨论。  

   再往后的话,我再想想还有一些网上的资料。如果你去买他的板子,他会有各种各样的资料,这里就不推荐了。  

   后面的话,再往后就是要熟悉一些协议的底层逻辑,比如IIC、SPI这些底层逻辑的协议,具体是怎样的,然后了解一下时钟树、中断之类的。  

   结束之后,硬件开发就建议不要选那种集成的开发板了,因为这个时候你需要的是一个比较灵活的扩展性能,选一个最小的系统板就可以。  

   还有的话,这个时候也要学会一点点画PCB板。画PCB板稍微比较重要一点,因为我觉得杜邦线不太好用,很多板子上都在接杜邦线,杜邦线很容易脱落。  

   我感觉现在杜邦线不太好用,自己可以画一些接口、电路之类的。如果可以的话,再学一点点机械。  

   最后因为我当初没有学机械,现在感觉机械稍微再学一点点,做一下外观设计也挺好的。  

   再往后的话,就进入实时操作系统了,这个对你的板子要求稍微再高一点点。  

   进操作系统的话,推荐我之前用过的MX里边集成的FreeRTOS,它是一个开源的实时操作系统,资料也比较多。  

   再往上其实方向就比较多了,如果你做信号的话,就是往高频射频走,学一下信号完整性与电源完整性分析,画板之类的,再往高频画高频板。  

   如果往嵌入式走的话,就是往Linux嵌入式开发,做Linux的驱动开发和应用开发。  

   再往后的话,可以往树莓派加ROS机器人这个方向走,树莓派和ROS机器人需要学Python和C++。  

   还有别的话,就可以走FPGA等其他路线。

 

2. 可以给小白简单科普一下FPGA和单片机的区别吗?  

   单片机的话,它是顺序执行。比如说我写两行代码,它一定是先执行上一行,再执行下一行。这是由它内部结构所决定的。  

   因为CPU有一个程序计数器,它是取一段程序,执行一段程序,再取下一段程序,再执行这一段程序。所以它决定了CPU只能做顺序执行。  

   FPGA的话,它可以做并行执行。比如说在C里边写一个for循环,它是一次一次去执行的。在FPGA里边写一个for循环,它是比如说我写了一个赋值语句,那它就是一次性把所有的东西全部赋值到左边。  

   这就是它们的区别。

 

3. 打比赛的时候有过想放弃的时刻吗?  

   每一次晚上想睡觉的时候,感觉会比较难受。但想一想,每一次比赛也就四天三夜的时间,坚持坚持也就下来了。

 

4. 你有过什么座右铭和喜欢的话吗?  

   那我就不说什么别人说过的话吧,我就说一说我自己的想法。  

   我自己的想法就是一定要真实的去做,真实的去干这样的一件事情。不要想着以后可能会遇到哪些问题,不要畏首畏尾。我直接去,我想要做一件东西,一定是先动手做,然后再慢慢优化,慢慢重构。一个好的作品都是从开头的一团乱麻慢慢重构出来的。

 

5. 我们电赛训练营有刚来的同学不会焊接电路板,这种基本技能怎么自学?  

   对,就像那可能得自己需要买点装备,比如电烙铁、锡丝、松香。  

   如果说自己有了电烙铁、锡丝、松香的话,能够应付绝大部分的情况了。  

   就像拿一个电烙铁的话,什么都能焊,插装元器件可以焊,贴装元器件也可以焊。  

   首先要了解一下,我到底要焊一个什么东西,拿什么去焊。现在可以上网去了解一下。  

   现在一般有两种,我理解的可能有两种。  

   一种是万用板,上面完全就是什么都没有,完全就是一种排列好的洞,背面是焊盘。  

   我可以根据自己想要的电路,设计什么电路,焊什么电路,就去背面焊。  

   我需要对应的一些元器件,比如说我要焊一个波形发声器,或者焊一个滤波器之类的。我可以先去找电路仿真,仿真得到我想要的结果之后,再去实际的万用板上面去焊。  

   当然也有另一种方式,就是我可以去画PCB板,画好之后拿回来,用电烙铁和锡丝把一些元件焊上去。  

   当然这个PCB板生产花的时间会稍长一点,万用板我直接买一大堆回来就可以。  

   如果用那个电烙铁焊的话,比较推荐使用大一点的贴装元器件和插装元器件,因为插装元器件会比较好焊,贴装元器件用电烙铁焊的话,入门会稍微难一点点。

 

6. 未来有什么目标和理想吗?  

   我其实是因为前段时间华为的稚晖君比较火嘛,其实我想做一个全栈的。我感兴趣的点比较多,但很多时候人的精力是有限的,我还是尽量想做到各方面都比较好的一个状态。

 

7. 以前遇到过什么印象深刻的bug吗,可以给大家简单分享一下?  

   我讲一讲我以前遇到的一个bug吧。我以前在写C的时候,用单片机里边有两个区,一个是堆区,一个是栈区。  

   如果我定义一个结构体,用Malloc函数给它开辟空间的话,那么我开辟的这个空间会存在堆区。  

   有个问题就是我当初定义了一个结构体的指针,后续要用这个结构体的指针去指向一个我定义的变量。  

   我要让它承接我从某个地方,比如说从ADC或者IMU得来的数据。  

   后来我当初用了那个指针,就是直接返回值,函数的返回值直接返回到那个指针上面去了。  

   我没有在那边开辟空间,当时在debug的时候,一debug就会进入硬件错误中断。  

   我和我的队友硬生生找了一周的时间没找到那个错误,后来还是我的队长帮我找到了。  

   从这件事情我们可以看出,我们在定义一个变量之后,一定要先给它开辟空间,然后再去使用。特别是对于指针变量,在使用的时候一定要慎重考虑。

 

8. 有没有非技术能力你觉得比较重要?  

   对了,对于大一或者大二入学时间不久的人来说,一定要学会稍微学一点人际交往。  

   你做这个东西的话,交流也是一个比较重要的部分。因为你总要和你的队友去交流,和学长学姐甚至同一级的同学去交流技术。  

   一进实验室,不要觉得学长学姐们很高冷,其实你去问他们的话,他们也会很开心的回答你的问题。  

   平时没事的时候,他们会在那里。像我们以前大四的时候,还天天在实验室,一方面是指导大一大二的一些项目或者练习,另一方面我们也在那边准备自己的毕设,两方面都能兼顾到。

 

9. 单片机方面有给初学者一些细节的学习建议吗,最好举一个例子?  

   我当初大四的时候在实验室,有个人过来问我,他当时刚学单片机,在做点灯的东西。他让我帮忙看一下程序为什么灯点不亮,我去看了一下他的程序。  

   他是根据网上的一个教程做的,网上那个教程的第一节课点灯,确实是点灯,但他点灯是直接对寄存器进行操作的。这个会比较难一点,这是你大三学完微机原理之后才会了解的一部分知识。  

   如果新手要去学这个东西,了解寄存器、对寄存器进行操作的话,去专门读芯片出厂的技术手册会稍微比较困难,有点劝退。其实没有那么麻烦。  

   一开始学的时候没有那么麻烦,芯片厂家会出厂的时候有一个软件支持包,叫做SDK(Software Development Kit)。  

   这个软件支持包里边集成了各种各样的函数。比如说我刚刚说的点灯,如果用寄存器进行操作的话,我要去找到GPIO寄存器、方向寄存器、控制寄存器、输出寄存器,然后对这些寄存器进行赋值。  

   但如果我直接调用函数的话,比如说调用一个输出高电平的函数,就可以完成。虽然输出高电平函数底层也是写寄存器,但对于刚入学的同学来说,调用函数明显更容易一点。当然,日后在进阶的时候,我们还是需要了解对寄存器的操作。

 

10. 对这堂芯课的小伙伴有什么想说的?  

    对于这堂芯课的小伙伴,我想最后对你们说,人生不是一条单行道,它是一片旷野,怎么走都是往前。  

    对于技术进阶的话,希望你们在日后遇到各种困难、各种BUG的时候,顶着压力做下去,一定不要轻言放弃。

 

11. 你听说过传说中的这堂芯课的口号吗?  

    别再让我帮你移走大山,我将赋予你攀登大山的力量。深耕硬科技,陪你破茧成蝶。

 

希望这些信息对大家有帮助,祝大家学业顺利!

我们的主教练创办了一个电赛训练营,有需要的同学可以咨询我们!!!

B站视频版http://【电赛学习路径与心法分享,当年应该直接学stm32而不是先学51,人生不是单行道】 https://www.bilibili.com/video/BV1wbmUYNEPV/?share_source=copy_web&vd_source=245df0629024a11b8082b899b112b5fb

            

作者:这堂芯课

物联沃分享整理
物联沃-IOTWORD物联网 » 电赛学习路径深度解析:STM32学习优先于51单片机的理由及人生规划启示

发表回复