为什么大学单片机课上51+汇编,为什么不直接来STM32 (最好cube+hal)这样更实用的?

发布时间:
2023-08-24 12:28
阅读量:
13

“我是做电赛的学生,感觉学51单片机硬件底层和汇编语言真的完全没地方用。在实战用我用stm32基本上是cubemx生成hall框架,然后直接写代码的主要部分了。底层配置已经有cubemx ,arduino这些成熟工具,为什么还要花那么多时间学底层,把这些任务交给软件,把更多时间和智力用来研究算法问题和系统层面的问题,会不会更好”

快餐化是效率的提升,但是问题就在于,学研时期需不需要快餐化?其实,问题本质不是51也不是32的问题,是基础代码,基础硬件是不是应该被取代的问题。很显然,答案是否定的。相信之前很多回答已经说明了问题。MCU编程(包含嵌入式Linux)其实并不吃什么“高大上的语法”“巧妙的算法”“以及系统层面”。本质就是在有限硬件资源的基础上,开发你需要的功能,所以对基础内核的了解才是本质。

51作为入门其实真的够了,里面非常多硬件思维的设定,比如最经典的定时器,有了这个思维你去理解PWM ,WTD,串行通讯波特率计算(uart,CAN等等)。

STM32(CORTEX-M3 M4)就真的不需要学习?其实这是完全错误的理解。网络上很多教程,教你怎么点灯,用定时器,用外设,包括RTOS等等 ,但是总会告诉你一件事,多读手册,甚至负责的人会告诉你,不仅仅读手册还需要读 《内核权威指南》,我不知道题主有没有在意到这些细节。即便是STM32想要玩好,真正意义上会用 权威指南你不读1/5 1/4 你是玩不转的。即便是你有快捷工具(cubemx)。

其实,说起快捷工具,你也没有用好,因为(cubemx)其实可以联和matlab,很多简单的应用甚至不用写什么代码,只要进行输入/输出的连接就行(这个前提是 你的是自动化相关专业)。

最后解答一下,研究算法和系统问题,本人在嵌入式已经有接近6年工作经验,如果算上大学的 所谓“电赛”的类似开发,那应该接近10年了,说实话,没有研究过啥算法,都是遇见问题处理问题而已。算法都是COPY来改改,系统都是移植过来,或者嫌弃麻烦直接开始裁剪。

我遇见很多人所得系统问题,其实多一半是时域问题,不是任务相互打架,就是时间不满足需求。现在的RTOS已经很成熟了,只要你问题分析的够细腻,对硬件和性能足够了解。基本不会发送什么系统问题。其实真正做到MCU很精通,你会发现能用RTOS场景都是很简单很傻瓜的场景,因为1MS周期对于很多任务来讲,太慢了,根本没办法满足性能要求。

至于算法,能玩啥啊?PID?卡尔曼?四元数?常见的也就这些了。说实话MCU性能也就这样,等你多用用就知道了,真玩不了什么高级的东西。我自己最近准备搞NVIDIA Xavier ,这上面倒是可以跑点复杂的算法,那是能力也就那样。

加油吧,共勉。

END