
面试
那得看你学习是出于何种目的了。其一,要是你想找个和STM32相关的工作,标准库是必须要学的。要是没把标准库弄明白,
面试通过的可能性就不大。至于Hal库,真的不怎么样,没什么用处。感觉这就是那些从没实际操作过的老学究凭空想出来的东西,这一点后面再详细说。当你通过
面试之后,重点就渐渐不再是编程了。刚入职的新人可能每天都在写程序,但是在职时间越长,写代码的机会就越少。因为像I2C、SPI、I2S、Modbus、485、CAN等各种各样的通信协议,代码的写法基本是固定的。刚入职的时候把各类通信代码都写一遍,然后封装成函数。到了后期,就是把封装好的函数复制粘贴,改一改传入的参数,直接烧录就可以了。单片机程序其实就那几个固定的模式,都是靠死记硬背。每种通信协议写一遍,通过传入参数指定端口号之类的,之后自然就都是复制粘贴的操作了。使用HAL库还得用图形化设置,代码要粘贴到特定的位置,不能随便复制粘贴,这样工作效率反而非常低。而且第三方厂家提供的算法都是用标准库来实现的,使用HAL库的话还得手动进行整合。既然重点不在编程上,那重点是什么?当然是画电路板、焊接元件了。把电路基础知识牢记于心,画好PCB,熟练使用电烙铁、焊锡膏、
热风枪,这些才是STM32岗位的核心技能。其二,要是你以当前的比赛为目标,可以选择Hal库,不过Arduino会更好。因为Arduino是跨平台的,结合VSCode的PlatformIO插件,能够驱动400多种不同品牌、不同型号的单片机。一套代码可以通用,编写一次,就能在各个地方编译。这样就可以不受品牌、型号的限制,根据不同的使用场景,任意选择最适合的芯片。最常见的方案通常是Arduino+ESP32,这可是创客们的标配,有很多厉害的大神,像稚晖君大家应该都听说过吧。既然能支持400多种单片机,那自然也包括STM32的F1、F4系列。就算单看STM32这个平台,Arduino也比Hal库强。可以随意复制粘贴,可以兼容第三方厂商的代码,甚至还能和标准库整合,这些都是Hal库做不到的。其三,要是你的目标是嵌入式
linux,那就直接去学恩智浦的i.mx系列。各大车企的座舱中控屏早期都是用这个系列的,所以学习资料非常齐全。刚开始学习一般推荐使用I.MX6ull的板子,网上关于它的资料是最多的,把这块板子学透了,换用任何板子都能自己摸索明白。不过i.mx6ull的性能比较差,而且价格还贵,随着电动
汽车的兴起和智能座舱的普及,i.mx6的配置早就跟不上时代了。目前主流是瑞芯微的RK系列,但是单从学习的角度来说,还是i.mx6的学习资料最多最全面。