粉丝3.7万获赞11.8万

分享一个实用客舍,给大家分享一下给用户做的一个万年历的一个项目,它跟普通的万年历不一样,它这里时间和年月日它需要交替的一个显示,并且两个按钮就是能够让它调时。 比如说我这里按下去之后,他这里就会进入调试状态,然后按这个调再增,然后再按这个就调分。这种类似于这种给客户定制的, 我们不会因为钱少就敷衍的去做,我们都会秉持着一个认真负责的一个态度去给客户把一个东西给做,好 像这个产品客户改了一版又一版,改了一版又一版,这个同学就开始不懂老师的一个想要什么,然后后面跟老师沟通之后,他又跟基于原先的需求又改了一版,但我们没有收他一分钱,我们还是 跟帮他免费改完了,然后并且改完之后我们都给他讲解怎么去使用,然后教他使用,然后帮他答疑解惑各种问题。

这是我做的一个灯塔的一个单片机,它的模块有一个 led 的 和一个 一个主板。它呢有几个端子?一个是 g v s, 他这个颜色必须对应,要不会烧坏。这是我的程序, 你讲讲这程序,这个程序呢?他是循环三次, 他那个引脚输出六设置为高五百毫秒之后,之后六号六输出的电瓶低 就灭了,之后延迟五百毫秒,之后重复执行三次,之后延迟两千毫秒。嗯, 虽然它是这样的频率开关,开关,开关。

看一下我们读数据的操作, program read, 这是咱们程序存储器的数据读, 它的数据读和我们的就是一方批量读,是原理是一样的,都是需要把我们的地址通过参数传过来,传过来以后我们地址的 d 位给我们的 d 位集成器,因为它是寻址空间是两 k 二十一位的,所以呢把低位给我们地址的低位,然后高位呢与上一个就是我们地址数据,与上一个零 f f 零零,然后向右移八位,也就是高八位的地址数据。



咱学了半天单片机,那到底什么是单片机?单片机它是怎么工作的?其实单片机它就是一个迷你版的小电脑,大家想象一下共享单车的那个锁,洗衣机、 空调,包括一个咱带的智能手表,它里边都有类似这样的小芯片,这个玩意,它就是单片机。当然你不能说我用单片机来去追剧、玩网游, 可是它有它特定的作用,能够执行一些特定的指令,完成特定的功能。那大家想这个迷你版的小电脑,它里边到底有什么呀?第一个 cpu 相当于公司里的领导,他啥都管计,做预算, 它又做控制,那领导说了,灯泡得亮,这个电机得转。所以对于单反机来说,这个 cpu 它相当于就是核心的控制大脑。第二部分,存储器 run, 它属于只读存储器就 read only memory, 这里边存的是用户编好的程序, 那 cpu 是 从止读存储器当中取指令,一条条的开始执行。 rom 和 ram 是 不一样的, ram 是 随机存储器,我们在执行指令的过程当中会产生一些临时变量,这个临时变量就存到 ram 当中对它的作用,存储变量。 那咱们还用公司举例子,这个 rom 相当于公司的一些员工手册固定的流程,比如怎么申请请假,怎么申请加班,你按着步骤做就行。 那这个 ram 相当于是公司的一些临时的安排,比如领导派你组织个部门聚餐,这聚餐肯定不能天天聚,所以这就是一个临时性的,也有它该有的步骤。这三部分有了之后,还有一个输入输出部分, i o 这个位置, 那么输入输出模块它主要负责的 cpu 和外部电路的通信。像什么?有点像公司的前台,我们现在已经知道了单片机由 cpu 入 i o 组成,那它是怎么工作的呢? 我们可以以点亮一个 led 灯为例,分享一下这个过程。第一步你要先写程序,程序特别简单,掉了一个库函数,还有 gpu red pin, 这里边我们写的是 reset, 这个是零, 这个是一,那零和一对应的是亮还是灭?你得对照原理图,灯的原理图在这大家一看就知道了,这是不是给个 d, 它是能亮的,在亮和灭之间,我们通过延值函数 做了一个间隔,这个灯它就会闪烁,这是有几个任务,这个现象会比较酷。第一步写指令,就是单片机程序。第二步,咱们要把程序写进去,做一个烧录,再看这是 st link 仿真器,就长得有点像 u 盘, 插在电脑上,在 ko 当中点击下载,然后你再复位程序的现象就会有。第一步做完之后,我们的代码写到入幕当中了,这里边就是还有一条一条的执行, 我们刚才就看到了一个闪烁的现象。第三步就是执行指令,如果 cpu 执行的是一些运算指令, z 等于 x 加 y, 那 运算过程当中产生的这些变量就得放到这个随机存取器当中,所以 ram 这里可能有具体的值,比如说二 八加起来就是十。最后提醒一下,单盘机干活的时候有一个最最重要的内容,什么呢?节拍对一家公司来说得有基本的考勤制度,几点上班, 几点下班,几点午休。单片机的各个模块之间,它也是要有一个统一节拍的这个东西就对应了单片机里边的时钟,大家可以想象成时钟每滴答一下, cpu 就 执行一条指令,那么这个滴答的速度就决定了 cpu 的 运转速度,这就是主频,主频越高肯定运转速度也越快。一般的单片机的主频是照级别的, 比如说 m 三 f 幺零三,主流的一款七十二兆,像 f 四系列的,比如说一百六十八兆,是不是跟我们电脑 cpu 的 主频差远了?但是单片机特定的用途,它干的是一个特定的任务,做指定的环。



