可以哦。
stm32和linux,从大的范围来讲都属于ARM范围内的嵌入式开发。单纯的stm32开发局限性还是太小了,如果是以后要在嵌入式领域工作的,要往高薪走还是得转linux。
stm32开发并不是学了没用,对于后期学linux开发是个基础。学stm32可以学习外设接口,CAN,SPI,UART等,这些接口外设算是ARM芯片最常用的外设,了解这些有助于后面的学习。如果stm32裸机学得差不多了,再去跑跑RTOS系统,对任务调度等一些系统知识有点了解。
当然上述步骤是我的学习步骤,你也可以在外设学完以后直接开始学linux,我觉得问题也不大。学linux,你可以选择做应用层开发,也可以去做驱动开发。前者和后者工作都比较好找,但是应用层开发相对来说比较简单,做的人也多一点。驱动开发比较难,但做的人比较少,而且收入相对也高。除此之外,移植uboot,内核,根文件,这些基本操作也要会,并且要学会做裁剪工作。学linux,和裸机开发有共同点,也有很多不同点,所以同时学并不影响。
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。
点击这里找小助理0元领取:
学stm32熟悉寄存器配置,以及单片机运行的状态。 学linux则是升级了,linux涉及的东西多,不过底层配配置理解和单片机有相同的地方。linux多了内存管理机制,这是造成他们应用不同的最主要的区别。
如果需要使用STM32,建议先学习这个。后面再学习linux。
看到其他答案说STM32只是比单片机多一些引脚,linux支持复杂的应用,这里只同意一般。
首先,STM32也分系列,有M0的内核,M3的内核,M4,M7等等。
而跑linux至少需要A系列的内核。
ARM的内核分三个系列,cortex-m, cortex-a, cortex-r,m系列主要负责控制类,a系列主要负责应用类,r系列是real time,用于实时性比较高的场景,比如示波器。
STM32的芯片绝大多数是m系列的内核,所以用于控制的比较多。复杂的应用比如电机驱动,CNC雕刻机,变频器,plc,这类带算法的可以用,简单的比如太阳能控制板,传感器监测也可以用。m系列主要应用于稳定性要求高的控制类场景。
A系列一般伴随着系统使用,比如安卓,linux,wince。主要是一些应用类的类型,比如门禁,视觉识别,边缘服务器,数据服务器等。带系统更好处理图像,音频,网络等东西。比如同样的一个post,用linux开发比用STM32+c语言开发要简单的多。
个人认为这些并没有优劣之分,具体的使用应到结合具体的应用场景。
比如现在部分多核芯片,就是a+m结合的多核模式。
#include
int main() {
printf("hello world!\n");
return 0;
}