历史上的今天
今天是:2026年03月14日(星期六)
2023年03月14日 | stm32入门开发板选野火还是正点原子
2023-03-14 来源:zhihu
两个可以说都是行业标杆。
不能说哪个比哪个更好,各有特色,适合自己就是最好的,同行之间都是相互参考去做的。
我从以下几个维度来对比下:
1.教程
2.代码
3.开发板价格
4.进阶
一、教程
两家教程都是完全开源的,大家对野火的教程好评比较多,开始几章由浅到深讲解地很好。
有些c基础不是很好的人也能跟上,能理解STM32的外设使用底层也是从寄存器配置进行代码二次封装来的。
后面一些章节似乎换了老师,讲解地更加偏向实际项目,站在初学者的角度,或许听起来有点费劲,但死磕也能学到不少东西。
正点原子的话正好相反,刚开始的几个章节可能对新手不是很友好,反而后半段更适合初学者。
对于初学者来说,其实不需要讲的多深入,最重要是能让你理解。
二、代码风格
野火的代码宏定义多,虽然初学者觉得很绕,不直观、但更加严谨,一般在实际项目开发的时候这种做法有利于程序可扩展性和可移植性。
我看网友喷的最多的就是正点的代码,代码风格不太适合作为实际项目的参考。
我觉得,不管怎么样,还是那句话:能让你理解才最重要,不要过河拆桥了。
大家定位都是不一样的,既然你是初学者,又是刚入门STM32。
就不要去管什么代码风格,程序架构的东西了,能把功能实现就不错了。
第一步你得把功能试下吧,实现过程中肯定会踩坑,然后再去想为什么?怎么优化?
你只有经历了这个过程,你对好的代码理解地才更透彻,否则你的理解永远只停留在表面。
就好比,你以为用了指针程序就很专业,实际上根本没解决什么痛点,强行装逼而已。
三、开发板价格
开发板价格作为最后的考量,也是有原因的。
两家价格相差不大,整体来说原子的开发板质量比野火好些。
质量好坏,并不是最核心的问题,反正肯定能正常用起来,只是质感好坏而已。
现在我的开发板都在某个角落吃灰,一般做实验的时候用一下,用完就丢一边了。
四、进阶
通过开发板,基本就能顺利突破新手期,剩下的就是进阶,就是达到独立完成功能的水平。
不要指望开发板能让你的水平有质的飞跃,开发板的目的是让你学会单片机外设的使用,仅此而已。
学会外设,不代表你就会做项目了,因为还缺两种能力:
1.项目思维
也就是给你一个功能需求,它会用到单片机什么外设?数据如何采集?或者用什么信号去控制?逻辑功能怎么用程序去实现它?
2.编程水平
等你有了思路,你还得有一定的编程水平写代码去实现。
当然,在工作的前几年,我基本都是以实现功能就行,根本不考虑程序架构,不考虑代码写得好不好,不考虑后期客户要不要改功能。
正是因为考虑不周,我吃了很多亏,就直接的体现就是经常加班改代码。
如果程序架构好,这些问题可能几分钟就解决了。
3.如何提升
只能通过不断做项目去积累,但是也不是没有捷径的。
捷径就是能找到一个资深人士学习,跟着他做项目,学习他的项目思维和编程经验。
这样你就能节约大量自己摸索的时间。
举个例子,同一种功能,新手的写出来可能是这样的:

而我们无际单片机课程项目的代码架构是这样的:

虽然本质都是轮询方式去执行,但是灵活度很明显我们写出来的更高,可以单独控制每个函数执行时间等等。
上一篇:stm32有什么优点和特点?
史海拾趣
|
本帖最后由 paulhyde 于 2014-9-15 09:38 编辑 如何使用 µC/OS-II [ 本帖最后由 forsharing 于 2009-8-30 21:24 编辑 ] … 查看全部问答> |
|
win ce 下使用 RAS进行GPRS或edge拨号的问题?????? 写个手机程序开始要判断手机是否拨号了。。 如果没有要自动拨号。。 我使用了RAS。。。 如果手机是CDMA可以,但手机是GPRS或edge网络就不行了。。。 部分代码如下,质询下哪里错误。。 UINT CCERAS::Dial() { H ...… 查看全部问答> |
|
main() { while(1) { 有串口中断,则将此字节填到缓冲区; if(缓冲区中已经是完整一帧)   ...… 查看全部问答> |
|
今年9月份我们学校(高职)电子专业就要开设单片机原理与应用课程了,我现在考虑两种:一种是freescale 的HC08系列,一种是TI的MSP430系列;HC08我原来学过,但感觉资源较少,实验箱等东东较贵;好像搞的人也少;MSP430好像搞的人挺多的,希望大家提 ...… 查看全部问答> |
|
STM32调用STM32F10x_FLASH_H中的内容全部提示错误-已解决 开发环境IAR4.42A调用flash库中的函数全部提示下面类似的错误,Error[Pe223]: function "FLASH_Unlock" declared implicitly 请大家帮帮忙啊… 查看全部问答> |
|
这些是初学者经常容易犯得错误,现总结如下1.#i nclude<>指要在编辑器设定目录下,#i nclude\"\"指的是在当前工程目录下。2.要调用另一个文件中的函数,要把这个函数文件放到当前工程目录下,并且在工程中添加此文件。3.命名中不能有-,比如:b ...… 查看全部问答> |
|
TI LM3S同时使用两个以上的串口正确的方法自己编写函数://*****************************************************************************////! Changes UART printf output port.//!//! \\param ulPortNum is the number of UART port to use f ...… 查看全部问答> |




