RTX作為keil的親兒子系統(tǒng),無(wú)論是移植的簡(jiǎn)易的程度上,還是對(duì)m內(nèi)核的支持上都是絕對(duì)的無(wú)敵。各個(gè)組件也是非常齊全。
而這一次的RTX5移植之旅,將會(huì)短的超出想象。
打開(kāi)工程,啟動(dòng)RTE,勾選keil RTX5,點(diǎn)擊ok。
恭喜你,你已經(jīng)成功將RTX5移植到你的工程里面了。
是真的已經(jīng)移植完畢了,這就是RTE跟RTX5的魅力,極其方便的部署方式。
編個(gè)測(cè)試代碼體驗(yàn)一下
#include "fsl_device_registers.h"
#include "fsl_debug_console.h"
#include "peripherals.h"
#include "pin_mux.h"
#include "clock_config.h"
#include "board.h"
#include "cmsis_os2.h"
__NO_RETURN void app1_Thread (void *argument)
{
(void)argument;
for (;;)
{
PRINTF("task1rn");
osDelay(1000);
}
}
__NO_RETURN void app2_Thread (void *argument)
{
(void)argument;
for (;;)
{
PRINTF("task2rn");
osDelay(2000);
}
}
__NO_RETURN void led_Thread (void *argument)
{
(void)argument;
for (;;)
{
GPIO_PinWrite(BOARD_INITPINS_LED_GPIO, BOARD_INITPINS_LED_GPIO_PIN, 1U);
osDelay(1000);
GPIO_PinWrite(BOARD_INITPINS_LED_GPIO, BOARD_INITPINS_LED_GPIO_PIN, 0U);
osDelay(1000);
}
}
int main(void)
{
BOARD_ConfigMPU();
BOARD_InitBootPins();
BOARD_InitBootClocks();
BOARD_InitDebugConsole();
/* Just enable the trace clock, leave coresight initialization to IDE debugger */
SystemCoreClockUpdate();
CLOCK_EnableClock(kCLOCK_Trace);
osKernelInitialize();
osThreadNew(app1_Thread, NULL, NULL);
osThreadNew(app2_Thread, NULL, NULL);
osThreadNew(led_Thread, NULL, NULL);
if (osKernelGetState() == osKernelReady)
{
osKernelStart();
}
for(;;){}
}
運(yùn)行正常,板子上的小燈也開(kāi)始閃爍
整體工程結(jié)構(gòu)如下,我們只需要關(guān)注RTX_Config.c與RTX_Config.h兩個(gè)文件即可
RTX_Config.h文件使用keil配置向?qū)Ь帉?xiě),簡(jiǎn)直把飯喂到了嘴邊
有人可能覺(jué)得,沒(méi)有源碼,心里不爽,RTX5本身是開(kāi)源的,喜歡閱讀源碼的人,只需在部署的時(shí)候選擇Source就能將原始代碼加入工程,用庫(kù)的話編譯起來(lái)更快。
代碼工程
4.az158_dapLink.zip (88.4 KB, 點(diǎn)擊下方附件下載)
當(dāng)前環(huán)境