好,那么讲完了,单片机啊,在这呢,我们先不去讲比较复杂的那种 soc 啊,我们讲一个什么呢?叫 stm 三二 h 七系列的单机啊,那么 h 七系列呢? 啊?七四七啊,还有这个七四五这两款处理器,这两款芯片,哎,他是多核的他是多核的啊,啊,我们姑且呢把他看做也是易购的啊。 啊,它这个 h 七四七或者是七四五这个芯片内部,它的是,呃,集成了哪些核呢?哎,它是双核 啊,七四二七四二我没听过啊,一个呢是 cortex m 七,还有一个呢是 cortex m 四,所以它有两个核, 一个是 m 七核,一个是 m 四核,都集成在一个芯片内部了啊, 好,那么有同学呢就问到关键的地方说,既然你看这是多核,已购两个核了,这应该能跑 linux 了吧?跑不了,哈哈。跑不了啊, 它最多只能跑一个 rto s 操作系统,哎,它跑不了 linux, 哎,就是它这个啊,这个芯片呢,它的这个性能还没有达到能跑 linux 的 那个程度啊。呃,最主要的什么呢?它没有 mmu 啊,没有这个,呃, 虚拟内存管理单元啊。呃,这个是我从那个 stm 三二官网然后呢截的一张图啊。 好,那么 m 七,呃, m 七和 m 四,我们来了解一下啊,就是这个 m 七和 m 四啊,为什么要在一个芯片内部啊,集成两个核啊, 这个 m 七核呢?它这个性能啊,比较高啊,它的主频呢,可以达到四百八十兆赫兹, 然后这个 m 四核呢,它的主频也挺高的,可以到二百四十兆赫兹。哎哎,都是有支持这个,呃 fpu, 也就是呃浮点预算单元啊, 然后之所以用两个核呢是什么呢?就是在比比原来,比如说这个 f 七系列的单频机呢,它进一步的提升它的性能, 对于一些复杂计算的图像处理,图形处理的显示的这个工作,哎,他交给这个 m 七的核去做啊。啊, m 四核的可以去处理什么呢?实时控制,比如说我们去做一些啊,电机啊,做一些电机的控制,哎啊, 这会呢可以用 m 四盒的,就是他们两个呢,分工不太一样啊,定位不太一样,各有各的擅长啊,应用的场景 啊。那为什么用一个大,一个性能好一点的,一个性能差一点的呢?这个呢主要就是考虑什么呢?他要考虑一个性能的平衡,平衡啊,假如说我需要去做一些这个图形,图形处理的时候我可以用这个 m 七 啊,那假如说我只是去做一些电机的控制,然后这会待机了是吧?啊,不需要去显示图形了,可能休眠了,哎,那么此时呢我可以只让这个 m 四盒工作,把这个 m 七盒呢给它关闭, 那么这个时候整个这个芯片的啊,这个功耗就降下来了啊,哎,这是 m 七核和 m 四核啊,然后它们两个之间,它们两个啊都可以跑 free r 二 s 啊, 没有谁是主谁是从啊,那么一般呢是呃, m 七核先运行起来,然后呢再把 m 四核给启动了, 然后在运行的过程当中没有谁是主谁是从啊,他们地位呢,都是这个平等的,那么这两个盒都可以跑 free rqs 操作系统。然后有的时候呢, 呃,这个盒两个盒之间呢可能需要通信,需要通信的时候那怎么去通信呢?其实呢就是利用了共享内存的技术, 利用共享内存的技术,我在这个啊 ram 当中呢,开辟一块共享的区域,然后这个核和这两个核呢,都可以去访问啊,比如这 m 七的核往里面放一些数据,然后 m 四核呢,从这个内存区域当中呢读走 啊,是这样的一个机制啊,然后这两个核再去使用的时候,我们再去开发代码的时候,哎, 是两套代码工程啊,就是这个 free rs 和这个 free rs, 这是一个代码工程,这是一个代码工程,两个代码工程啊,并不是说我们在一个 q 啊工程里面把两个核的代码都写了,不是,哎,各干各的事啊,然后呢他们可以通过共享内存的机制呢去通信 啊,在这呢我做了一个总结啊,我们先来讲这个单面机啊, h 七系列的这个单面机啊,它比较简单,一会呢我们再可以了解一下 soc, soc 呢?比这个要复杂一点啊,大家理解了这个,你再去理解这个, 呃, soc 就 会容易一些啊,原理都差不太多。比如说啊,我们这个 m 七盒 啊,从这个网络端或者是从这个啊界面上收到了一个命令,说我要去啊控制 m 四盒的一个 led 灯,这个 led 灯呢是由 m 四盒去控制的, 比如说这个 m 七盒呢,它有一界面的显示功能啊,然后这个 m 四盒呢,它可能呢有一个啊 led 灯, 哎,控制一个 led 灯亮灭。那么这个时候它处理的一个大概的流程是什么样子的啊? 刚才我们说了,两个盒之间通信的时候,必须要有一段共享内存,哎,这共享内存里面有什么数据呢?我们可以去定义它,比如说包括命令、数据标志等等的。然后呢 这个 h 七呢,它提供了一个硬件的单元,硬件的机制啊。啊,这个硬件的机制是什么呢?其实就是用来保证叫做什么呀? i p c, 哎。呃,如果大家学过 linux, 对 i p c 就 不陌生了啊,或者用过 free h s 就是 多县城之间,县城和县城之间通信的时候啊,一种 哎,同步的机制是吧?哎,就是两个任务都要访问同一个资源,同同这个两个县城,哎,两或者是两个进程 都要访问同一个资源的时候,就是这个共享内存,你必须要有一个同步的机制,是不是?哎?同时访问了,那谁先访问,谁后访问啊?是不是?那就是谁上锁, 哎,谁上了锁谁去访问,哎,访问完了以后把锁释放,那另外一个任务呢,就可以去获取到这个资源了啊,大概呢就是这个意思,在 r to s 操作系统,连那个操作系统当中都会涉及到这个内容,叫 itc。 那么在 h 七系列当中呢,实现这个 ipc 呢,可以基于一个硬件的信号量,叫 hsm, 哎,这是硬件的啊,所以它的安全性呢,会更高,比这个软件的这种护视量啊,信号量啊,它个它这个性能啊要好一些。 那首先呢 m 七核心啊,通过这个一些运算,然后呢获先获取 hsm, 获取这个信号量, 那么将控制 id 灯的命令和数据写入到结构体当中,写完了,是吧?哎,他对于这个共享资源已经使用完了,哎,将将这个 hsm 释放掉,哎,然后呢看他要发送中断, 哎,就是我在两个盒之间,虽然我有共享内存,但是呢我这个盒访问完了以后 是吧,哎,我得去通知一下这个盒,那么使用的就是类似于中段的这种技术啊,通知一下 m 四盒,那么 m 四盒收到这个通知了,哎,获取 h s e m 哎,这个锁获取到了以后,哎, 那么就去改变这个 led 灯的状态,再释放 h s e m 啊,你看流程呢,就是这样子的啊,所以这个呢,其实在两个盒之间呢,哎,我们就可以理解为 叫做多。呃,有两个进程啊,或者是两个进程,进程这个概念呢,可能更合适一些啊。进程这个概念可能更合适一些,就像 linux 里面的这个进程一样。两个进程啊,如何去通信的问题 啊。所以多核我们通过 h 七这个例子啊, h 七这个例子我们可以了解到为什么使用多核 ego, 它的优点是什么? 首先它的能效比是吧,能够做到很高,哎,两个盒嘛,各干各的事是不是,哎。 啊,介绍一下这个课程啊。呃,如果大家对于刚才的这个课程呢比较感兴趣啊,然后呢可以报名学一下我们的这个三号链接啊,在这个课程里面呢,这是我讲的啊,有三部分的内容,哎,第一部分呢 就是关于 arm 单机本身的一些知识啊, arm 单机就跟学习五幺单机一样, arm 单机啊,它的 硬件架构呀,它的启动流程啊,它的库函数怎么用啊?怎么实现计算器的配置啊?实现一个功能,使能外设功能模块,使能外设 模块啊,这个都是比较基础的内容了啊,大家在别的课程当中,我相信呢,也能够学到这些基本的知识点,那么在咱们的课程当中呢, 我们是给大家推荐可以学到啊,剩下的两部分内容,剩下两部分内容什么呢?哎,大家可以感受一下,就我刚才给大家讲到的知识点,就是实战相关的啊,就完全把我的一个代码可以放在自己的代码工程当中,我们有几千位小伙伴报名课程, 百分之八十的同学呢,都是参加工作的啊,都是这么干的啊,那么在这个课程当中呢,其实我是,嗯,什么样的一个思路呢?就是做项目的一样的一个思路, 哎,参照的我们公司的一个空气质量控制器,哎,你看这个控制器呢,有 ui 界面,有 modbus 的 功能,然后呢有互联网的 wifi 互联网的功能,然后呢有看总线,看 open 的 功能,是吧?哎,那么在课程当中呢,我就会给大家讲 modbus 怎么实现, wifi 互联网怎么实现,这都是用在实际的项目当中啊,的代码啊, ui 界面怎么开发,看总线啊,看 open 讲解,你看状态机,环形队列啊,二分查表等等的啊,还有这个这个软件滤波呀,然后调度,这个裸机调度啊,在这个课程当中都能学到。