日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

arm rtx教程_【RTX操作系统教程】第5章 RTX操作系统库方式移植(超级...

發布時間:2024/8/1 windows 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 arm rtx教程_【RTX操作系统教程】第5章 RTX操作系统库方式移植(超级... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本帖最后由 baiyongbin2009 于 2016-1-19 15:36 編輯

5.2? ?STM32F103移植RTX系統5.2.1? ?? ?RTX操作系統移植

首先準備好一個簡單的裸機工程模板,工程模板的制作就不做講解了,這里的重點是教大家移植RTX系統。準備好的工程模板如下圖5.1所示(大家也可以制作其它任意的工程模板,不限制):

5.1.png (10.57 KB, 下載次數: 6)

2016-1-19 15:06 上傳

圖5.1 工程模板

準備好工程模板后,就可以開始移植了,移植過程比較簡單,需要兩步就可以完成了:

第1步:使能RTX

5.2.jpg (95.85 KB, 下載次數: 8)

2016-1-19 15:06 上傳

第2步:添加RTX系統的配置文件,配置文件在MDK的安裝目錄C:\Keil_v474\ARM\RL\RTX\Config

下面,文件名RTX_Conf_CM.c,下面將這個文件復制到MDK工程的User文件夾下面,并添加到MDK工程上

5.3.png (7.51 KB, 下載次數: 10)

2016-1-19 15:06 上傳

通過這兩步,RTX操作系統的移植就完成了。5.2.2? ???RTX操作系統配置說明

RTX操作系統的配置工作是通過配置文件RTX_Conf_CM.c實現。在MDK工程中打開文件RTX_Conf_CM.c,可以看到如下圖5.2所示的工程配置向導:

5.4.png (31.65 KB, 下載次數: 11)

2016-1-19 15:06 上傳

圖5.2 RTX的配置向導

1.??Task Configuration

(1)??Number of concurrent running tasks

參數范圍0 – 250

表示同時運行的最大任務數,這個數值一定要大于等于用戶實際創建的任務數,空閑任務不包含在這個里面。比如當前的數值是6,就表示用戶最多可以創建6個任務。

(2)??Number of tasks with user-provided stack

參數范圍0 – 250

表示自定義任務堆棧的任務數,如果這個參數定義為0的話,表示所有的任務都是使用的配置向導里面第三個參數Task statck size大小。比如:

Numberof concurrent running tasks = 6

Numberof tasks with user-provided stack = 0

表示允許用戶創建6個任務,所有的6個任務都是分配第三個參數Task statck size大小的任務堆棧空間。

Numberof concurrent running tasks = 6

Numberof tasks with user-provided stack = 3

表示允許用戶創建6個任務,其中3個任務是用戶自定義任務堆棧大小,另外3個任務是用的第三個參數Task statck size大小的任務堆棧空間。

(3)Task statck size

表示系統分配的任務堆棧大小,單位字節。

(4)Check for the stack overflow

選擇是否使能任務堆棧監測,選上單選框表示使能,取消單選框表示禁能。

(5)Run in privileged mode

選擇是否使能特權級模式,選上單選框表示使能任務工作在特權級模式,取消單選框表示任務工作在非特權級模式。特權級和非特權級在第九章有詳細講解。

2.Tick Timer Configuration

(1)??Hardware timer

CoreSysTick 表示選擇系統滴答定時器,因為M3/M4內核帶有滴答定時器,一般情況下都是選用滴答定時器作為系統時鐘節拍。

PeripheralTimer 表示使用外設定時器。

(2)Timer clock value

表示定時器主頻,單位Hz。

(3)Timer tick value

表示系統時鐘節拍周期,單位us。

3.System Configuration

(1)??Round-Robin Task switching

選擇是否使能時間片調度,選上單選框表示使能時間片調度,取消單選框表示不使用時間片調度。

(2)Round-Robin Timeout [ticks]

范圍1 – 1000。

表示時間片的大小,單位是系統時鐘節拍個數。

(3)Number of user timers

范圍1 – 250。

表示用戶定時器個數,即軟定時器個數。

(4)ISR FIFO Queue size

表示ISR FIFO隊列大小。中斷服務程序中調用以isr_ 開頭的函數時,會將請求類型存到此緩沖中。5.2.3? ???RTX操作系統應用實例

通過上面對RTX操作系統的配置講解,這里將其修改為如下圖5.3所示的配置:

5.5.png (33.2 KB, 下載次數: 14)

2016-1-19 15:06 上傳

圖5.3 RTX的配置向導

相對默認配置,修改了上圖紅色箭頭所示的三個地方:

1.? ???任務運行在特權級模式。

2.? ???滴答定時器主頻72MHz,這個也是STM32F103的主頻。

3.? ???系統時鐘節拍周期1ms。

修改好配置后,在main.c文件中添加如下代碼,代碼中簡單的創建了兩個用戶任務:

AppTaskLED任務 :LED閃爍。

AppTaskStart任務:啟動任務,也是最高優先級任務,這里實現LED閃爍。

#include "bsp.h"? ?? ?? ?? ?/* 底層硬件驅動 */

#include "RTL.h"

/*

**********************************************************************************************************

函數聲明

**********************************************************************************************************

*/

static void AppTaskCreate (void);

__task void AppTaskLED(void);

__task void AppTaskStart(void);

/*

**********************************************************************************************************

變量

**********************************************************************************************************

*/

static uint64_t AppTaskLEDStk[256/8];? ???/* 任務棧 */

static uint64_t AppTaskStartStk[512/8];? ?/* 任務棧 */

/* 任務句柄 */

OS_TID HandleTaskLED = NULL;

/*

*********************************************************************************************************

*? ? 函 數 名: main

*? ? 功能說明: 標準c程序入口。

*? ? 形? ? 參: 無

*? ? 返 回 值: 無

*********************************************************************************************************

*/

int main (void)

{

/* 初始化外設 */

bsp_Init();

/* 創建啟動任務 */

os_sys_init_user (AppTaskStart,? ?? ?? ?? ? /* 任務函數 */

2,? ?? ?? ?? ?? ?? ?? ?? ?/* 任務優先級 */

&AppTaskStartStk,? ?? ?? ?/* 任務棧 */

sizeof(AppTaskStartStk)); /* 任務棧大小,單位字節數 */

while(1);

}

/*

*********************************************************************************************************

*? ? 函 數 名: AppTaskLED

*? ? 功能說明: LED閃爍

*? ? 形? ? 參: 無

*? ? 返 回 值: 無

*? ? 優 先 級: 1??(數值越小優先級越低,這個跟uCOS相反)

*********************************************************************************************************

*/

__task void AppTaskLED(void)

{

while(1)

{

bsp_LedToggle(2);

bsp_LedToggle(3);

os_dly_wait(200);

}

}

/*

*********************************************************************************************************

*? ? 函 數 名: AppTaskStart

*? ? 功能說明: 啟動任務,也就是最高優先級任務。

*? ? 形? ? 參: 無

*? ? 返 回 值: 無

*? ? 優 先 級: 2

*********************************************************************************************************

*/

__task void AppTaskStart(void)

{

AppTaskCreate();

while(1)

{

bsp_LedToggle(1);

bsp_LedToggle(4);

os_dly_wait(500);

}

}

/*

*********************************************************************************************************

*? ? 函 數 名: AppTaskCreate

*? ? 功能說明: 創建應用任務

*? ? 形? ? 參: 無

*? ? 返 回 值: 無

*********************************************************************************************************

*/

static void AppTaskCreate (void)

{

HandleTaskLED = os_tsk_create_user(AppTaskLED,? ?? ?? ?? ???/* 任務函數 */

1,? ?? ?? ?? ?? ?? ?? ???/* 任務優先級 */

&AppTaskLEDStk,? ?? ?? ? /* 任務棧 */

sizeof(AppTaskLEDStk));??/* 任務棧大小,單位字節數 */

}復制代碼

按照第三章的3.4小節中介紹的調試方法,可以看到如下圖5.4所示的任務執行狀態:

5.6.png (26.85 KB, 下載次數: 11)

2016-1-19 15:06 上傳

圖5.4 RTX的調試信息組件

除了創建的兩個用戶任務以外,還有空閑任務,這個任務是系統創建的。至此,RTX的庫方式移植的工程就可以運行了。

總結

以上是生活随笔為你收集整理的arm rtx教程_【RTX操作系统教程】第5章 RTX操作系统库方式移植(超级...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。