一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

stm32任務(wù)調(diào)度和管理

汽車玩家 ? 來源:CSDN ? 作者:CSDN ? 2021-07-23 09:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

STM32F103ZE的AHB時鐘為72MHz,通過HSE的8M倍頻到72M,然后APB1預分頻系數(shù)為2,所以TIM2-7時鐘為2*36M。由于定時器是16位,PSC寄存器最大為65536,不支持71999,所以只能以0.1ms計數(shù)。

整個系統(tǒng)在獲取時間的累增時,定義64位變量,即可運行很久的時間,不用擔心溢出或者死機。定義64位變量有2個方法,一就是用long long 直接定義,通過sizeof測試為8個字節(jié);二就是利用”stdint.h”,typedef uint64_t u64。

一般情況下,定時器計時結(jié)果算法公式為:Tout = (ARR+1)(PSC+1)/Tclk。Tclk即為時鐘頻率。

準備工作

  • 1)建立一個struct

typedef struct{

void (*fTask)(void);

u32 uNextTick;

u32 uLenTick;

}sTask;

1

2

3

4

5

  • 2)任務(wù)列表

static sTask mTaskTab[] =

{

{Task_SysTick, 0, 0} ,

{Task1, 0, 100} , // 10ms執(zhí)行一次

{Task2, 0, 200} // 200ms執(zhí)行一次

};

1

2

3

4

5

6

  • 3)初始化定時器

void TaskTimer_Init()

{

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

/* Time base configuration */

TIM_TimeBaseStructure.TIM_Period = 65535;

TIM_TimeBaseStructure.TIM_Prescaler = 7199;

TIM_TimeBaseStructure.TIM_ClockDivision = 0;

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

TIM_SetCounter(TIM2, 0);

/* TIM enable counter */

TIM_Cmd(TIM2, ENABLE);

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

  • 4)獲取啟動后時間

u64 GetTimingTick()

{

return TimingTick;

}

1

2

3

4

  • 5)任務(wù)執(zhí)行期間獲取系統(tǒng)時間

在這里插入void Task_SysTick()

{

u32 temp = TIM_GetCounter(TIM2);

if(temp > 10000)

{

TIM_SetCounter(TIM2,0);

TimingTickHold = TimingTickHold + temp;

temp = 0;

}

TimingTick = temp + TimingTickHold;

}

1

2

3

4

5

6

7

8

9

10

11

運行實例

#define ARRAYSIZE(a) (sizeof(a)/sizeof((a)[0]))

static sTask mTaskTab[] =

{

{Task_SysTick, 0, 0},

{DATA_HANDLE, 0, 500},//50ms

{Key_Scan, 0, 500}

};

while(1)

{

for(int i = 0;i < ARRAYSIZE(mTaskTab);i++ )

{

if(mTaskTab[i].uNextTick <= GetTimingTick() )

{

mTaskTab[i].uNextTick += mTaskTab[i].uLenTick;

mTaskTab[i].fTask();

}

}

}

文章整合自:CSDN

