单片机开发不可避免会遇到很多头疼的问题,例如如何分配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等的功能前已提及,而另一些寄存器的功能在后面有关部分再作进一步介绍

文章相对比较长,字数比较多,大家可以先打开头像关注我,之后慢慢看,///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了,私信我就可以哦~点我头像左下角黑色字体加我也能领取哦///

对单片机感兴趣的朋友可以找我我录制了一些关于单片机的入门教程有需要的童鞋找我拿就行私信我“林老师”就可以拿点击打开我的头像就能领取

单片机开发不可避免会遇到很多头疼的问题相关推荐

  1. 单片机开发工程师需要学哪些,单片机工作的基本条件

    记得刚毕业的时候,同学们都很迷茫,不知道自己以后要做什么工作. 有部分同学向社会低头,做了本专业,每天累死累活干的像条狗,10年过去了每天也才拿着上万块出头的工资. 也有一部分人选择为自己而活,去做自 ...

  2. c语言使单片机输出低电平,单片机开发中的一些实用技巧

    很多朋友正在学习单片机开发技术,但开发中免不了要碰到这样.那样的问题,有些问题可能无碍大局,但有一些问题却直接影响到产品的成本.体积.性能.这里介绍笔者的几个技巧,希望对大家的工作有帮助. 一.C语言 ...

  3. hc05与单片机连接图_基于proteus的51单片机开发实例(13)-LED指示那个按键被按下

    1. 基于proteus的51单片机开发实例(13)-LED指示那个按键被按下 1.1. 实验目的 本实例将实现两路外部中断的检测和识别,让我们能够更好地理解51单片机的外部中断以及中断优先级的概念. ...

  4. 再搞75块单片机开发板!

    大家好,我是张巧龙,还记得当初自己用51开发板点亮了第一颗LED灯吗? 51单片机,yyds!不多说,直接抽奖送75块! 兴趣爱好 如果你对一件事失去了兴趣,我觉得你把这件事坚持做下去的概率很低. 反 ...

  5. c++程序设计_基于proteus的51单片机开发实例30-模块化程序设计

    1. 基于proteus的51单片机开发实例30-模块化程序设计 1.1. 实验目的 模块化程序设计 不知不觉我们的51单片机开发实例已经进行到第三十篇了,是时候进行一个总结和反思了,总结什么?反思什 ...

  6. STM32单片机开发之让蜂鸣器发声

    本篇文章依旧是按照之前的stm32f10x系列单片机进行开发,但博主会教大家如何去看电路原理图以及如何去看开发手册,并且本系列文章不使用stm32提供的库函数,完全从0开始编写,这样能带大家更好的认识 ...

  7. DIY自制STC单片机开发板

    提示:本文属于技术的交流,如有抄袭请联系删除. 文章目录 开始之前 一.单片机硬件选择以及原理图绘制 1.MCU 2.LED点阵 3.蜂鸣器 4.光强度.烟雾浓度 5.温湿度 6.超声波 7.MP3 ...

  8. 嵌入式开发要难于单片机开发?

    关注.星标公众号,直达精彩内容 ID:技术让梦想更伟大 来源:网络素材 单片机和嵌入式,其实没有什么标准的定义来区分他们,对于进行过单片机和嵌入式开发的开发者来说,都有他们自己的定义,接下来,就谈谈本 ...

  9. 51单片机开发入门(3)-IO口应用

    前言 根据前面对51单片机的了解和基础理论知识的掌握,接下来就正式进入单片机开发--实践.引用最近几天追的电视剧<觉醒年代>里新文化领袖陈独秀.李大钊等革命前辈们一直在说的和在践行的马克思 ...

最新文章

  1. poj 2362 Square
  2. 二、 创建3D场景的一般步骤
  3. 文献记录(part60)--高维模型选择方法综述
  4. 四张图带你了解Tomcat系统架构--让面试官颤抖的Tomcat回答系列
  5. 大疆云台如何使用华为mate20pro_华为Mate30+大疆灵眸Osmo3,让你的照片和短视频称霸朋友圈...
  6. 深度学习2.0-15.随机梯度下降之梯度下降简介
  7. vim 的复制粘贴剪切
  8. tpac100控制器设置教程_TP-link AC100控制器配置的详细方法
  9. PPT母版制作及自定义主题
  10. Team Leader 究竟要不要写代码?
  11. 微信商户平台(商户号)申请流程(仅供参考)
  12. Supervisor进程管理详解
  13. 一年中所有节日的排列顺序_我国一年中的传统节日。(按顺序)
  14. Solidity简单例子-代理投票
  15. 有关Android导览(Android Navigation component)
  16. ad stm8l 热电偶_STM8L之ADC
  17. Canvas绘制圆点线段
  18. Java WEB开发实战 之 第二部分:Web应用基础知识【私塾在线原创】
  19. 实现一个英文词典的功能
  20. Google Chrome,是由Google开发的,一款设计非常简单、十分高效的Web浏览工具!

热门文章

  1. 【甘肃银行:进一步加大在区块链等领域的布局】GBCAX
  2. 链栈的表示和实现(C++)
  3. MySql定期备份数据到历史表的解决方案
  4. Unity URP Rendering Path对比
  5. JfreeChart常用图形实现
  6. Git初始化项目设置向导(CSDN)
  7. MySQL数据库的存储引擎
  8. 我的世界服务器无限繁殖,村民无限繁殖!我的世界自制超速繁殖机
  9. html组态插件_组态 web组态 组态插件 编辑器 工业组态 物联网组态 组态编辑器...
  10. 前端框架,库,组件,插件,控件的理解