国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

stm32 freertos 任務不能調(diào)度(啟動)可能原因

發(fā)布者:平安守護最新更新時間:2025-01-15 來源: jianshu關鍵字:stm32  freertos  啟動 手機看文章 掃描二維碼
隨時隨地手機看文章

觀點

先說結論,給趕時間的朋友省點事:

  • 檢查FreeRTOS的調(diào)度配置,是否正確配置成可搶占的

  • 是不是某些任務回調(diào)函數(shù)退出的時候,沒有調(diào)用 vTaskDelete() 刪除任務


敘事

今天寫了個簡單的 基于stm32/cubeIDE 的freertos hello_world 例程。創(chuàng)建了2個簡單線程,但是發(fā)現(xiàn)居然不能調(diào)度,而且整個系統(tǒng)都被卡住。

一開始以為是搶占式調(diào)度配置沒有設好,

搶占式時間片調(diào)度(Prioritized Pre-emptive Scheduling with Time Slicing)
這是比較通用的調(diào)度方式,上一篇提到的溫度檢測系統(tǒng)采用的就是這種方式。內(nèi)核調(diào)度器在每個時間片結束的時候執(zhí)行一次,選擇處于就緒狀態(tài)的任務中優(yōu)先級最高的任務置于下一個時間片執(zhí)行。如果優(yōu)先級相同的話則交替執(zhí)行。此時,F(xiàn)reeRTOSConfig.h頭文件的設置如下:
configUSE_PREEMPTION(允許搶占) 1
configUSE_TIME_SLICING(采用時間片) 1

詳情請參考 FreeRTOS 從入門到精通6--詳解任務管理下。

經(jīng)過仔細檢查,配置沒有問題。

仔細檢查代碼后發(fā)現(xiàn),是其中的一個線程回調(diào)函數(shù)沒有寫成死循環(huán),退出了。就像這樣:

# 沒有循環(huán)的線程回調(diào)函數(shù)void say(void const *argument){
    printf('say ~~');}

由于我平時寫python,java比較多,一開始并沒有覺得這有什么問題。

后來不經(jīng)意間看到別人的線程回調(diào)函數(shù),要不就是死循環(huán),要不就是結束的時候,都加上 vTaskDelete(NULL)。
于是我也在每個回調(diào)函數(shù)中加上這句,果然沒有問題了,就像這樣:

# 沒有循環(huán)的線程回調(diào)函數(shù)void say(void const *argument){
    printf('say ~~');
    vTaskDelete(NULL);}


關鍵字:stm32  freertos  啟動 引用地址:stm32 freertos 任務不能調(diào)度(啟動)可能原因

上一篇:STM32學習(四) SyxTick 實驗
下一篇:stm32串口回調(diào)函數(shù)

推薦閱讀最新更新時間:2025-06-21 19:23

