Ⅰ
寫在前面
為滿足大家的好奇心,本文將講述幾個步驟可以讓FreeRTOS系統直接在芯片上運行,源代碼里面的許多細節將在下一篇文章呈現。最后提供可以直接運行的Demo工程給大家,方便大家直接拿來修改測試。
為什么不先講述源代碼?
相信很多朋友開始學習的時候都是參看別人寫好的,可以直接使用的源代碼。在正確代碼工程的基礎上,我們可以展開很多測試,從而可以知道為什么這樣才可以運行。
整個FreeRTOS工程源代碼里面的內容牽涉到許多東西,而只需要簡單幾個步驟就能將代碼運行起來,看到效果。如果我一一給你們講述源代碼,估計沒怎么講述幾條,大家都暈了,不知道為什么這個地方是這樣。
所以,給你看寫好源代碼工程,讓你們自己測試,并分析才是最好的。
Ⅱ
移植幾個步驟
源代碼里面的內容有很少變動,本篇文章不具體講述,只講述移植的幾個步驟,最終讓代碼工程可以運行在板子上。只需要如下簡單幾步即可:
1.提取源碼添加到工程
上一篇文章講述了下載FreeRTOS源碼中各個目錄及文件的意思,也大概講述了一下需要提取源碼。
主要提取:Source目錄+FreeRTOSConfig.h
(里面有部分內容未使用,為了不讓大家感覺文件比較多,或者雜,我刪除了)
將這些源碼添加到自己的工程(之前講述并建立好的STM32工程),具體提取的源碼和添加到工程中的效果,請下載代碼查看。
2.添加路徑
我們添加源碼到工程,有部分頭文件include需要添加到工程。因此,我們需要添加相應路徑。
.c源代碼添加路徑的方法見文章:
1.MDK-ARM_新建軟件工程詳細過程
2.EWARM_新建軟件工程詳細過程
這里主要想提醒的是:在IAR工程中有個匯編文件portasm.s包含了,需要我們添加所在文件下的路徑。
注意:是在EWARM的Project -> Options -> Assembler -> Preprocessor中添加。
3.創建自己任務和添加相應代碼
我們創建四個任務,還是使用比較經典的LED燈任務。
void AppTaskCreate(void)
{
xTaskCreate(vAppTask1, "Task1", TASK1_STACK_SIZE, NULL, TASK1_PRIORITY, NULL);
xTaskCreate(vAppTask2, "Task2", TASK2_STACK_SIZE, NULL, TASK2_PRIORITY, NULL);
xTaskCreate(vAppTask3, "Task3", TASK3_STACK_SIZE, NULL, TASK3_PRIORITY, NULL);
xTaskCreate(vAppTask4, "Task4", TASK4_STACK_SIZE, NULL, TASK4_PRIORITY, NULL);
}
void vAppTask1(void *pvParameters)
{
for(;;)
{
LED1_TOGGLE;
vTaskDelay(50);
}
}
我新建了app_task.c和app_task.h文件添加任務的源代碼。
4.修改FreeRTOSConfig.h配置文件
這個文件是必須配置的,而且根據實際情況而定。我們系統的裁剪也與該文件有關,類似于UCOS中的os_cfg.h文件。
比如:主頻、系統滴答、系統堆棧大小等。
#define configCPU_CLOCK_HZ ((unsigned long)72000000)
#define configTICK_RATE_HZ ((TickType_t)100)
#define configTOTAL_HEAP_SIZE ((size_t)(4 * 1024))
本文不講述具體內容。后期詳細分析FreeRTOSConfig.h中的每一個參數。
至此,基本的步驟算是完成了。
Ⅲ
代碼下載
目前只提供了STM32F0、F1和F4的Demo工程,后期更新。
【提示:微信公眾號不支持外鏈接】
FreeRTOS_STM32F0_Demo下載地址:
http://pan.baidu.com/s/1qYbmfy0
FreeRTOS_STM32F1_Demo下載地址:
http://pan.baidu.com/s/1jHDHRPc
FreeRTOS_STM32F4_Demo下載地址:
http://pan.baidu.com/s/1bplLZ7x
-
目錄
+關注
關注
3文章
13瀏覽量
8279 -
源代碼
+關注
關注
96文章
2945瀏覽量
66758 -
FreeRTOS
+關注
關注
12文章
484瀏覽量
62199 -
Source
+關注
關注
0文章
17瀏覽量
9826
發布評論請先 登錄
相關推薦
評論