STM32開發(fā)的初始階段,由于沒有操作系統(tǒng)的支持,因而不能方便的對(duì)多任務(wù)進(jìn)行調(diào)度和管理。而有的任務(wù)不緊急,不需要過多的時(shí)間去循環(huán)執(zhí)行,因此需要一個(gè)簡(jiǎn)單的任務(wù)調(diào)度來(lái)解決這個(gè)問題。STM32F103ZE的AHB時(shí)鐘為72MHz,通過HSE的8M倍頻到72M,然后APB1預(yù)分頻系數(shù)為2,所以TIM2-7時(shí)鐘為2*36M。由于定時(shí)器是16位,PSC寄存器最大為65536,不支持71999,所以只能以0.1ms計(jì)數(shù)。
整個(gè)系統(tǒng)在獲取時(shí)間的累增時(shí),定義64位變量,即可運(yùn)行很久的時(shí)間,不用擔(dān)心溢出或者死機(jī)。定義64位變量有2個(gè)方法,一就是用long long 直接定義,通過sizeof測(cè)試為8個(gè)字節(jié);二就是利用”stdint.h”,typedef uint64_t u64。一般情況下,定時(shí)器計(jì)時(shí)結(jié)果算法公式為:Tout = (ARR+1)(PSC+1)/Tclk。Tclk即為時(shí)鐘頻率。
STM32的任務(wù)調(diào)度可以有兩種方式:1.通過systick_handler定時(shí)器調(diào)度;2.執(zhí)行一個(gè)系統(tǒng)調(diào)用。
cortexM3的寄存器只有16個(gè),cortexM4除了這16個(gè)還有很多浮點(diǎn)運(yùn)算和MPU單元,如果不用這些單元它和M4沒有區(qū)別,我是用的cortexM4內(nèi)核的STM32F407,因?yàn)闆]有用浮點(diǎn)運(yùn)算和MPU保護(hù)單元因此OS也和M3內(nèi)核兼容。因此在任務(wù)調(diào)度的過程中,也是不斷的保存現(xiàn)在任務(wù)的這16個(gè)寄存器,彈出下一個(gè)任務(wù)的16個(gè)寄存器。
任務(wù)調(diào)度的步驟總結(jié)為如下:
1.保存程序的上下文即當(dāng)前任務(wù)的寄存器,保存存儲(chǔ)寄存器的任務(wù)堆棧的地址。
2.根據(jù)下一個(gè)任務(wù)的任務(wù)堆棧地址依次彈出下一個(gè)任務(wù)的16個(gè)寄存器。
本文整合自 CSDN、簡(jiǎn)書
責(zé)任編輯:fqj
-
STM32
+關(guān)注
關(guān)注
2291文章
11025瀏覽量
363606 -
任務(wù)調(diào)度
+關(guān)注
關(guān)注
0文章
27瀏覽量
10048
發(fā)布評(píng)論請(qǐng)先 登錄
同步任務(wù)開發(fā)指導(dǎo)
快速入門——LuatOS:sys庫(kù)多任務(wù)管理實(shí)戰(zhàn)攻略!

工控一體機(jī)多線程任務(wù)調(diào)度優(yōu)化:聚徽分享破解工業(yè)復(fù)雜流程高效協(xié)同密碼
拒絕“人工智障”!VLM讓RDK X5機(jī)器狗真正聽懂“遛彎”和“避障

京東百萬(wàn)級(jí)調(diào)度系統(tǒng)(Buffalo)架構(gòu)解密

AGV監(jiān)控與任務(wù)管理系統(tǒng)設(shè)計(jì)

數(shù)字化工廠物流核心技術(shù)—AGV調(diào)度系統(tǒng)

簡(jiǎn)單認(rèn)識(shí)全調(diào)度以太網(wǎng)技術(shù)

SSTF中脈沖前傾的仿真
基于Flexus X加速M(fèi)ySQL鏡像搭建XXL-JOB任務(wù)調(diào)度平臺(tái)

【「數(shù)字IC設(shè)計(jì)入門」閱讀體驗(yàn)】+目錄和前2章
MES系統(tǒng)如何實(shí)現(xiàn)生產(chǎn)車間的實(shí)時(shí)監(jiān)控、精準(zhǔn)調(diào)度

借助增強(qiáng)型航天塑料產(chǎn)品降低近地軌道任務(wù)的風(fēng)險(xiǎn)應(yīng)用說(shuō)明

采用新思科技和捷德技術(shù)的集成安全iSIM解決方案

智能調(diào)度 多臺(tái)AGV為什么不會(huì)撞在一起?

評(píng)論