精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

stm32任務調度和管理

汽車玩家 ? 來源:CSDN ? 作者:CSDN ? 2021-07-23 09:22 ? 次閱讀

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

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

一般情況下,定時器計時結果算法公式為: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)任務列表

static sTask mTaskTab[] =

{

{Task_SysTick, 0, 0} ,

{Task1, 0, 100} , // 10ms執行一次

{Task2, 0, 200} // 200ms執行一次

};

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)任務執行期間獲取系統時間

在這里插入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

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

    關注

    23

    文章

    3241

    瀏覽量

    114513
  • 時鐘頻率
    +關注

    關注

    0

    文章

    49

    瀏覽量

    20325
  • HSE
    HSE
    +關注

    關注

    0

    文章

    17

    瀏覽量

    9447
收藏 人收藏

    評論

    相關推薦

    負載管理器的主要功能

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

    ESP32C3任務執行一段時間,會出現任務不運行的問題,為什么?

    ESP32C3任務執行一段時間,會出現任務不運行的問題, 不運行的任務優先級低,并且任務的延時時間為vTaskDelay(100/ portTICK_PERIOD_MS);
    發表于 06-05 07:23

    鴻蒙開發接口資源調度:【@ohos.workScheduler (延遲任務調度)】

    開發者在開發應用時,通過調用延遲任務注冊接口,注冊對實時性要求不高的延遲任務,該任務默認由系統安排,在系統空閑時根據性能、功耗、熱等情況進行調度執行。
    的頭像 發表于 06-04 10:01 ?869次閱讀
    鴻蒙開發接口資源<b class='flag-5'>調度</b>:【@ohos.workScheduler (延遲<b class='flag-5'>任務</b><b class='flag-5'>調度</b>)】

    請問CMSIS-RTOS RTX的任務調度鎖在哪里?

    請問一下,CMSIS-RTOS RTX的任務調度鎖在哪里?謝謝!
    發表于 05-13 08:28

    淺析FreeRTOS任務調度器的三種調度算法和應用

    FreeRTOS在MCU領域應用非常廣泛,今天就給大家講解一下FreeRTOS調度器中的三種調度算法,以及在瑞薩RZ/T2L MPU中的應用。
    的頭像 發表于 05-10 14:02 ?7045次閱讀
    淺析FreeRTOS<b class='flag-5'>任務</b><b class='flag-5'>調度</b>器的三種<b class='flag-5'>調度</b>算法和應用

    STM32CubeMX中的FreeRTOS創建3任務無法運行的原因?

    STM32CubeMX中的FreeRTOS 創建3任務 Task Priority =osPrioirityNoral 等級的任務,無法運行。 如果創建2個任務就可以。2個以上都不行
    發表于 05-09 07:02

    Windows 11任務管理器將CPU性能單位調整為MT/s

    以前,電腦內存的傳輸速度通常用MHz(兆赫茲)來衡量,即每秒能進行的循環次數,如3200MHz表示每秒可進行32億次循環。然而,隨著新技術的發展,DDR內存能夠在不提升時鐘頻率(MHz)的前提下提高數據傳輸速率,這使得傳統的計算方式不再準確。
    的頭像 發表于 05-07 15:08 ?1685次閱讀

    智慧園區:構建安全調度和預警管理系統

    隨著科技的快速發展,智慧園區逐漸成為現代城市發展的熱門話題。智慧園區以其先進的技術和創新的管理模式,為企業和居民提供更高效、便捷的服務。在智慧園區中,安全調度和預警管理是一項至關重要的任務
    的頭像 發表于 05-06 16:40 ?481次閱讀
    智慧園區:構建安全<b class='flag-5'>調度</b>和預警<b class='flag-5'>管理</b>系統

    智慧園區安全調度管理都有哪些

    園區當中極為重要的一點,安全調度也格外的受大家重視。 今天,古河云科技小編就來給大家說一說智慧園區安全調度管理都有哪些: 指揮調度平臺涵蓋了設備告警、快速定位、人員
    的頭像 發表于 04-28 15:13 ?287次閱讀
    智慧園區安全<b class='flag-5'>調度</b><b class='flag-5'>管理</b>都有哪些

    STM32F103VE運行的STM32CubeMX生成的freertos工程,FreeRTOS堆棧設置導致任務不執行切換怎么解決?

    TASK1任務堆棧更改為128的話,就不執行任務切換,只有TASK1的任務在運行 代碼如下 #define START_TASK_PRIO 1 #define START_STK_SIZE128
    發表于 04-26 07:51

    STM32F103 FreeRTOS任務調度異常的原因?

    ) { vTaskDelay(500); //延時函數(任務調度) printf(\"Task1rn\");//串口打印 } } void Task2_Task(void
    發表于 04-16 06:24

    FreeRTOS任務調度器的三種調度算法講解(下)

    配置如下時,調度算法就會變成不帶時間片的搶占式調度
    的頭像 發表于 03-21 13:46 ?2519次閱讀
    FreeRTOS<b class='flag-5'>任務</b><b class='flag-5'>調度</b>器的三種<b class='flag-5'>調度</b>算法講解(下)

    鴻蒙開發【分布式任務調度】解析

    1.FA 遷移可以打通設備間的壁壘,有助于不同能力的設備進行互助。前文以一個簡單的例子介紹如何通過分布式任務調度提供的能力,實現 FA 跨設備的遷移(包括 FA 啟動及狀態數據的同步)。 2.FA
    的頭像 發表于 01-29 18:03 ?637次閱讀

    鴻蒙OS 分布式任務調度

    鴻蒙OS 分布式任務調度概述 在 HarmonyO S中,分布式任務調度平臺對搭載 HarmonyOS 的多設備構筑的“超級虛擬終端”提供統一的組件
    的頭像 發表于 01-29 16:50 ?467次閱讀

    鴻蒙原生應用/元服務開發-延遲任務說明(一)

    添加到執行隊列,系統會根據內存、功耗、設備溫度、用戶使用習慣等統一調度拉起應用。 二、運行原理 圖1 延遲任務實現原理 應用調用延遲任務接口添加、刪除、查詢延遲任務,延遲
    發表于 01-16 14:57