单片机开发不可避免会遇到很多头疼的问题
单片机开发不可避免会遇到很多头疼的问题,例如如何分配CPU的时间。其实到了这个阶段我们要越来越灵活的用单片机,如果什么东西都要自己做,你会累死的。你想一想你要开车,不用什么都自己弄吧,买一辆现成的就可以了。单片机也是一样的先行者其实对很多的问题都研究透了。我们要学会运用现成的东西,把它融入到自己的程序里面。随着需求操作系统应运而生。如果学会了在操作系统上面写程序,你就再也回不到以前的那种编程方式。
当我们谈及编写围绕硬件层运行的代码时,最常提起的就是C语言。25年前,当我们从汇编语言过渡到C语言时,整个过程非常缓慢,且需求很高。
如果你想进入嵌入式编程领域,那么2020年C以及C++仍然是你应该重点学习的编程语言。
就小编个人而言,实际操作才是最佳的学习途径。所以,你也可以买一个微处理器,实际接触硬件,亲眼看到实际结果才是你最应该做的事情。
文章相对比较长,字数比较多,大家可以先打开头像关注我,之后慢慢看,///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了,私信我就可以哦~点我头像左下角黑色字体加我也能领取哦///
阅读书籍和文档
阅读书籍和文档是最关键的学习方式。你可以根据自己选择的方向(嵌入式系统、固件开发、驱动程序开发等),选择相应的书籍。
除了C/C++之外,该领域没有真正占据实际市场份额的编程语言,但是下面的新起之秀值得关注。
硬件
除了编程语言之外,硬件设计方面也有一些有趣的趋势。小编想提及的第一件事情是:RISC-V。
RISC-V是一种开源硬件指令集体系结构。它基于精简指令集计算机原理,即所谓的 RISC。与 Arm相比,制造商不需要支付许可费用即可使用 RISC-V。
面向服务器和消费者的硬件大多采用了x86硬件。我认为 RISC-V不会很快在这部分市场中赢得份额,但是它有可能应用于其他几个市场。路由器和交换机等嵌入式设备以及智能手机制造商或物联网设备都可能切换到 RISC-V架构。
现在市场已有 RISC-V的电路板,虽然价格仍然偏高,但值得关注。
除了这些还要学什么?
01
打好嵌入式编程的基础
这一阶段重点打好嵌入式软件编程的基础,包括学习Linux系统的基本应用,Linux的常用命令、C语言编程基础、常用的数据结构。
特别是C语言中对指针的理解和应用。这一阶段的主要目的是学习编程语言、开发环境、和培养自己的编程思维,为进一步学习嵌入式开发打下良好的基础。
02
学习ARM体系结构编程
这一阶段才是真正的嵌入式编程,首先我们要选择一款嵌入式CPU和一款嵌入式开发平台,目前ARM嵌入式CPU应用最广泛,这一阶段重点是学习嵌入式CPU的裸机编程,熟悉中断、定时器、串口、NAND FLASH、网络控制器、LCD屏、触摸屏等常用嵌入式外围设备的硬件工作原理,以及如何使用C语言来编程、控制这些硬件。
这一阶段除了要学习对硬件编程之外,还需要学习嵌入式硬件的知识,但是对于嵌入式软件工程师来讲,重点是学习硬件的工作原理,在掌握硬件工作原理的基础上,对硬件进行编程控制。这和硬件工程师学习的侧重点有所不同。
这一阶段对应的学校的课程主要包括模拟电路、数字电路、微机原理和单片机。这一阶段重点是要看CPU的芯片手册,大部分的参考书也是对芯片手册的翻译。
03
学习嵌入式系统的构建
这一阶段主要学习带有操作系统的嵌入式系统的构建,包括系统的启动流程、Bootloader的工作流程、UBOOT的编译、裁剪与移植、嵌入式Linux内核的裁剪、移植与编译,嵌入式根文件系统的定制、BootLoader、内核和根文件系统的烧写。
这一阶段的主要目的是掌握带有操作系统的嵌入式系统的构建和烧写过程,以及对嵌入式系统软件的总体构成有个整体认识,为我们接下来学习嵌入式应用和驱动开发打下坚实的基础。
04
学习嵌入式Linux应用程序开发
这一阶段主要学习上层的嵌入式Linux应用程序开发,包括基于Linux多进程、多线程、网络、文件与目录和QT编程。掌握嵌入式Linux环境下应用程序开发技术。
05
学习嵌入式Linux驱动程序开发
这一阶段主要学习底层嵌入式Linux设备驱动程序开发设计,包括常用的字符设备驱动、块设备驱动、LCD设备驱动、触摸屏设备驱动以及驱动程序开发中的核心技术。
程序存储器
程序是控制计算机动作的一系列命令,单片机只认识由“0”和“1”代码构成的机器指令。如前述用助记符编写的命令MOV A,#20H,换成机器认识的代码74H、20H:(写成二进制就是01110100B和00100000B)。在单片机处理问题之前必须事先将编好的程序、表格、常数汇编成机器代码后存入单片机的存储器中,该存储器称为程序存储器。程序存储器可以放在片内或片外,亦可片内片外同时设置。由于PC程序计数器为16位,使得程序存储器可用16位二进制地址,因此,内外存储器的地址最大可从0000H到FFFFH。8051内部有4k字节的ROM,就占用了由0000H~0FFFH的最低4k个字节,这时片外扩充的程序存储器地址编号应由1000H开始,如果将8051当做8031使用,不想利用片内4kROM,全用片外存储器,则地址编号仍可由0000H开始。不过,这时应使8051的第{31}脚(即EA脚)保持低电平。当EA为高电平时,用户在0000H至0FFFH范围内使用内部ROM,大于0FFFH后,单片机CPU自动访问外部程序存储器。
2.数据存储器
单片机的数据存储器由读写存储器RAM组成。其最大容量可扩展到64k,用于存储实时输入的数据。8051内部有256个单元的内部数据存储器,其中00H~7FH为内部随机存储器RAM,80H~FFH为专用寄存器区。实际使用时应首先充分利用内部存储器,从使用角度讲,搞清内部数据存储器的结构和地址分配是十分重要的。因为将来在学习指令系统和程序设计时会经常用到它们。8051内部数据存储器地址由00H至FFH共有256个字节的地址空间,该空间被分为两部分,其中内部数据RAM的地址为00H~7FH(即0~127)。而用做特殊功能寄存器的地址为80H~FFH。在此256个字节中,还开辟有一个所谓“位地址”区,该区域内不但可按字节寻址,还可按“位(bit)”寻址。对于那些需要进行位操作的数据,可以存放到这个区域。从00H到1FH安排了四组工作寄存器,每组占用8个RAM字节,记为R0~R7。究竟选用那一组寄存器,由前述标志寄存器中的RS1和RS0来选用。在这两位上放入不同的二进制数,即可选用不同的寄存器组。
对单片机感兴趣的朋友可以找我,我录制了一些关于单片机的入门教程,有需要的童鞋找我拿就行,私信我“林老师”就可以拿~点击打开我的头像就能领取
3.特殊功能寄存器
特殊功能寄存器(SFR)的地址范围为80H~FFH。在MCS-51中,除程序计数器PC和四个工作寄存器区外,其余21个特殊功能寄存器都在这SFR块中。其中5个是双字节寄存器,它们共占用了26个字节。各特殊功能寄存器的符号和地址见附表2。其中带*号的可位寻址。特殊功能寄存器反映了8051的状态,实际上是8051的状态字及控制字寄存器。用于CPU PSW便是典型一例。这些特殊功能寄存器大体上分为两类,一类与芯片的引脚有关,另一类作片内功能的控制用。与芯片引脚有关的特殊功能寄存器是P0~P3,它们实际上是4个八位锁存器(每个I/O口一个),每个锁存器附加有相应的输出驱动器和输入缓冲器就构成了一个并行口。MCS-51共有P0~P3四个这样的并行口,可提供32根I/O线,每根线都是双向的,并且大都有第二功能。其余用于芯片控制的寄存器中,累加器A、标志寄存器PSW、数据指针DPTR等的功能前已提及,而另一些寄存器的功能在后面有关部分再作进一步介绍
好了,这期分享就到这里啦,觉得对屏幕前的你有帮助的麻烦一键三连,点赞收藏加关注哦,有问题的朋友也可以在评论区评论,或者私信我
学单片机前先学什么?
学单片机前先学什么?
在开始前我有一些资料,是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」,
点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!先学c语言和数字电路
这里默认你说的单片机是51单片机,通过你的问题,我猜你的单片机应该还没有入门,如果是入门的话,一般都是从51单片机开始的。
为什么要学c语言呢?现在的单片机编程几乎用的都是c语言,有用汇编的,但是少,通常学校里面的教学还是用的汇编,但是干活解决问题一般都是用c语言。c语言的学习也是有侧重点的,电子信息专业的c语言和计算机专业的c语言就不同。电子信息这边比较侧重于更底层的操作,比如说指针,位操作,结构体这些,像文件操作这些就很少用。
为什么要学数字电路呢?其实单片机本质上就是一个数字电路,你需要了解数字电路的基本知识就行,比如说电平类型,电压多少等等,有个基本概念就行。
想比较数字电路,最重要的还是要掌握c语言。
相关问答
“玩 单片机 的比玩plc的人学历高的多”这种的说法是真的吗?我感觉这种说法有些太武断,不管是单片机还是plc都是计算机应用的一个分枝,单片机适合家用电器,电梯等控制部分,在生活中应用更多。plc在工业里应用更多,适...
网络工程专业要学习哪个课程的知识, 侧重点 在哪个? - 186***...网络工程专业(080613W)一、培养目标培养德、智、体等全面发展的,掌握计算机网络工程技术的基本理论、方法与应用,从事计算机网络工程及相关领域中的...
测控技术与仪器要学哪些基础和专业课程 - 爱笑的合欢花 的回...测控技术与仪器专业主要课程:精密机械与仪器设计、精密机械制造工程、模拟电子技术基础、数字电子技术基础,微型计算机原理与应用、控制工程基础、...
电子信息工程为什么转出人数很多?题主CC++程度不错可以往硬件单片机方向靠。硬件也不是纯硬,往嵌入式和单片机靠。确定方向时可参考关系比较好的任课老师意见。确定侧重点很重要,看题主介绍,...
自动化专业好不好?你对要学这个专业的学弟学妹有什么建议? 申...首先,要看自己的兴趣,毕业以后真正很贴近这个专业的工作用的最多的是单片机,需要有电路知识、电脑知识和程序知识。别的主要课程也很多,什么自动控...
混日子的程序员,现在想工作了。不知道选java还是C#?我和你一样,14年毕业,第一次来南京,那个时候面试笔试的java,结果去了公司却是ERP,10个月之后我裸辞了,后来又去了一家国企,做起了c#CS的开发,要知道我c#...我...
机电一体化,机电技术应用有什么分别?,PLC机电一体化应用使用...[回答]1-机电一体化技术与自动控制技术的区别。自动控制技术的侧重点是讨论控制原理、控制规律、分析方法和自动系统的构造等。机电一体化技术是将自动控...
电子元器件都认识,但为什么看不懂电路图和原理图?电子原器件都认识,但为什么不懂看电路图和原理图?★电子元器件都认识,但为什么看不懂电路图和原理图是因为你仅仅只是皮毛的学习它们的基础知识。而一套完整...
电子信息工程与计算机技术的区别?1、主要课程不同电子信息工程专业有高等数学、线性代数、概率与统计、离散数学、大学物理、信号与系统、英语、电路分析、电子技术基础、高频电子技术、电子...
蓝牙芯片和蓝牙模块有什么区别?蓝牙芯片,是包含单片机的。因为他要运行蓝牙协议栈,还有音频、数传等等。但资源更强大但是两者之间是有区别的,区别在于侧重点不同(1)、蓝牙芯片主要是完成蓝...