最近小编这几天弄了弄硬件的编程,感觉很有趣,同时跟纯软件编程肯定是有很多区别的,所以在此和大家说道说道。

一、硬件编程

其实说道硬件编程,大家肯定乍一听感觉很难,很高大上,但是我想说的是除了需要了解一些硬件编程中对于各种机器工作状态的理解之外,剩下的就真没有什么了,基本都是逻辑and逻辑and实际,说白了就是看文档,理清楚逻辑再加上一些根据实际状况的调试就可以很轻松的能够搞定硬件编程。

硬件编程是什么呢?其实我们用到的电脑里面的驱动就是面向硬件的编程,只不过驱动程序是真正硬件里面程序的一种辅助程序。硬件编程就是对可以进行逻辑操控的硬件进行编程,让他做你想要做的事情,这里说道可编程硬件 ,基本上都是针对的一类有存储功能的,逻辑可变的一系列芯片的一个总称,常见的有51单片机,Arduino,arm处理器(一般手机上面用的)等等。一般常见的基础电子元件是不可以被编程的,如电阻,LED,电子管等

如果你可以用你写的程序来操作这些类似CPU的处理器,那么恭喜你,你已经迈入了硬件工程师领域的大门了。说到硬件编程,为了操作简单,和硬件接触方便,通常用的语言都是C,C++,汇编等基础语言,在一般程序员上手上来说的话是完全没有问题的,尤其是到了arduino时代,用C编程arduino的程序简直不要这么简单。

二、硬件选择

一般来讲的话,如果真心想要学习硬件编程的人都会从51系列的单片机入手,包括STC89C52,STC12S5C60S等等,如果想要进一步进阶的话,要接触到STM32系列的单片机了,他同样比较简单,但是性能和效率上要比基础的51单片机好很多,然后下一步肯定就是面向ARM的编程了,想要做ARM的编程,首先需要了解一些关于Linux的知识,因为一般用ARM的单片机光有程序已经是不够的了,还必须要有硬件系统才可以很好的管理,也为编程者省去了很多事情,还有Linux的内核对于基础硬件的操作也很好,Linux的代码也是用C语言写的,所以他们臭味相投。

如果你只是想要了解一下硬件编程,想做为一个个人兴趣爱好的话,可以从arduino来入手,因为他基本不需要你懂单片机中的什么寄存器了,中断了就可以让你实现很多功能,所以比较容易做出东西,可以让初学者有一个很简单的认识,并且arduino的功能也是非常强大,它自己集成了很多的硬件处理库,方便操作不同的硬件电路,它还可以直接用对象的角度来考虑整个硬件的世界,比较适合某些自身程序员。

三、编程

其实说道编程,感觉天下的程序是一家,不管是纯软件编程还是硬件中的软件编程也好,核心的语句总是那么几个,核心的流程也总是那么几个,并且考虑的东西都是一样的,怎样可以获得正确的数据,怎样去处理。

然而不同的地方在于可能纯软件编程中需要的数据要不就是从界面(interface)上人输入的,要不就是获得已有的,要不就是从某个函数方法中获得的。但是硬件编程需要从硬件中读取数据,数据有的时候不是很直接,类似于信号一类的东西,比如有的硬件(传感器)反馈回来的是一组电平数,或者是一段PWM波形,你就需要去按照说明文档对其进行合理的分析,然后才能得到你想要的结果,然后需要考虑如何显示,像是在屏幕上哪个像素点亮,哪个像素点灭等一系列细小的东西。

然后再硬件编程中绝大部分都是单线程的编程所以需要考虑时序的问题,可能稍微逻辑不好就会导致整个数据的读取错误,并且单片机在操作其他硬件的时候是需要对硬件进行加电初始化的,还有进行加点激励才会读取数据的,对于这些情况也需要注意,这个时候理解一些计算机或者硬件工作原理就显得格外重要了。

四、总结

其实我感觉每个程序员都应该去经历一些硬件编程的考验,从我们经历的各种学习来看包括网络原理,操作系统,软考基础等的训练,我再来看硬件程序的编写和硬件说明书,就会突然发现有很多熟悉的身影,因为他们就是真真正正的用在这些硬件上面的理论,所以我们写程序的时候也不能光考虑最后的实现,还要考虑实际中电路或者硬件的工作方法,这个时候我们写出来的程序肯定会更加的高效、更加的有依据。

