不太清楚你的具体情况,比如说你的知识能力,比如你现在的学历,比如说你要找工作的时候的学历。
我只就我个人的能力发表一下意见:
我的观点是,你还是学JAVA比较好。
对于0基础的人而言,其实JAVA比较容易上手,而且工作的时候,要求的知识面少,而要求的深度面多,就是说,如果你刻苦用功的把JAVA学好,工作会相对顺利一些。
而单片机的编程,不只要有软件C语言基础,还要有硬件基础,单片机分为逻辑层和驱动层,驱动层,要求硬件要达到一定的水平,而且必要时,还要会单片机的汇编语言。
单片机的种类很多,比如51,AVR,STM32等等等等多达十数种,51是最简单的,也是工资水平最低的。况且,单片机,对于学历要求比JAVA要高,高中生做JAVA的不算少,但是高中生做单片机的,几乎没有。
所以你结合自己的实际情况决定吧。
② 嵌入式软件开发就业前景如何,学习的难度又有多大
欢迎入坑。
发展方向
1、做纯软。只做嵌入式设备上的APP开发,那么就集中精力到算法与业务上,例如图像处理、流媒体传输、QT界面开发。
2、半软半硬。纯软入门简单,跟其他的做软件的没什么区别。再往深入发展,看懂硬件原理图,了解CPU体系结构,汇编语言编程,操作系统原理,linux内核开发,设备驱动程序开发,等等等。这个方向需要很深的技术积累,知识多又杂,沉不下心来半途而废太容易了。
找工作:去一线城市一线城市一线城市。一线城市对嵌入式的需求量还是很大的,厉害的去个华为大疆什么的,既能锻炼自己,又能学到知识。二线、三线城市嵌入式需求量不多,而且即使有,也是工业控制偏多,例如搞个单片机啥的,还需要你会用示波器,会焊板子,对于软件人员来说跨度太大。
③ 桌面软件程序编写与单片机程序哪个更复杂难写
桌面软件程序太难,软件(VB/VC/...)不断更新版本不说,操作系统还经常升级,弄得硬盘里面一片垃圾。
微软公司就像赵本山一样,今年卖拐,明年卖车,补丁不断,多年来,也没有弄出一个成熟稳定的版本。
单片机以及嵌入式系统的程序则简单得多,它们的发展,是从实用的角度出发,并没有多少是“忽悠”的,技术稳定的时间比桌面软件程序要长的多。
④ 单片机编程和电脑软件编程是一个门派吗哪个要难点
单片机编程基于系统最底层的编程.也就是俗称的低级语言.汇编语言.
电脑软件编程是高级语言.需要经过编译成EXE后在内存里于汇编跳转指令运行.
至于那个难还要看楼主喜欢那方面的.如果楼主想学软件编程.建议学C C++ VC
如果楼主想学系统集成.人工智能之类的就学单片机编程ASM和C混编
⑤ 同一个项目分别用stm32和51单片机会有什么不同
李工的经验,有如下几点不同,希望你供你参考。
1.51是8位单片机,而stm32是32位单片机。时钟方面stm32运行频率更高,性能更好。两种单片机性能差别比较大。
2.片上资源不一样。简单讲stm32单片机外设丰富,比如串口,I2c等。stm32单片机片上flash和RAM更大。以后升级功能,改进功能的空间大。如果考虑以后功能升级,建议考虑stm32.
3.成本上应该是51单片机要便宜一些。
4.stm32单片机开发资料和参考程序比较多,有库函数,应用起来方便。51单片机更多直接操作寄存器,开发不方便。
我是北漂李工,一个北漂8年的程序员。
在项目开发过程中,我们经常会遇到需要单片机选型,所以我们常常会根据项目功能需求来选择合适的单片机品牌和型号。常见的51内核单片机和STM32单片机也会是我们主要考虑的型号。
STM32与51单片机的参数差异 STM32与51单片机软件开发难度差异STM32使用寄存器比51单片机要多很多,其配置比51复杂,而且中断逻辑,时钟配置使能控制等很多概念都是51单片机中所没有的,再加上stm32很多功能如USB,FSMC。等等功能,其功能更加强大,虽然官方提供了开发固件库和相关开发辅助工具,但很多时候,遇到bug调试难度也加大了很多。
stm32固件库很多实用结构体和指针变量,很多在51单片机开发过程不太注重结构体与指针的使用,那么在STM32开发过程中,就难以理解其固件库的运用逻辑。
STM32与51单片机的性价比差异STM32比51处理速度快,外设功能丰富强大,所以价格普遍比51单片机偏贵,在项目选型过程中,需要根据项目功能需求,选择合适的单片机,如果是51单片机能用,那么考虑项目成本,肯定是不能选择STM32,如果51单片机不能用,即使再便宜,也用不了。
总之, 作为单片机开发工程师,需要能够进行一定的器件选型能力,这个也是必备的专业技能。
搞多了开发,你会发现其实用什么真的不重要,只要你会用就行。单片机好比一个精密机床,你要想加工一件作品,你用任何品牌的机床都可以,关键点是这个机床你会不会用,了解通透程度如何。不同品牌机床操作方法肯定大同小异,不会差别很多,你会用一种,另外一种不用看手册,也能猜出个七八分。机床这样,编程也是这样,给你个51,你应该能控制全世界。
首先如果同一个项目可以用51和STM32同时开发,就不建议使用STM32了,51成本更低。
STM32和51单片机不同点有很多:
1.开发方式不同
51单片机一般是直接操作寄存器,STM32主要操作库函数编程
2.系统资源不同
一般而言STM32资源要比51单片机更多
3.开发环境可能不同
51和STM32一般来讲都可以在Keil下开发,但STM32有更多中选择,可以在Linux下面开发,windows Esplise下开发,甚至直接用VSCode + 插件方式开发。
4.操作系统区别
一般而言,51单片机不支持操作系统,STM32支持各种主流操作系统,STM32开发起来更容易,可以很方便的利用系统实现各种场景下的应用,51单片机由于没有操作系统,开发起来有一定阻碍,甚至有时候必须要做出部分功能的牺牲才能达到整体功能的和谐运行。
5.后期维护方式可能不同
STM32资源足够多,可以写一个bootloader程序来完成之后的系统升级工作,不需要拆机就可以完成固件的升级,而51单片机则不可以。
STM32系列单片机分为CORTEX M0,M1,M4内核,个人觉得STM32F0系列的从性价比,功能上可以完全替代51单片机,而且性能更好。当然也可以使用51,价格更便宜一些,,但是要做功能复杂一些的产品,51系列的单片机是不能满足的,比如驱动RGB 屏,至少要用STM32F429,支持LTDC接口,而且需要外扩内存,支持FMC接口,比如要做数字音频,要支持I2S ,比如要做USB传输,要支持USB ,要移植操作系统,文件系统等等,要看CPU 的资源等等,总之,要根据所做的项目看CPU的资源是否满足要求是非常重要的,这要再设计前期靠考虑周到,否则,项目做到一半发现资源不够,需要重来是很郁闷的事情。
做产品要考虑成本,几毛钱就能搞定的,没必要几块甚至几十块。一般来讲,价格越贵的,资源越多,使用起来越简单,随心所欲。简而言之,价格越低,资源越少的单片机,完成项目的难度越大,需要优化代码和算法。
在stm32之前是8051的天下,silabs的c8051f外设相当的强大。硬件不错,可惜代码不够多。atmel的代码比较多,可惜芯片不够强大。
stm32一出,横扫天下,要硬件有硬件,要软件有软件,价格便宜量又足,连低端产品都用他。
电动自行车控制器都用它,无刷电机都用它。
stm32是史上最广泛使用的单片机。
只要资源够用,都可以,20年前我用8051,现在用stm32。stm32方便些,可以在线调试。我现在开发东西复杂一点的,用stm32 1系列和4系列。简单一点的用stm8s一块多钱的样子。
我觉得你的问题对比对象不太对,一般能用51的项目用stm8或者avr即可。一般来说stm32比51强太多了,无论是性能和价格都没有可比性。
所以在我看来开发上没有什么太大不同,无非就是开发环境不一样,如果代码规范的话很容易进行互相移植(最近芯片涨价严重,我们公司正在换国产),而所谓的外设(uart iic spi等等)其实没有太大区别。
但是在生产上差别就出来了,主要在于交货能力,一般而言同为一级代理采购物料,st的交货能力要比stc的强(当然最近行情st也不行了,交期干到了9月份)。所以如果你的产品是主力长期货,建议选择交货能力强的。
我就记得51单片机放不了几个变量就超出了。复杂点的程序都很难写。
⑥ 学习单片机编程真的很难吗好多已经是高手的人都说不简单,让我大失信心,我该怎么办呢
我现在也是刚刚开始学习单片机的编程,感觉不是很难呀。我是从51入手的,自己买了一块开发板。看看视频看看书,20天时间后自己独立编写计算器程序,画PCB板、到最后的焊接。最终功能实现。感觉不是很难,贵在坚持,并且最好有什么人规定你在一定时间内制作一件作品出来,这样学习比较有动力。我是看郭天祥的视频。这个视频不错,对于程序的讲解十分详细。如果你C语言的基础不错的话,会上手很快的。买一块板子自己学习很快的。动手很关键,写好程序后,测试的过程能发现很多问题,解决之后你会对这方面的知识有非常深刻的认识。
先看郭天祥的视频,然后买块板子,一般里面都会有对于硬件的讲解。与此同时一定要有一本单片机原理方面的书,实践一定要以理论为基础。前期先实践,理论一点一点跟上,这样学习会很快的。加油。贵在坚持!!!
⑦ 嵌入式、单片机和应用层开发比较,那个更有前途,更有挑战性
1,嵌入式,我认为这是最有挑战性的,也更有前途的。因为他是有个特殊的设备平台,既包含有硬件的方向,像嵌入式驱动开发,也有软件方向的,如嵌入式应用开发。所以我认为是最有挑战的,当然可以选择的范围也更广,更有前途。
2,单片机,首先,他么有操作系统,在难度上低于嵌入式,在实际的应用中,一般是作为一些模块的一些简单的数据处理。更侧重于硬件方向。
3,应用开发,我认为这是最为广泛的,只要是有系统的平台,被人使用就必然会需要应用程序,变化也是最多的,一个系统上可以有各种跑各种应用。但是,相较于硬件驱动来说,就如同将一块木头雕刻成一件乐器,而应用开发只是使用这件乐器奏出乐曲。先比较之下谁更有挑战也就一目了然了。
⑧ 我想学c语言和单片机有难度吗,一点都不懂
我学过单片机,这个还是非常简单的,因为单片机的程序可以说都是面向过程的,只不过可以实现一些中断,你可以看经典的清华大学出版社的 谭浩强的《C程序设计》,语言方面不太难,如果是结合学单片机,那你还要多了解单片机里面的寄存器控制呀,一些常用的外围设备之类的。这个一定要有实物(开发板)来练习才会有提高的。等你玩得差不多了,你可以玩arm呀,移植linux,写驱动,编写图形程序之类的,到时看你兴趣再去学习。不过你如果要学习驱动,那也要学很多东西,如数据结构、linux驱动框架之类的。。。哈哈,拙见而已。
⑨ 单片机(如:stm32)与Android哪个开发难度大
STM32,这都类似于嵌入式了,安卓网上教程很多,很快可以学会,而单片机需要长时间的编程原理的磨练才可以。