• 振南技术干货集:振南当年入门C语言和单片机的那些事儿(5)


    注解目录

    第一章《振南当年入门 C 语言和单片机的那些事儿》

    1、注定堕入单片机

    1.1 懵懂好奇的我

    (小时候好奇的性格经常让我屁股开花。初中开始对计算机产生兴趣,并一发不可收拾。)

    1.2 我的 C 语言学习经历

    (上大学后自学 C 语言。遇到“能人”加入 ACM 竞赛。感觉 C 语言乐趣多多,程序如人生。)

    1.3 C 语言的顶级赛事

    (ACM 国际程序设计竞赛在东北被我们发扬光大。ACM 竞赛浙大的一段传奇佳话。振南在关注的 IOCCC 国际混乱 C 代码大赛。网吧包宿学 C 语言惊呆室友。)

    1.4 岔路口上选择单片机

    (搞纯软件还是搞单片机,这是一个抉择。鬼才杜撰拉我进入单片机快车道。)

    1.5 窗户纸破了

    (入门阶段的困惑,看破 C 语言与单片机之间的鸿沟。)

    2 、看穿单片机

    2.1 CPU 模型

    (CISC 与 RISC 指令集。CPU 如何执行指令。汇编不是第一代编程语言,打孔纸带才是。)

    2.2 存储器模型

    (存储器就是一个指令和数据的容器。)

    2.3 总线模型

    (地址、数据和控制三大总线。贯穿整个单片机芯片的通路。)

    2.4 外设模型

    3、单片机跑起来

    3.1 时钟系统

    (时钟是单片机激励和血液。时钟频率不能无限提高。)

    3.2 二进制

    (为什么单片机采用二进制?振南告诉你如果单片机使用十进制会怎样?)

    3.3 中断机制

    (中断不是在给 CPU 捣乱。中断对于单片机为什么如何重要?)

    单片机跑起来

    好,有了CPU、存储器、总线以及外设,我们把它们有机地组合封装在一起,再把各个外设、总线的信号,以及供电和地通过引脚引出来,这就是一片完整的单片机芯片。等等,,要让单片机跑起来似乎还少了些什么?对,还有时钟!

    3.1 时钟系统


    如果上面所说的这些都只是单片机芯片的躯亮的话,那么时钟就是在其中流动的血液和跳动的脉搏。时钟对于单片机来说是至关重要的,它是整个系统的激励。它是否稳定、是否精确、是否高速都直接影响了单片机中所有电路的运作,包括CPU、总线、外设等等。从本质上来说时钟就是一个方波信号,如图 1.17 所示。


    图1.17 时钟在单片机中占有至关重要的地位

    有人说:“既然时钟的快慢决定了单片机的速度,那只要尽量提高时钟频率就可以让单片机的性能得到飞跃了!?”原理上来说确实是这样的,但是因为很多因素,比如半导体材料的特性、芯片制造工艺等,导致时钟频率并不能无限制地提高(过高频率的时钟信号会导致单片机电路工作异常,问题大多出现在信号的完全性上)。关于这一问题的解释请见图1.18。更形象的说,这就如同人的心跳不能太快,否则血液还没来得及将氧气和养份送到各个组织,就已经急逝而过了。同时,血管也无法承载如此高的血压和血液速度,最终导致人体整体机能的紊乱。相反,心跳又不能过缓,否则血液同样也无法完成输送给养的工作(单片机的时钟过慢可能无法满足我们的应用需求,所以实际应用过程中,选取一个合适的工作时钟是非常


    图1.18 时钟频率过高将导致信号完整性受损

    重要的)。

    不过又说回来了,我们很多时候确实希望单片机运行得越快越好,比如一些计算量很大的实时算法、信号采集、音视频的录制与播放等等。所以无数的工程师、科学家都在致力于提高硬件性能、提高时钟频率、提高加工工艺水平,甚至是尝试新的半导体材料或是改进电路结构但是尽管如此,时钟频率仍然会有一个无法逾越的顶线。而且人们发现时钟越快,电路工作时的功耗越大。这些窘境以及对高性能低功耗的不断追求,催生了CPU芯片向着多核的方向开始发展(时钟频率不再提升,而是通过增加芯片中CPU内核的数量来提高整体的性能)。振南上面说,时钟越快,功耗越大。这不难理解,电路不工作时功耗一定最小;一旦有了时钟,它开始工作了,那功耗必然变大。这一原理是现在很多单片机芯片中实现低功耗的根本基础。单片机的设计者为每一个外设电路都配置了一个时钟开关(这些开关也是一些挂接在CPU总线上的特殊功能寄存器,因此可由 CPU 直接控制),从而可以控制外设停机还是工作。这在很大程度上降低了单片机的整体功耗。这就是现在一些高级单片机中的一个新概念—时钟解(CC)。它实际上可能会更加强大,不光可以关闭某个外设的时钟供应,而且还可以调节时钟的频率,让外设可以工作在最为适宜的功耗水平下。

  • 相关阅读:
    php摄影图片相册分享网站管理系统mysql
    太赞了!这个神器,让医院的效率翻了10倍!
    STARK中的FRI代码解析
    AGV搬运机器人能给企业带来哪些效益?
    接口与抽象类的相同与不同
    【008】将多个捕获文件进行合并
    Unreal Property System (Reflection) 虚幻属性系统(反射)
    处理Exception的几种实践
    C:字符串函数(续)-学习笔记
    最强cron解析器
  • 原文地址:https://blog.csdn.net/weixin_51218153/article/details/134328770