stm32 freertos 任務不能調(diào)度(啟動)可能原因
觀點 先說結論,給趕時間的朋友省點事: 檢查FreeRTOS的調(diào)度配置,是否正確配置成可搶占的 是不是某些任務回調(diào)函數(shù)退出的時候,沒有調(diào)用 vTaskDelete() 刪除任務 敘事 今天寫了個簡單的 基于stm32/cubeIDE 的freertos hello_world 例程。創(chuàng)建了2個簡單線程,但是發(fā)現(xiàn)居然不能調(diào)度,而且整個系統(tǒng)都被卡住。 一開始以為是搶占式調(diào)度配置沒有設好, 搶占式時間片調(diào)度(Prioritized Pre-emptive Scheduling with Time Slicing) 這是比較通用的調(diào)度方式,上一篇提到的溫度檢測系統(tǒng)采用的就是這種方式。內(nèi)核調(diào)度器在每個時間片結束的時候執(zhí)行一次,選擇
[單片機]
STM32 Cubemax(十四) ——基于Cubemax的FreeRTOS移植與LED點燈測試
前言 之前的代碼其實一直都是裸機在跑,即本質上就是在一個while(1)中在跑,這對于任務量較小的程序來說,沒有什么問題。但最近遇到一些工程性的代碼,其參考代碼均采用了FreeRTOS操作系統(tǒng),以此來記錄一下自己的學習過程。 一、CubeMax移植FreeRTOS 廢話不多說,想把FreeRTOS配置起來,再說一些其他東西。 時鐘配置 時鐘樹配置 這個地方主要根據(jù)自己的開發(fā)板配置下面兩個部分 嘀嗒時鐘配置 如果使用FreeRTOS,嘀嗒時鐘源要使用定時器產(chǎn)生的,這里不說原因,先配置就好。 FreeRTOS配置 這里下面的配置功能,等有特殊功能需要,再介紹,這里不需要動(其實也就是打開或者關閉一些功能) Fr
[單片機]
<font color='red'>STM32</font> Cubemax(十四) ——基于Cubemax的<font color='red'>FreeRTOS</font>移植與LED點燈測試
STM32啟動模式及IAP
我們玩ARM9,一般都是在內(nèi)存里調(diào)試程序,速度飛快。STM32下也可以這樣,雖說現(xiàn)在的flash壽命已經(jīng)很長了,但flash中調(diào)試燒錄程序還是一個很慢的過程,有時候程序上一個小小的改動要花上幾倍的時間下載代碼,這確實是不能忍受的。   我們也可以在開發(fā)STM32時,在內(nèi)存中調(diào)試程序。   { STM32這顆Cortex-M3控制器,與其他許多ARM一樣,提供了BOOT0和BOOT1兩個管腳用于啟動選擇。 BOOT1=x BOOT0=0 從用戶閃存啟動,這是正常的工作模式。 BOOT1=0 BOOT0=1 從系統(tǒng)存儲器啟動,這種模式啟動的程序功能由廠家設置。(用于串口ISP) BOOT1=1 BOOT0=1 從內(nèi)置SRAM啟動,這種
[單片機]
ucOS_II移植:Stm32啟動代碼分析
用的編譯工具是keil,在用keil建立stm32工程時,一般會產(chǎn)生一個啟動文件,STM32F10x.s,在st提供的庫函數(shù)里,用cortexm3_macro.s和stm32f10x_vector.s來代替這個文件。不過內(nèi)容都大同小異。 我在csdn上搜到了一個在stm32上移植好的ucos,打算在這個代碼的基礎上,添加注釋,先學別人的,然后再自己移植。 我獲得的這份例程,使用了startup_stm32f10x_md.s作為啟動文件,其中,刪去了部分采用擴展SRAM的代碼。 其文件內(nèi)容為 startup_stm32f10x_md.s ;******** (C) COPYRIGHT2010 STMicroelectronics
[單片機]
STM32啟動文件簡單分析
STM32啟動文件簡單分析(STM32F10x.s適用范圍)定時器, 型號, 名字在 STM32不完全手冊里面 ,我們所有的例程都采用了一個叫STM32F10x.s的啟動文件,里面定義了STM32的堆棧大小以及各種中斷的名字及入口函數(shù)名稱,還有啟動相關的匯編代碼。STM32F10x.s是MDK提供的啟動代碼,從其里面的內(nèi)容看來,它只定義了3個串口,4個定時器。實際上STM32的系列產(chǎn)品有5個串口的型號,也只有有2個串口的型號,定時器也是,做多的有8個定時器。比如,如果你用的STM32F103ZET6,而啟動文件用的是STM32F10x.s的話,你可以正常使用串口1~3的中斷,而串口4和5的中斷,則無**常使用。又比如,你TIM1~
[單片機]
我國植入式腦機接口技術正式啟動臨床入組
6 月 3 日消息,據(jù)第一財經(jīng)報道,近日在上海舉辦的第 20 屆亞洲神經(jīng)腫瘤年會上,傳來腦機接口技術領域的重要進展消息。復旦大學附屬華山醫(yī)院院長毛穎教授透露,由華山醫(yī)院和北京宣武醫(yī)院牽頭的腦機接口臨床隊列研究已正式啟動患者入組工作,旨在進一步驗證植入式腦機接口治療方案的有效性和安全性等關鍵問題。 2025 年被視為中國腦機接口技術正式步入臨床的關鍵一年。此前,北京、上海等地已紛紛出臺相關產(chǎn)業(yè)規(guī)劃,計劃在 2030 年前完成 5 款以上侵入式產(chǎn)品的臨床試驗。 去年年底,《自然》雜志還將中國植入式腦機接口設備臨床試驗列入 2025 年全球最值得關注的科學事件之一,其中提及由清華大學洪波教授團隊研發(fā)、上海博??倒旧a(chǎn)的腦機接口設備 N
[醫(yī)療電子]
三相異步電動機采用星三角降壓啟動時,如何選擇交流接觸器?
三相異步電動機采用星三角降壓起動是一種常見的起動方式,它通過將電動機的起動電流限制在額定電流的三分之一以內(nèi),減小了電動機起動時對電網(wǎng)的沖擊。在星三角降壓起動中,交流接觸器的選擇非常重要,它決定了整個起動系統(tǒng)的可靠性和穩(wěn)定性。 首先,我們需要了解交流接觸器的基本原理和工作特點。交流接觸器是一種電氣開關裝置,它能夠控制大電流的開關操作,通常用于控制電動機的啟動和停止。交流接觸器的主要部件包括線圈、觸點和電磁機構。當線圈通電時,電磁機構產(chǎn)生吸力,將觸點閉合或打開,從而控制電流的通斷。 對于星三角降壓起動,我們需要選擇適合的交流接觸器。首先,接觸器的額定電流應該與電動機的額定電流相匹配。通常情況下,選用的接觸器額定電流應大于電動機額定電流
[嵌入式]
啟動控制器的參數(shù)調(diào)整方法
軟啟動控制器是一種用于電動機啟動的控制設備,它通過控制電動機的啟動電流和啟動時間,實現(xiàn)電動機的平滑啟動,減少啟動電流對電網(wǎng)的沖擊,延長電動機和設備的使用壽命。軟啟動控制器的參數(shù)調(diào)整對于其性能和效果至關重要。本文將詳細介紹軟啟動控制器的參數(shù)調(diào)整方法,包括參數(shù)設置、調(diào)整步驟、注意事項等內(nèi)容。 一、軟啟動控制器的基本原理 1.1 軟啟動控制器的工作原理 軟啟動控制器通過控制電動機的啟動電流,實現(xiàn)電動機的平滑啟動。其工作原理是將電動機的啟動電流限制在一個較低的水平,然后逐漸增加電流,直到電動機達到額定電流。在這個過程中,電動機的啟動時間也會相應地延長,從而實現(xiàn)平滑啟動。 1.2 軟啟動控制器的主要組成部分 軟啟動控制器主要由以下幾個部
[嵌入式]
小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved