有没有嵌入式单片机开发编程强者的,帮忙写个程序有偿。有板有图?

系统嵌入式是什么呢?嵌入式开发就是指在嵌入式操作系统下进行开发,常用的嵌入式操作系统有FreeRtos,ucos,linux,android等。与单片机开发最大的不同就是裸跑与跑系统的区别。嵌入式系统的物理结构关系是从属的关系,嵌入式系统在控制逻辑关系上却是起主导的关系,嵌入式系统被嵌入安装在目标应用系统内,是控制目标应用系统运行的逻辑处理系统。嵌入式系统尽管可以用不同的方式构建,一旦构建完成之后,嵌入式系统就是一个专用系统。在专用系统中,可编程器件的软件可以在系统构建过程中植入,也可以在器件制造过程中直接生成,以降低制造成本。控制逻辑复杂的单片机会需要操作系统软件支持;控制逻辑简单的嵌入式系统也可以不用操作系统软件支持。嵌入式系统是当前最热门最有发展前途的IT应用之一,应用嵌入式系统的设备通常硬件资源有限、对成本很敏感、对实时响应要求高。STM32CudeMXSTM32CubeMX是ST意法半导体的一个图形化的工具,也是配置和初始化C代码生成器,也就是自动生成开发初期关于芯片相关的一些初始化代码。它可以减轻开发的时间和费用。STM32CubeMX集成了一个全面的软件平台,支持STM32每一个系列的MCU开发。这个平台包括 STM32Cube HAL(一个 STM32 的抽象层集成软件,确保STM32 系列最大的移植性)。再加上兼容的一套中间件(RTOS、USB、TCP/IP 和图形),所有内嵌软件组件附带了全套例程,STM32CubeMX的特性有:1.直观的选择 STM32芯片,选型神器。2.STM32芯片图形化配置有:自动处理引脚冲突、动态设置确定的时钟树、可以动态确定参数设置的外围和中间件模式和初始化、功耗预测等。3.C代码工程生成器覆盖了STM32 芯片初始化编译软件,如IAR、KEIL、GCC。4.可独立使用或作为 Eclipse 插件使用。Proteus8.8Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件,它具有EDA工具软件的仿真功能,具有单片机及外围器件的仿真功能,是比较好的仿真单片机及外围器件的工具,早已受到单片机爱好者、单片机教师、单片机开发应用的科技工作者的青睐。Proteus是著名的仿真软件,可以从原理图布的代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,实现真正的从概念到产品的完整设计。Proteus是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10~30/DSPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,Proteus8.0以后版本支持STM32芯片仿真,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil等多种编译器。打开STM32CubeMX选择单片机型号,stm32f103cb。选型配置单片机I/O口,PA0,PA1,PA2为推挽输出,PB0,PB1为下拉输入。I/O口配置配置FreeRtos系统。内核设置、内存管理设置、钩子函数相关定义、运行时和任务统计信息收集、共同程序相关定义、软件计时器定义、中断嵌套行为配置。FreeRtos配置添加FreeRtos任务,defaultTask、myTask02、myTask03、优先级配置、堆栈大小配置、入口函数配置、代码生成选项、等任务参数配置。添加任务设置完成就可以生成代码了,设置工具链/IDE--MDK-ARM V5、路径、高级设置选择使用HAL库或是LL库、配置时钟等参数。生成代码打开Keil uVision5--MDK-ARM V5工程,这是一个能用的,完整的工程文件。打开工程工程目录有 ARM-MDK应用程序、用户程序、HAL库驱动、外设驱动、FreeRtos中间文件。工程目录可以看见已经创建好了3个任务,defaultTask、myTask02、myTask03。以及配置好了任务参数。创建任务可以看见已经完成了I/O口的初始化配置。I/O口初始化我们只要在任务中添加任务代码即可!方便至极。添加任务代码完成之后,就可以编译生成执行文件.hex添加任务代码打开Proteus仿真软件,选择要用到的器件BUTTON、Resistors、LED-GREENSTM32F103C6,搭建电路。stm32器件选择搭建电路导入单片机执行文件仿真。仿真好了,完成了,恭喜你已成功入门了嵌入式开发。结语:嵌入式不是纯软件技术,也不是纯硬件技术,是一个特定的硬件环境上开发与构建特定的可编程软件系统的综合技术,是在嵌入式系统的发展中应运而生的,是依附于嵌入式系统,并推动嵌入式系统不断向前发展的核心动力。嵌入式是一种专用的计算机系统,作为装置或设备的一部分,是一个控制程序存储在ROM中的嵌入式处理器控制板,所有带有数字接口的设备都使用嵌入式系统,有些嵌入式系统还包含操作系统,但大多数嵌入式系统都是单个程序实现整个控制逻辑。(后续开发如遇到问题欢迎留言讨论哦.................)
}
嵌入式软件开发,快五年,没有成就感,快迷失自己了看到了这个的问题,其实这个问题何尝不是很多软件开发人员的困惑呢。至少我自己如此。在任何公司,个人永远就是一枚螺丝钉的角色。当公司的平台越大,工作细分粒度越细的时候,螺丝钉的感觉就特别明显和突出。毕竟,任何公司都是以盈利为目的的团体,而非为了满足个人的兴趣和发展。所以就我个人的经历而言,当你在某个技术领域或者细分点有一定的经历和经验后,你会发现公司以后的新产品基本这个部分的开发依然都是你的活。说的有点空,说个自己的经历。顺带一提。今年自己还录制了一套还比较系统的入门单片机教程,想要私信我就可以,也可以找我报名线上指导,去参加电子设计比赛。。前面的很多回答中,我都提到自己毕业后就加入了宁德,从事嵌入式底层驱动软件开发工作。从最开始几十万行的代码维护,到后面参与新平台的研发,其实一直都在围绕我最熟悉的几块业务单元:CPU相关的驱动(Cache,MMU,Memory),各类定时器,各类锁(Spinlock,rwLock)和DMA功能。哪怕后面我参与了多个项目,用了很多款ARM主控芯片,依然都是在负责CPU驱动,定时器,锁和DMA。从公司的角度看,这么做无可厚非,毕竟你是这块最熟悉的人,换了新的芯片和平台哪怕操作系统,但是你上手肯定是最快的。算个经济账,合算的很。但从咱们员工个人看,日复一日的接触Cache的一二级概念,写透等操作;天天闭着眼睛都能念出定时器在各个平台的实现原理;睡觉都能想到自旋锁的代码,真的无趣,也会感觉工作没有任何新鲜感和挑战性这也许就是题主提到的越来越没有精力,也没有成就感的主要原因。毕竟熟悉的东西,不需要太多投入就能产出,公司喜欢看到,但是个人的确没啥太多价值体现。这样的恶行循环后果就是;个人的技能栈越来越单一,越来越迷茫。尤其互联网上天天喊着“程序员35岁天花板”“搞软件的35岁以后怎么办”等等无疑更加加重迷失自己的目标。和题主分享一下当时我的一些办法,希望能够给题主一些思路。当年我所在的团队已经意识到很多人技术栈单一的问题,一旦遇到新的大项目很难尽快转变。所以得益于当时团队领导的支持,只要你想去承担新的模块,一般都会乐意支持你。所以,在维护原有代码基础上,我又申请开发新的模块,如板级通信协议开发,linux操作系统相关开发(用户态编程)。同时积极转变思维,抓住机会往PL管理方向靠拢。虽然最后还是离开了华为,但是很多基础的技能栈都是当年在那个时候积累下来的,毕竟有压力有动力。可以考虑一下:1.申请承担一部分新的开发工作,丰富自己的技能栈;2.六年的时间,其实也可以考虑往管理,测试,质量和SE方向靠拢,看看公司是否这方面的机会;3.也可以看看外面的机会,是否有能更好的岗位机会和发展空间(对比下薪酬福利和劳动强度,未来发展等因素,毕竟一个程序猿的技术生涯能有几个五年)4.自主自学一些相关的技能栈知识,为后续1-3进行积累。后记:其实对于程序员来说,什么是成就感?解决一个技术问题,通过自己努力构建越来越高的个人技术壁垒体现个人价值等等,都可以让一个程序员越来越有信心和热情。码字不易,喜欢来个点赞关注入门单片机教程,私信我就可以~或者全网同名:华维单片机编程。
}
嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux方向,关注这个方向,大概分3个阶段:1、嵌入式linux上层应用,包括QT的GUI开发2、嵌入式linux系统开发3、嵌入式linux驱动开发嵌入式目前主要面向的几个操作系统是,LINUX,WINCE、VxWorks等等Linux是开源免费的,而且其源代码是开放的,更加适合我们学习嵌入式。你可以尝试以下路线:(1) C语言是所有编程语言中的强者,单片机、DSP、类似ARM的种种芯片的编程都可以用C语言搞定),因此必须非常熟练的掌握。推荐书籍:《The C Programming Language》 这本经典的教材是老外写的,也有中译版本。(2) 操作系统原理,是必需的,如果你是计算机专业毕业那也就无所谓了,如果是非计算机专业的就必须找一本比较浅显的计算机原理书籍看一看,把啥叫“进程”“线程”“系统调度”等等基本问题搞清楚。(3)Linux操作系统就是用C语言编写的,所以你也应该先学习下Linux方面的编程,只有你会应用了,才能近一步去了解其内核的精髓。推荐书籍:《UNIX环境高级编程》(第2版)(4) 了解ARM的架构,原理,以及其汇编指令,我们在嵌入式开发中,一般很少去写汇编,但是最起码的要求是能够看懂arm汇编。(5) 系统移植的时候,就需要你从最下层的bootloader开始,然后内核移植,文件系统移植等。而移植这部分对硬件的依赖是非常大的,其配置步骤也相对复杂,也没有太多详细资料。(6) 驱动开发linux驱动程序设计既是个极富有挑战性的领域,又是一个博大精深的内容。linux驱动程序设计本质是属于linux内核编程范畴的,因而是对linux内核和内核编程是有要求的。在学习前你要想了解linux内核的组成,因为每一部分要详细研究的话足够可以扩展成一本厚书。以上只不过是大概的框架,在实际的开发中还会涉及很多东西,比如:交叉编译、makefile、shell脚本等等,所以说学习嵌入式的周期较长,门槛较高,自学的话更是需要较强的学习能力和专业功底。只要能坚持下来一定会取得成功!嵌入式是一个比较大的概念,有四个分支(主要):1、微控制器(单片机为例);2、微处理器(arm为例);3、dsp(数字信号处理);4、soc(片上系统);对于我们初学者而言,首先要学习单片机,以51为代表,等你学好51之后,可以深入学习更艰难的东西;当然,并不是说你只需要学习单片机;要想学好单片机,你还得学c语言,得学汇编,得学一大堆应用软件;等到单片机能够掌握的不错的时候又需要自己进行原理图、PCB板的设计;还得掌握系统设计的工程管理什么的;比较多。。。。单片机还是比较简单的,等到学好之后,开始学习arm的时候,你就接触的多了,什么操作系统啊、驱动编写啊、内核移植啊、应用程序的添加啊、上位机的编写啊,,那个就多了,,不过到时候你就全知道了。。。ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标:(1)掌握主流嵌入式微处理器的结构与原理(初步定为arm9)(2)必须掌握一个嵌入式操作系统(初步定为uclinux或linux,版本待定)(3)必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。从事嵌入式软件开发的好处是:(1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切 入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。(3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般 都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。(4)兴趣所在,这是最主要的。
资料直通车:最新Linux内核源码资料文档+视频资料
内核学习地址:Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈
从事嵌入式软件开发的缺点是:(1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。(2)这方面的企业数量要远少于企业计算类企业。(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。(4)平台依托强,换平台比较辛苦。兴趣的由来:1、成功观念不同,不虚度此生,就是我的成功。2、喜欢思考,挑战逻辑思维。3、喜欢C语言4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。方法步骤:1、基础知识:目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。科目:数字电路、计算机组成原理、嵌入式微处理器结构。汇编语言、C/C++、编译原理、离散数学。数据结构和算法、操作系统、软件工程、网络、数据库。方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。thec++programminglanguage(一直没时间读)、数据结构-C2。2、学习linux:目的:深入掌握linux系统。方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深, 那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。3、学习嵌入式linux:目的:掌握嵌入式处理器其及系统.方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。(2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。(3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。4、深入学习:A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDM A等。C、网络与信息安全技术:如加密技术,数字证书CA等。D、DSP技术:DigitalSignalProcess,DSP处理器通过硬件实现数字信号处理算 法。说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的!技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。Linux基础1、《Linux与UnixShell编程指南》C语言基础1、《CPrimerPlus,5thEdition》【美】StephenPrata着2、《TheCProgrammingLanguage,2ndEdition》【美】BrianW.KernighanDavidM.Rithie(K&R)着3、《AdvancedProgrammingintheUNIXEnvironment,2ndEdition》(APUE)4、《嵌入式Linux应用程序开发详解》Linux内核1、《深入理解Linux内核》(第三版)2、《Linux内核源代码情景分析》毛德操胡希明著研发方向1、《UNIXNetworkProgramming》(UNP)2、《TCP/IP详解》3、《Linux内核编程》4、《Linux设备驱动开发》(LDD)5、《Linux高级程序设计》杨宗德著硬件基础1、《ARM体系结构与编程》杜春雷着2、S3C2410Datasheet英语基础1、《计算机与通信专业英语》系统教程1、《嵌入式系统――体系结构、编程与设计》2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操胡希明 著3、《BuildingEmbeddedLinuxSystems》4、《嵌入式ARM系统原理与实例开发》杨宗德著理论基础1、《算法导论》2、《数据结构(C语言版)》3、《计算机组织与体系结构?性能分析》4、《深入理解计算机系统》【美】RandalE.Bryant DavidO''Hallaron着5、《操作系统:精髓与设计原理》6、《编译原理》7、《数据通信与计算机网络》8、《数据压缩原理与应用》C语言书籍推荐1.TheCprogramminglanguage《C程序设计语言》2.PointersonC《C和指针》3.Ctrapsandpitfalls《C陷阱与缺陷》4.ExpertCLanuage《专家C编程》5.WritingCleanCode-----MicrosoftTechiniquesforDevelopingBug-freeCPrograms《编程精粹--Microsoft编写优质无错C程序秘诀》6.ProgrammingEmbeddedSystemsinCandC++《嵌入式系统编程》7.《C语言嵌入式系统编程**》8.《高质量C++/C编程指南》尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。 这里很多书其实是推荐而已,不必太在意,关键还是基础,才是重中之重!!!喜欢小编可以关注哦}

我要回帖

更多关于 嵌入式单片机开发 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信