学习目标
目标(目的+标准)
看完第5章
学习内容
内容(详细,精准)
- 什么是任务调度?
- 什么是中断嵌层?
- Delay文件夹中都有什么,他能干什么?
- 什么是时钟摘取法?
- delay_init函数作用
- Sys中IO口位操作的实现
学习时间
23:00~24:41 睡觉保命。学习产出
-
什么是任务调度?
任务调度(task scheduling)
任务调度,说白了就是让CPU自动地,在特定时间去执行特定功能。怎么来选择特定的时间和特定的任务呢?会有一种约束规则,叫做调度算法。这个算法会发根据一定的规则将CPU分配给符合条件的任务使用。每秒调动次数又称时钟节拍,对应函数是:delay_ostickspersec -
什么是中断嵌层?
也叫中断嵌套。对应函数:delay_osintnesting
指中断系统在执行一个中断时,有一个优先级更高的中断提出中断请求,这时候会暂时正在执行的程序转而去执行那个优先级更高的。还拿之前的例子,加如你在看电视,突然有人敲门给你送快递,当你正在签收的时候,你家厨房煤气罐炸了,这个时候你就要先处理煤气罐,之后再去签收快递。。 -
Delay文件夹中都有什么,他能干什么?
这个文件夹中又delay.c和delay.h文件。这两文件里定义了7个函数,用来实现系统的延时功能。
之前说过,SysTick是整个单片机的心脏,它提供最精确的“心跳”,我们想借用这个“精确的心跳”实现延时。之前也说过,SysTick的寄存器值不能随意改动,那我们如何进行延时呢?这里伟大的人类就搞出了时钟摘取法。 -
什么是时钟摘取法?
总的来说,就是计数。
假设我们想延时1ms。由于systick会不断有节奏地“跳动”,因此我们的总体思路是计算出多少“跳动”相当于1ms,这时,只需记录跳动次数,当记录值到达预设值时,就相当于经过了1ms,上面这个过程,也形象地称作“摘取”。我们只需让延时函数等待1ms所对应的“跳动”的时间,就相当于延时了1ms。这样一来,我们不必修改systick的任何状态,就能达到延时的目的。 -
delay_init函数作用(留坑)
这个函数是用来1.初始化两个参数:fac_ms和fac_us。这两参数是干嘛的呢?2.3.
Delay_us函数
Delay_ms函数 -
Sys中IO口位操作的实现
主要是通过“带位操作”实现的。什么是带位操作?其实就是bit的扩张,把一个bit扩张位一个32bit的字,在将这个字作为地址,这时,我们只需修改地址所对应的值就可以进行位操作。比如,如果我们要实现POTRA的第七个IO口输出1,则可以使用PAout(6) = 1即可,我们要判断POTRA的第15个IO口(位)是否为1,使用if (PAout(15) == 1)即可。
学习总结
今天已经把stm32的所有软硬件资源都系统地了解过了一遍,接下来就是去使用练习这些软硬件的使用了。开始搞项目!