About STM32F407
Reference
FreeRTOS
Reference
Eclipse
IDE
 System Workbench for STM32
 STM32Cube
 http://www.openstm32.org/HomePage
Reference
Get start
 The first project
 HAL Driver
 GPIO
 USART
STM32Cube
Import into Eclipse
Burn into board
Use Virtual COM Port
FreeRTOS start
 USART Output
USART Output
Task Create
pxTaskCode : Task function 指標,指向一個 Loop function.
pcName : 任務名稱,只是識別用,方便除錯
usStackDepth : 此參數用於設定程序或用掉多少堆疊空間
詳見 FreeRTOS Menu 第六章。
pvParameters : 輸入引數,之後會示範如何使用
uxPriority : 優先權,0 為最高,最小是 (configMAX_PRIORITIES – 1),
configMAX_PRIORITIES 為自定義。
pxCreatedTask : 用來識別 Task 的名稱,這個名稱可用於改變任務優先權或是刪除任
務,用不到可設定為NULL
回傳值 : pdTRUE / errCOULD_NOT_ALLOCATE_REQUIRED_MEMORY
Task 建立成功 /記憶體空間不夠,第五章有詳細說明
Task Create
參數的傳遞
如果要執行相似的程式,可以只用一個Task function(vTaskFunction),
加上傳入引數 pvPrameters 就可以創立不同的Task但是使用同一個Function。
優先權管理
在設定檔 FreeRTOSConfig.h 中可設定優先權的上限 configMAX_PRIORITIES 。
FreeRTOS 本身沒有限制優先級數的上限,但越大的話所耗用的記憶體越多,
建議設定在本身 Task 數量的最小值。
優先權管理
 Task 2 被餓死了…
優先權管理
 修正一下,組塞…. vTaskDelay
優先權管理
 修正一下….查詢 vTaskDelayUntil
優先權管理
優先權管理
 合併起來會怎麼跑?
優先權管理
用空閒任務換算CPU使用率
 通過空閒任務hook函數(或稱回檔,hook, or
call-back),可以直接在空閒任務中添加應用
程式相關的功能。空閒任務hook函數會被空
閒任務每迴圈一次就自動調用一次。
 通常空閒任務鉤子函數被用於:
 執行低優先順序,後臺或需要不停處理的功能。
 測試處系統處理裕量
 將處理器配置到低功耗模式——提供一種自動省
電方法,使得在沒有任何應用功能需要處理的時
候,系統自動進入省電模式。
空閒任務
更換任務優先權
void vTaskPrioritySet(
xTaskHandle pxTask,
unsigned portBASE_TYPE uxNewPriority );
pxTask 修改的任務名稱,若是輸入NULL 即可修改自己的優先權。
uxNewPriority 設定優先權層級,最大為(configMAX_PRIORITIES – 1)
unsigned portBASE_TYPE uxTaskPriorityGet( xTaskHandle pxTask );
pxTask 查詢的任務名稱,輸入NULL可以查詢自己的優先層級
更換任務優先權
 任務1創建在最高優先順序,以保證其可以最先運行。任務
1首先列印輸出兩個字串,然後將任務2的優先順序提升到
自己之上。
 任務2一旦擁有最高優先順序便啟動執行。由於任何時候只
可能有一個任務處於運行態,所以當任務2運行時,任務1
處於就緒態。
 任務2列印輸出一個資訊,然後把自己的優先順序設回低於
任務1的初始值。
 任務2降低自己的優先順序意味著任務1又成為具有最高優
先順序的任務,所以任務1重新進入運行態,任務2被強制
切入就緒態。
更換任務優先權
更換任務優先權

Free rtos workshop1@nuu