面向硬件编程的一些思考相关推荐

  1. 面向业务和面向硬件编程

    计算机程序设计思想越来越有意思,充满了哲学的味道,今天总结下分层的设计优化思想:最上层面向业务.和最底层面向硬件. 面向业务编程 面向业务编程,就好比样本决定算法(数据工程师),而不是拿模型套问题(机 ...

  2. 编程的技术|艺术|术术——面向开发者编程

    同学们好,我叫梁峻墅.今天想和大家分享的话题是:编程的技术|艺术|术术.这里的"术术"你可以理解为哲学. 面向开发者编程,与大家平常经常说的面向过程编程,面向对象编程等不太一样.我 ...

  3. 面向数据编程的编程语言_面向数据科学家的10个很棒的编程项目

    面向数据编程的编程语言 Practice is an essential part of learning. But in my experience learning programming, fi ...

  4. Java 中的面向数据编程

    近年来, Amber项目为 Java 带来了许多新特性-- 局部变量类型推断. 文本块. 记录类. 封印类. 模式匹配 等等.虽然这些特性都是独立的,但也可以组合在一起使用.具体地说,记录类.封印类和 ...

  5. 前端思想实现:面向UI编程_____前端框架设计开发

    引子,我去小说看多了,写博客竟然写引子了!!!不过,没引子不知道怎么写了.言归正传吧,前端这个职业,也就这几年刚刚火起来的职业,以前那个混乱的年代,前端要么是UI设计师代劳解决问题,要么就是后端程序员 ...

  6. 程序员,技术的“背锅侠”,盘点 2020 年面向监狱编程的那些事!

    [CSDN 编者按]过去一年,"删库跑路".安全漏洞等事件层出不穷,企业.技术人深受其害,作为一名程序员,在新的一年即将到来之际,我们该如何避免面向监狱编程? 作者 | 马超    ...

  7. 面向对象,面向过程编程

    很多时候,我们都是用面向对象语言进行面向过程编码.     1. 滥用 getter.setter 方法. 滥用getter,setter方法很容易造成违反封装特性.数据没有访问权限控制,任何代码都可 ...

  8. Go 开发关键技术指南 | Go 面向失败编程 (内含超全知识大图)

    作者 | 杨成立(忘篱) 阿里巴巴高级技术专家 关注"阿里巴巴云原生"公众号,回复 Go 即可查看清晰知识大图! 导读:从问题本身出发,不局限于 Go 语言,探讨服务器中常常遇到的 ...

  9. 切面是异步还是同步操作‘_Autofac的AOP面向切面编程研究

    什么是AOP: 我的理解是 把系统性的编程工作封装起来 =>我给这个取个名字叫 "Aspect",然后通过AOP技术把它切进我们的业务逻辑代码 => "业务& ...

  10. 我们来谈谈面向指针编程的那些事

    面向对象编程,面向设计模式编 程(亦即设计模式),面向接口编程,面向模板编程(亦即泛型编程),面向函数编程(亦即函数式编程),面向多核时代的并行编程,面向大数据的机器学习编 程--这么多年,大家要面向 ...

最新文章

  1. 【青少年编程】黄羽恒:漫天飞雪
  2. 学了那么久的计算机视觉,竟然还不懂YOLO?!
  3. mysql封装成类_python操作mysql封装成类
  4. Android进阶:六、在子线程中直接使用 Toast 及其原理
  5. Tensorflow 相关概念
  6. Django: OperationalError / no such table
  7. 使用C#读取XML节点,修改XML节点
  8. 记住:永远不要在MySQL中使用utf8,请使用utf8mb4
  9. spark 程序配置日志级别 通过log4j
  10. ipython怎么安装_ipython安装(python3.6.1)(转载)
  11. 自然语言处理-jieba
  12. 微服务探索:nuoyi
  13. c++高效位运算函数之 __builtin_
  14. 教你30岁前挣够500万
  15. MD5的标准幻数的不同写法
  16. android 获取摄像头像素
  17. Android源码下载(官方版)
  18. CAPL入门:结合panel面板实现按钮触发功能
  19. C#之 十九 使用WinForm控件
  20. 白话讲懂wait notify 和park unpark的使用示例和区别

热门文章

  1. 把桌面路径移动到D盘的一种方法
  2. 图像处理:根据像素坐标及像素尺寸大小裁剪遥感影像
  3. 嵌入式系统课程大作业设计报告
  4. 20年在线考试计算机应用基础,20年春福师《计算机应用基础》在线作业一【参考答案】...
  5. 内存卡Android怎么删除,安卓手机怎么清理内置存储卡垃圾文件
  6. php jquery制作抖音,抖音制作优质脚本的方法在这里
  7. 不得不说的FUP P4K血型卡专用离心机
  8. go语言中文乱码gbk转UTF8
  9. non-local caffe2 编译
  10. 一周信创舆情观察(2.1~2.7)