編輯:ymf

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3298

    瀏覽量

    118964
  • 時鐘頻率
    +關(guān)注

    關(guān)注

    0

    文章

    50

    瀏覽量

    20689
  • HSE
    HSE
    +關(guān)注

    關(guān)注

    0

    文章

    18

    瀏覽量

    9673
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    同步任務(wù)開發(fā)指導

    ,例如無法單例創(chuàng)建的類對象實現(xiàn)的方法。 使用TaskPool處理同步任務(wù)調(diào)度獨立的任務(wù),或者一系列任務(wù)為靜態(tài)方法實現(xiàn),或者可以通過單例構(gòu)造唯一的句柄或類對象,可在不同
    發(fā)表于 06-19 07:57

    快速入門——LuatOS:sys庫多任務(wù)管理實戰(zhàn)攻略!

    在嵌入式開發(fā)中,多任務(wù)管理是提升系統(tǒng)效率的關(guān)鍵。本教程專為快速入門設(shè)計,聚焦LuatOS的sys庫,通過實戰(zhàn)案例帶你快速掌握多任務(wù)創(chuàng)建、調(diào)度與同步技巧。無論你是零基礎(chǔ)新手還是希望快速提升開發(fā)效率
    的頭像 發(fā)表于 05-29 14:36 ?234次閱讀
    快速入門——LuatOS:sys庫多<b class='flag-5'>任務(wù)管理</b>實戰(zhàn)攻略!

    工控一體機多線程任務(wù)調(diào)度優(yōu)化:聚徽分享破解工業(yè)復雜流程高效協(xié)同密碼

    任務(wù)調(diào)度作為工控一體機管理和協(xié)調(diào)各項任務(wù)的關(guān)鍵機制,其優(yōu)化程度直接關(guān)乎工業(yè)生產(chǎn)的效率、穩(wěn)定性與精準度,宛如一把關(guān)鍵鑰匙,解鎖工業(yè)復雜流程高效協(xié)同的大門。 工業(yè)復雜流程與多線程
    的頭像 發(fā)表于 05-28 14:06 ?169次閱讀

    安全生產(chǎn)調(diào)度管理系統(tǒng)的核心功能模塊

    安全生產(chǎn)調(diào)度管理系統(tǒng)是運用現(xiàn)代信息技術(shù)構(gòu)建的智能化管理平臺,旨在實現(xiàn)生產(chǎn)安全風險的全面管控和應急資源的優(yōu)化調(diào)度。該系統(tǒng)通過整合物聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等前沿技術(shù),建立起覆蓋風險監(jiān)測、預
    的頭像 發(fā)表于 05-16 15:25 ?184次閱讀

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

    AGV在智能物流中核心,助力工業(yè)4.0和中國制造2025。AGV管理監(jiān)控調(diào)度系統(tǒng)實時監(jiān)控、任務(wù)管理、路徑規(guī)劃,確保高效便捷。AGV市場前景廣闊,解決人口紅利喪失、勞動力成本上升等問題,
    的頭像 發(fā)表于 03-05 12:10 ?311次閱讀
    AGV監(jiān)控與<b class='flag-5'>任務(wù)</b><b class='flag-5'>管理</b>系統(tǒng)設(shè)計

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

    AGV是自動導引運輸車,用于工廠物料搬運。AGV調(diào)度系統(tǒng)解決通信問題,實現(xiàn)任務(wù)調(diào)度、路徑規(guī)劃、交通管制等功能,與MES、ERP等系統(tǒng)對接,推動智能物流和無人工廠發(fā)展。
    的頭像 發(fā)表于 02-07 17:53 ?529次閱讀
    數(shù)字化工廠物流核心技術(shù)—AGV<b class='flag-5'>調(diào)度</b>系統(tǒng)

    車隊運營調(diào)度管理系統(tǒng)

    車隊運營調(diào)度管理系統(tǒng)作為無人駕駛車隊的云端大腦,承擔了打通業(yè)務(wù)層和無人駕駛車隊的重任。經(jīng)緯恒潤車隊運營調(diào)度管理系統(tǒng)包含業(yè)務(wù)對接、車輛調(diào)度、作
    的頭像 發(fā)表于 01-09 10:25 ?909次閱讀
    車隊運營<b class='flag-5'>調(diào)度</b><b class='flag-5'>管理</b>系統(tǒng)

    SSTF中脈沖前傾的仿真

    任務(wù): ? 調(diào)整塊長度 (L) 以補償光柵對產(chǎn)生的噪聲 ? 改變光柵對的距離 (D) 以確定對脈沖前傾的影響 ? 改變焦距 (f) 以確定對脈沖前傾的影響 光柵對在場中引入了噪聲。如果不進行補償
    發(fā)表于 12-31 09:04

    基于Flexus X加速MySQL鏡像搭建XXL-JOB任務(wù)調(diào)度平臺

    隨著云計算技術(shù)的飛速發(fā)展,F(xiàn)lexus 云服務(wù)器 X 憑借其高性能和高可用性,成為了眾多企業(yè)和開發(fā)者的首選。本文旨在通過搭建基于 Flexus X 加速 MySQL 鏡像的 XXL-JOB 任務(wù)調(diào)度
    的頭像 發(fā)表于 12-29 15:45 ?457次閱讀
    基于Flexus X加速MySQL鏡像搭建XXL-JOB<b class='flag-5'>任務(wù)</b><b class='flag-5'>調(diào)度</b>平臺

    定時器技術(shù):Air780E如何革新定時任務(wù)管理?

    今天講的是關(guān)于Air780E如何革新定時任務(wù)管理的內(nèi)容,希望大家有所收獲。
    的頭像 發(fā)表于 11-07 13:50 ?762次閱讀
    定時器技術(shù):Air780E如何革新定時<b class='flag-5'>任務(wù)</b><b class='flag-5'>管理</b>?

    負載管理器的主要功能

    負載管理器(Load Manager)是計算機系統(tǒng)中的一個關(guān)鍵組件,它負責分配和管理計算資源,以確保系統(tǒng)運行的效率和穩(wěn)定性。負載管理器的主要功能包括任務(wù)
    的頭像 發(fā)表于 10-10 11:26 ?841次閱讀

    MES系統(tǒng)如何實現(xiàn)生產(chǎn)車間的實時監(jiān)控、精準調(diào)度

    MES系統(tǒng)通過數(shù)據(jù)采集、傳輸、處理和展示等技術(shù)手段,實現(xiàn)了生產(chǎn)過程的實時監(jiān)控;同時,通過生產(chǎn)計劃優(yōu)化、生產(chǎn)任務(wù)分配、動態(tài)調(diào)度、資源優(yōu)化和協(xié)同管理等功能模塊,實現(xiàn)了生產(chǎn)過程的精準調(diào)度。
    的頭像 發(fā)表于 10-07 12:51 ?1179次閱讀
    MES系統(tǒng)如何實現(xiàn)生產(chǎn)車間的實時監(jiān)控、精準<b class='flag-5'>調(diào)度</b>

    上線 Airflow 官方!DolphinDB 帶來數(shù)據(jù)管理新體驗

    DolphinDB 正式登陸 Apache Airflow 官方,成為 Airflow 官方認可的第三方插件及工具供應商。Apache Airflow 是一個可編程、調(diào)度和監(jiān)控的工作流管理平臺,以其模塊化的架構(gòu)和動態(tài)定義數(shù)據(jù)管道的能力著稱,能夠靈活
    的頭像 發(fā)表于 08-23 17:00 ?560次閱讀
    上線 Airflow 官方!DolphinDB 帶來數(shù)據(jù)<b class='flag-5'>管理</b>新體驗

    Linux調(diào)度器的核心scheduler_tick介紹

    scheduler_tick在Linux內(nèi)核中扮演著關(guān)鍵角色。它不僅負責處理定時器中斷和更新系統(tǒng)時間,還記錄進程的運行時間,并決定是否需要進行任務(wù)切換。通過這些功能,scheduler_tick有效保障了系統(tǒng)的時間管理任務(wù)
    的頭像 發(fā)表于 08-22 14:54 ?808次閱讀

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

    AGV小車在智能倉儲物流系統(tǒng)中廣泛應用,實現(xiàn)物流運輸自動化。多臺AGV需調(diào)度系統(tǒng)統(tǒng)籌行為,追求整體最優(yōu)解。AGVS負責AGV團隊任務(wù)調(diào)度等,與MES、WMS系統(tǒng)對接,提升企業(yè)物流管理
    的頭像 發(fā)表于 08-14 17:59 ?592次閱讀
    智能<b class='flag-5'>調(diào)度</b>  多臺AGV為什么不會撞在一起?