大家好,我们开始这个视频,那么从上一个视频开始呢,开始为大家讲解中断, 尤其是单片机当中的中断。那么这个视频里边呢,我们来讲一下我们所使用的这款五幺单片机,呃,他当中的中断系统 和相应的中断服务程序怎么编写,这里边体现了两两点,因为上个视频里已经说了,中断这个事要想能做下来,他需需要硬价和软件两方面配合, 所以说呢,我们在讲的时候呢,也分硬件和软件两方面做,中断服务程序这块呢是属于软件,而中断系统这块呢是属于硬件啊。那么在讲之前呢,我们了解一下 m c s 五幺单片机当中这个中端系统的概况啊,那么 m c s 五幺这个内核的单片机呢,一般它是 支持五个中断员,也就是五个中断申请员,有五种情况,你可以申请中断,那么这五种情况依次是外部中断零定时 tt、 零外部中断一定时 tt 和串线口。 那么希望大家呀,把这个顺序记记好,就按我写这个顺序记,这个对大家掌握这个中断呢,后面会有会带来一定的好处啊。 那么而且大家要注意,五幺单片机当中这个中断呢,他都是由单片机系统当中的硬件来产生的,也就说申请中断的这个都是单片机当中的硬件来申请中断啊。 那么大家看一下这张图,这张图呢就是我们 m c s 五幺单片机当中的这个整个终端系统的硬件图,那么关于这张图啊,首先有两点需要说明,大家看第一点,那么我们这个 输入信号啊,都是从图的最左侧进入,通过这五条通道进入啊,从最左侧进入,那么当这个输入信号能够通过中间这一系列的开关, 那么最终达到最右侧这两个框当中的某一个里边,就表示我们刚才申请中断有信号的那个,那个中断员申请的中断成功了,那么成功的也就意味着 cpu 到时候会为会执行相应的程序为他服务了。 注意这点啊,那么这个信号呢?呃,像这样的位, i 一零啊, tf 零这样的位,信号是直接可以透传的,也就说这些位不会耽误信号的传输,那么能耽误信号传输的主要就是中间这些开关,该合的得给合上啊,这是要我说的第一点, 第二点,这个图当中所出现的这些名,比如说 it 零, it 一,然后呢? ie 零, t f 零,然后 e x 零,包括 e a e s, 这里 p t 零, p x 零这些名我们在成绩当中是直接可以使用的, 那么这些名都代表着成绩当中的一个。注意,对这些名的使用,他都代表一个二进制,也就说你给他负值的时候只能负一和零,而你给你读他的时候,你读到的也是一和零,大家注意这点啊, 那么在这里边呢,你像 px 零这一这一系列开关,你负一的时候就表示开关拨到了上边,你负零的时候就表示开关拨到了下边, 拨到下边就表示这个框里边的就是低优先级中断,而上面这个框里边就是高优级,高优先级中断。那通过这个呢,我们也能看出来, mcs 五幺单片级当中的中断呢,一共优先级分了两级,分别是低级和高级,那么这里边有一个中断的打打断原则, 我说一下,那么中断的打断原则在五幺战聘机当中,就是高级可以打断低级,也就是说,假如说我正在为呃一个低油箱机的中断服务呢, 执行他的终端服务程序呢,突然有高优先机中端又来申请了,这个时候我们可以终止中间的中啊,终止低优先机中断的服务程序,转去执行高优先机的终端服务程序,是可以做到这点的啊。五幺电片机有两级优先机啊, 那么关于这些开关呢,那么大家注意这里边有个特殊的开关,你像 ie 当中这个开关 ex 零,我们给负一的时候表示开关合上,给负零的时候表示开关断开,所有的开关都按照这个原则来啊, 而这个 e a 这个开关,大家看这个开关呢,有点什么特殊性,他用条虚线把这些开关都连上了,表示啥意思呢?这就表示 你一旦给 ea 这个位负一,表示所有中断元上这个这个开关都合上了,也就说他是属于一个联动型的开关啊。那么这里边这个 e 啊,开头的这开关其实都是相应中断的允许位, 那么这个 e 其实是英语单词 enable 啊,那么你给它负一,就表示允许相应的中断,那个这个 e a 是啥意思呢?是 enable o 表示允许所有的。所以说呢,大家注意这个开关盒的时候呢,要分两级啊,而这个 it 零呢,这个两个位其实是用来表示外部中断的处罚方式的,当你给 it 零负零的时候,表示开关接到上边,那么负一的时候表开关接到下边, 注意这点啊,注意这点,那么关于这个图呢,我就说这么些,那这个图呢?这个视频大家看的时候,如果我刚才说的话,你觉得比较 快,你可以把这个停在这,然后再琢磨琢磨,或者返回去重新听一听我刚才说过的话啊。那这些东西掌握五幺单边机的这个中端系统,我的建议就是就是把这个图背脑子里边,这样你写程序的时候,你也知道有哪些名字可以用啊。 好了,那么关于这个图就说这么些,现在我们说一下这个图当中的这些位,大家看这些位啊,在我们这里边统称为中段标志位,中段标志位,注意啊,那么有一些资料当中呢,他也叫中段挂起位,你比如说啊,某 更高级别的 up 当中,他那个中断位申请位,标志位就成为标,那个挂起位啊。那么关于这些位有这么几点说明,我这里边给大家读一下啊。首先左图中红框内 比特位被设置为一的时候,表示该中断源正在向 cpu 申请中断,注意这些位啊,哪个位为一就是哪个位,就在往后面向 cpu 申请中断啊。而前面这个这个红框前面这些电路部分,他可以决定这位什么时候回一,他这边只要来信号了,能走到这个位上,那这个位就是一 啊。那第二点,红框中的比特位统称为中段标志位,有的资料当中也称为中段寡起位啊。 那么然后程序当中出现的这些这些名,大家看这这四个名, ie 零、 ie 零、 tf 零、 ietfe 这四个位啊, 这四个位在 cpu 响应中断的时候,会被 cpu 自动清零,也就是说这四个位啥时候变成一,啥时候变成零,其实我们是不用管的,这个事, cpu 变成一, cpu 都看到了,然后呢, cpu 响应中断,也就是 斜的话往中断服务程序转,那个过程当中 cpu 会自动的把它清零,所以说呢,对于我们来讲,我们可以不管这些位啊,那么但是这两个位 tiv 和 riv 这两个位, 那么 cpu 它不会自动清零,因为它一旦质疑了之后, cpu 看到了,就会向后面申请中断。 cpu 在执行中断的时候,这两个位并不会自动被清零,所以说需要我们在乘当中用 ti 等于零或 ri 等于零的方式手动来清零。 注意啊,就这个创口特殊啊,那么这个中断标志位给大家说清楚了啊, 现在我们再介绍介绍这五个中断源啊,这五个中断源其中有两个叫外部中断,就是这两条路,我把那个中间的删掉了啊,这两条路大家看。那么这个中断呢,是通过 cpu 的 p 三点二引脚或者 p 三点三引脚引入的信号, 这个引入信号有两种形式,一种是下降压的时候处罚中断,还有一种是低电瓶的处,处低电瓶的时候处罚中断,那你拨到上面的时候就表示他是低电瓶处罚中断,而拨到下边的时候表示 下降沿处罚中断。一来下降沿这位就被质疑,就往后申请中断。注意啊,通过 p 三点二、 p 三点三引引角申请的中断,称为外部中断,下降沿和低电平均可以申请中断,但是建议多使用下降沿啊,这个以后有机会我再解释啊。那么成语当中出现的这些名 在里边 i 一零, ex 零, px 零这样的,然后下边这个 ieexe 这些名吧,这不有个等吗?可以直接在成绩当中使用,注意这个两个外部中断。说到这我们再说两个定时器中断,那么五幺单片机当中啊,有 t 零和 t 一两个十六位的计数器定时器, 那么它可以用来计数,也可以用来定时,当用来计数的时候,这个计数脉冲啊,就从我们这两个引角输入,大家看 p 三点四和 p 三点五输入分别对应的不同的计数器, 那么当我们用来定时的时候,其实也是在技术,只不过这个技术脉冲啊,不来源于这两个引脚了,而是来源于,呃, 单片机里边那个时钟周期,那个时钟周期是靠精震震出来的,他时间非常准,很匀,所以说这个时候你给这两个计数器的脉冲就很匀,我通过查脉冲的个数,我就能知道时间过去了多少, 这是定时的原理啊。那么同样道理,这里出现的这些名,我们在成绩当中是可以直接使用的啊,直接使用的,那么这两个定时器中断。给大家介绍,这跟引脚有关,注意是计时的时候用引脚啊,啊,不是计时, 是记数的时候,记数的时候用音角啊。我们再说另一个串形口中断,串形口中断,我们五幺单片机啊,他有一个全双功能串口,可以搜数据,也可以发数据,搜数据的时候就通过 i x 的音角往单片机里进发出去的时候就是五幺单片机通过 t x 的音角往出送数据,那么当 注意这句话啊,当发送完一个字节的时候,也就是八个比特位的时候,他会把我们的单片将串口,会把这个 ti 位置一之一的目的就是为了让 cpu 看到,那么 cpu 一看到这位唯一了,就会申请中断,进到中断服务程序里去处理这个事 啊,处理完了,记得把这个位清清零,因为他得手动清零。同样道理,我们这个穿行口啊,在 cpu 干活的时候,我们穿行口呢,他如果一位一位收数据收够一个字节了, 他就会把这个 r a 之一用来告诉 cpu, 我收到了一个数,那 cpu 申请中断之后, cpu 可以去到窗口当中把这个数取走,取走了之后,然后呢,记得要手动把这个 r a 清零, 那么这就是这两个位的作用啊,那么大家看啊,这两个位为什么要手,为什么需要手动清零?因为他俩是合在一起申请一个中断,那你进到中断当中,你得先清楚啊,到底是因为发送产生的,还是接收产生的,所以说呢,这个时候我就需要通过判断这两个位哪个是一 来判断到底是谁产生的,好决定相应的处理啊,这是串行口中断。下边呢,再介绍一下我们五幺单频机系统当中啊,以这个为例, 我们在这个使用五幺单片机系统当中,这个中断的时候呢,需要事先对中断系统进行触手化,触手化的主要作用就是一个对于外部中断啊,以外部中断 为例,要设置他的处罚方式,还要把这些开关该合的合上第二个中断优先机给你设置好,就是把这些开关主要就是合开关,这就是五幺系统当中中断出手画的具体内容,那么合开关前就是使用到这些这些名字,这些名字大家要记一记啊。 好,那么现在我们再说那软件方面这句话,记住,在 c 五幺当中,中断服务程序就体现为一个函数,也就是说我们写为中断,写程序就写一个函数,这,但是对这个函数要求无反会是无参数格式,就像我现在 下不来这个返回值,位置用 boy 填充,参数位置用 boy 填充,然后叉叉叉是自己写的名字,由字母数字下划线构成,开头不能是数字,然后呢,这个关键词是关键 interrupt, 这表示这个函数是为 中段服务的,后边这个 n 按这个表格给你给不同的数,就代表为不同的中段服务,也就是说当不同的中段来的时候,我们的那个单片级就根据这个 n 来找到底用哪个函数为他进行处理。 那么我相信关于中断这块五幺单边机当中这个中断这块啊,我已经给大家说完了。呃,这块速度呢?我感觉啊,我说话的速度可能稍微有点快,大家可以反复反复看这个视频来 把这些知识点记住啊,那么下个视频呢?嗯,我的讲法是领着大家用一用这个中断啊。好,我们今天的视频到这再见。
粉丝1088获赞3421


大家好,我们开始这个视频,那么上堂课呢,给五幺单片机当中串音口啊,开了个头,哎, 然后呢这堂课呢,我们开始真具体介绍一下这个五幺单品当中穿行口,包括他的这个工作方式啊。好,我们开始大家看一下这张图,这张图就是我们传统的五幺单品当中的个穿行口,那么这个图呢,不知道大家是否能看得清楚, 那么这个图当中首先涉及到一个特殊功能计算器,叫 spa, 全大写的 sbuf, 而且这个计算器呢,从这个图里边我们能看出来,他在物理上实际上是存在两个的, 但是我们在城上我们不区分,我们就直接使用 sbuff 这个名就可以了。然后呢,他通过片内总线就可以跟那个 cpu 进行联系了啊,这是这个图里体现的,那么这 两个 sbuff 呢,在物理上一个用于发送,一个用于接收,当我们把数据送到这个发送的 sbuff 里边,它就会自动启动窗口里的其他部件,然后通过这根 txd 线,把数据以信息针的形式加上起始位,加上停止位,一个个往出送啊。 而接收的时候呢,当这个接收线上来数据的时候,他通过这个一位一位,最后就能给我变成八位的并行数据,最后把结果放到这个 spaf 里边,然后通知 cpu 过来取 啊,就是这两个计算器的特点啊,那么同时呢,这个串口涉及到两种中断,一种叫 ti, 就是发送中断,发送完了就会把 ti 之一,还有一种叫什么呢? ri, 就是汉口的接受中断, 那串形口呢?这块涉及到一个控制计算器,叫做 s 框啊,呃,这是这个图里给大家体呃体现出来的,那么我刚才说了 很多,那么这里边我们重点强调一下这个 spart 的用法啊,因为在物理上它存在两个,有些资料上将这个计存器这个特殊功能计存器叫做影子计存器,但是我们在程序上不进行区分,我们在程序上就只使用 spart 这个名就可以了啊。 好,大家看一下我们在城乡怎么使用 spaff, 大家看,那么在城市当中我首先声明一个差型变量,注意,为什么是差型?因为差型变量占八个彼得位,是不是一个字节呢?对,所以说这个探盘里面能放八个彼得位啊。五幺单片机的这个窗口,他搜和发都是以字节为单位的啊。 那像我现在这个红色的文字怎么写给这个 sbuff 复值那的 word 隐含意思就是想通过创口把 time 的值发出去,所以说这一行红色这一行就是在发送数据,这个数据就会自动的 写到这个发送 spart 里边啊。还有下边看蓝色的这个文字部分,这个蓝色的文字部分很显然我是想从串口读一个数据过来,然后放到 tap 这个变量里边, 那么这种我们计算机真正在执行的时候,单片机在执行的时候,他就会自动的从接收十八分里边取数据,大家注意,所以说呢,在这里边我们通过代码的形式呢,经过我的讲解你就明白哪个是用于发送,哪个是用于接收了,但是我们在程序上不区分,我们只使用十八分这个名字, 不知道这块大家是不是头脑当中获得非常清晰的概念,也知道怎么用了啊?好,这个事我们就算过去,那么刚才那个图当中还涉及到一个东西,我没提,就是这个定时器,大家看这个串行口啊,在工作的时候,我们五元单片机上这个串行口应该说 是一个不完整的窗口,他在工作的时候需要的那些时钟就是这个时钟,不管是通信双方公用的也好,还是说你自己按照心里边那个数是每一秒来一个,每一秒,你这一秒是怎么出来的?你自己心里得有一个计数的东西啊,这个东西串口里边没有, 在五幺单片机当中的创口里边没有。而我们作为新型号的单片机或者是 stm 三二这种单片机当中,他这里边他创口里边是有这种时钟信号的,那就用起来方便,像五幺单片机不方便,他就需要占用一个我们之前学过的东西,就是定时器 te, 用 t 一隔多少那个不停的那个循环定时,然后呢来产生这个失踪信号。所以说呢,这里边大家要记住,五幺蛋拼接当中,只要你使用定时啊,使用串形口, 你这个定时器 te 几乎就是被占用的啊。好,我这文字是这么写的,从左图可以看出五幺单片机的串口啊,工作的时候需要定时器 te 进行配合, 然后呢此时 t 一不能做他用,那么 t 一用来辅助产生收发失踪,收发失踪快慢就体现为每秒钟能传输多少个比特位, 有时这个线上一秒钟能接受能发出多少个位,能接多个位,他俩必须他俩指定是同数的啊,你定好了一个速度之后同数的,因为你用的是一个时钟元吗?那么每秒钟能收发多少位,能穿出多少位?这个东西是有个概念的,叫做波特律, 英文缩写就是 b p s bit per second 啊,是 b p s 啊,那么大家知道这点就可以了,知道这里边我们要使用定时, 而且定时 gt。 一,我们就使用那种能自动重载储值的方式。二啊,好,这个事你清楚了之后,下面我们再详细的说一下跟串口有关的控制计存器。那么串口有关的控制计存器啊, 最重要的就是这个 s 框,他是九八 h, 说明他这里边这些位带名的这个名可以直接在成绩当中使用啊,因为末位是八吗?零和八都可以这么使用,对吧?那这里边位很多,我重点标出来这么三个位,这个第七位和第六位 名叫 s m 零 s m。 一,这两位的组合用来决定串口工作在什么方式,而第四位这个 r e n 是 receive indibo, 啥意思呢?就是接收允许位, 系统复位的时候,这个计算器所有位都是零系统,这个时候我们的串线口只具有发出能力,没有接触能力,如果你的串线口想有接触能力,必须把这个位织成一 才行啊。然后呢,在这里边串一口的工作方式啊,因为两位的组合一共能组合出四种情况,但是我要跟大家说的是,我们这个串一口实在用的时候,我就推荐大家使用方式一和方式三这两种方式啊,我也只讲这两种方式,别的方式我我就不讲了啊, 好了,你清楚,这样就可以了,那你这两位组合要么是零幺,要么是什么呢?幺幺是这样啊, 然后呢?跟创新口有关的计算器还有一个叫做批框,这个计算器是八七 h, 就意味着你要想这个里边啊,这个计算器当中 我们跟创口有关的就是这个最高位 smotal 位,他什么起作用呢?因为方式一和方式三的波特率都是按这个公式算的,大家看这里边有个二的 smod 次密,这个 smod 就是这个位, 那这个位我们知道二斤,这位可零可一,当他取零的时候就变成三十二分之一,当他取一的时候就变成三十二分之二,也就十六分之一,速度提高了一倍啊。但是这个计算器大家注意看他的字节地址是八七 h, 意味着你想单独改这个位的话,你必须给整个计算器复制 来改动这个位啊。好了,那么这个事说清楚了,那么跟串形口有关的两个计算器跟你说明白了,一个叫 s 抗,一个叫什么呢?叫皮抗 啊,好,那么我们再进行下边,那么这张表格刚才不说了吗?我们的串行口工作的时候,他是需要什么呢?需要这个定时器参与的,那么这个表格就告诉我们串行口用定时器产生波特率的时候,我们这定时器怎么设置,看教大家读这个表格 啊。方式一和三的时候,如果你选择的波特力是九点九点六 k, 这里 k 是一千啊,就是九六零零每每秒钟,而且你要求竞争频率是十一点零五九二,你不能接别的,这个时候 smod, 你在说实话的时候把它写成零, 呃,他复位的时候默认也是零啊,然后 t 一要工作在方式二,而且这个时候你用的数值是这个数值,那么他就会配合串口产生这个波特率, 注意啊,大家看到了吗?串形口在工作的时候,这个波特率就为了产生好的波特率,我们这个精镇呢,最好都是十一点零五九二,不要是别的波特率啊, 这就是为什么我的这个开发板上这个串口的波特率啊,串口的精振是十一点零五九二啊的原因,这是兆赫兹啊,兆赫兹,那么大家注意这里边有一个零 xfd 表,就这么看啊,那么这两个数大家有没有观察呀?他是二倍的关系,所以说二倍 s, m, l, d 由零变成一,其他都没动, 看到这点啊,好了,那么关于串行口这块呢,这个部分说完了,那么由于用到定时器,我们知道定时器,我就把这定时器的控制计算器放在这了,叫 tmod。 这绿色的部分用来决定 t 一,蓝色部分决定 t 零,而且我们跟串口工作的时候要使用方式二, 那么也就是 m 一 m 零,这两位应该是幺零,然后这两个位都都让他是零零,所以说呢,基本上这个就是二吧,零零幺零,这不是二吗?二零 初始化的时候,记住为串口的时候,这个 t 要工作在方式二啊。好了,那么现在我再给大家快速的介绍一下单片机的串口的 这个两种工作方式吧,我不说方式一和方式二吗?方式一,首先波特率按这个算,大家注意看啊,这 t 的溢出率,溢出率, 然后呢,就是踢多长时间中断一次的事啊?但是呢,这里边我们不开放中断,就只让他能踩上申请中断的信号,那就叫溢出啊,然后呢大家看一下方四一当中这个信息针的格式,大家看信息针有起始位,有停止位, 而且数据位只有八位,看到了吗?这就是方十一的特点,也就说这里边没有那个第九位啊,这就是方十一的特点。一会我我后面的视频,我设计实操的时候,咱们就使用这种方式啊,叫方十一波特利,按这个算啊, 那么我们如果按照前面这个表来出手化的话,你就你就只需要把方式设好,然后按这个表当中给出值零 fd 就可以了,这个出值不用你按这公司来算 啊。好了,方式一的是这样,那么这个图当中呢,给大家细化了一下,在方式一具体接收和发送的时候,这个呃各个引角信号之间怎么配合的?那么在这里边我想给大家提呃,提 就是体现出来的是什么?就是我标红这个部分,大家看在方式一发送的时候,数据是通过 tx 的走的低位先发送,最后把第八位数据,也就是第七,这个给他发出去之后,我们的硬件上会把 ti 制成一, ti 制成一就进入到中断系统了,这个 ti 不是中断吗?对吧?发送中断吗?进入到中断系统就会往后面申请中断, cpu 显示中断,然后再进行后边的进行处理, 注意这一点啊,而这个方式一接收的时候呢,大家看数据是通过 r x 的来的,然后呢,当我收到最后一位数据的时 时候,检测到停那个停止位了的时候,这个时候大家看我把 r i 之一也是用来申请中断的,当然我们可以用中断,也可以用程序当中不停查询 t i 和 r i 的方式来来决定前面的动作有没有完成 啊。有些人可能会奇怪,会问这个事情,就是这个,这个,这个信号产量这三次是啥意思?就是我确定每一位是零四一的时候,我需要看三眼检测三次,三次的结论一样,我才知道这位是零四一啊,就是这个意思。好了,这是方式一的,你记住 这个持续图我以很快的方式给你说了啊,现在我们在说方式三,方式三的波特力计算方法一样,但是他这底下这个我画了个,我放的是方式一的啊,你看方式三这个信息真有变化,他多了一个第几第九位数据,也就是 编号叫第八多,这位数据他发的时候会多这位数据啊,记住这一点。那么方十三这位数据在发送的时候搁哪取呢?你发送前面八个正常发第八位数据,取至 s 框当中那个 tb 八, 也就说你要事先在发送之前把 t b 八制成零,制成一或者清成零,表示是第九位数据,然后呢再去进行发送,那么他把这个第九位数据发完了,会质疑 r i, r t i 接收的时候呢?他收到的前面收到这八位,他自动放到 sbuff 里边,而收的第九位数据,他会把它放到哪里面?放到这个 rb 八当中,同时把 ri 之一申请中断,让 cpu 进行后续处理,这就是方式三这种方式啊,这里边提到了 tb 八和 rb 八都在 xcom 那个计数器当中 啊。那么好了,不多说,那么到这为止呢,给大家介绍了串形口的两种工作方式,应该说说的很快啊,这都是一些理论储备,按照我之前的说法,这叫唱文系啊。那么这个理论储备之后呢?然后呢,咱们 再进行实操,下一个视频我们就进行一个简单的实操,把窗口用起来啊。那么好,我们这个视频到这里,再见。





