一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FreeRTOS移植-基于STM32F407

碼農(nóng)愛學(xué)習(xí) ? 來源:碼農(nóng)愛學(xué)習(xí) ? 作者:碼農(nóng)愛學(xué)習(xí) ? 2022-09-26 09:04 ? 次閱讀

首先新建或找一個(gè)基于KeilSTM32基礎(chǔ)工程,這里我已經(jīng)創(chuàng)建好了一個(gè)STM32F407VET6的工程模板,工程結(jié)構(gòu)如下圖的第1步的矩形框內(nèi)所示。

下面需要移植FreeRTOS了,將FreeRTOS的源碼文件復(fù)制到工程文件夾中,一些用不到的文件可刪除(哪些文件需要用到可參考上一篇的源碼結(jié)構(gòu)分析部分),然后在Keil中也創(chuàng)建一個(gè)FreeRTOS目錄,將c文件添加進(jìn)工程,注意port.c來自于RDVS的ARM_CM4F,對應(yīng)于移植到的SMT32F407硬件。

pYYBAGMwZUKAX7uvAAFlVsw-sV4348.png

添加完c文件后,還要添加對應(yīng)的h文件的搜尋路徑,具體如下:

pYYBAGMwZUqAS2GcAAFgX5g1DDY177.png

然后就可以編譯了,先進(jìn)行第1次編譯:

......(省略顯示若干行)
FreeRTOSportableRVDSARM_CM4Fport.c: 0 warnings, 1 error
compiling heap_4.c...
.FreeRTOSincludeFreeRTOS.h(98): error:  #5: cannot open source input file "FreeRTOSConfig.h": No such file or directory
  #include "FreeRTOSConfig.h"
FreeRTOSportableMemMangheap_4.c: 0 warnings, 1 error
".ObjectsTemplate_FreeRTOS.axf" - 8 Error(s), 0 Warning(s).
Target not created.
Build Time Elapsed:  00:00:23

有一個(gè)錯(cuò)誤,找不到"FreeRTOSConfig.h",這個(gè)文件在FreeRTOS源碼的Demo文件中,

將Demo中的"FreeRTOSConfig.h"文件放到FreeRTOS文件夾下的include文件夾下, 進(jìn)行第2次編譯:

......(省略顯示若干行)
compiling tasks.c...
compiling timers.c...
compiling port.c...
FreeRTOSportableRVDSARM_CM4Fport.c(713): error:  #20: identifier "SystemCoreClock" is undefined
                
ortNVIC_SYSTICK_LOAD_REG = ( 
onfigSYSTICK_CLOCK_HZ / configTICK_RATE_HZ ) - 1UL;
FreeRTOSportableRVDSARM_CM4Fport.c: 0 warnings, 1 error

又提示"SystemCoreClock" 未定義,因?yàn)樵?FreeRTOSConfig.h" : 中使用了SysyemCoreClock來標(biāo)記MCU的頻率,

在"FreeRTOSConfig.h" :的87~95行:

#ifdef __ICCARM__
	#include 
	extern uint32_t SystemCoreClock;
#endif

#define configUSE_PREEMPTION			1
#define configUSE_IDLE_HOOK				1
#define configUSE_TICK_HOOK				1
#define configCPU_CLOCK_HZ				( SystemCoreClock )

將條件編譯

#ifdef __ICCARM__

修改為

#if defined(__ICCARM__)||defined(__CC_ARM)||defined(__GNU__)

再次進(jìn)行第3次編譯:

......(省略顯示若干行)
compiling port.c...
compiling heap_4.c...
linking...
.ObjectsTemplate_FreeRTOS.axf: Error: L6200E: Symbol SVC_Handler multiply defined (by port.o and stm32f4xx_it.o).
.ObjectsTemplate_FreeRTOS.axf: Error: L6200E: Symbol PendSV_Handler multiply defined (by port.o and stm32f4xx_it.o).
.ObjectsTemplate_FreeRTOS.axf: Error: L6200E: Symbol SysTick_Handler multiply defined (by port.o and stm32f4xx_it.o).
Not enough information to list image symbols.
Not enough information to list the image map.
Finished: 2 information, 0 warning and 3 error messages.
".ObjectsTemplate_FreeRTOS.axf" - 3 Error(s), 0 Warning(s).
Target not created.
Build Time Elapsed:  00:00:02

又提示port.o與stm32f4xx_it.o有重復(fù)定義(.o為編譯的目標(biāo)文件,其實(shí)就是對應(yīng)的.c文件出了問題)

注釋掉stm32f4xx_it.c中的SVC_Handler() PendSV_Handler() SysTick_Handler()即可

修改后的stm32f4xx_it.c的110~145行:

/**
 * @brief This function handles SVCall exception.
 * @param None
 * @retval None
 */
//void SVC_Handler(void)
//{
//}

/**
 * @brief This function handles Debug Monitor exception.
 * @param None
 * @retval None
 */
void DebugMon_Handler(void)
{
}

/**
 * @brief This function handles PendSVC exception.
 * @param None
 * @retval None
 */
//void PendSV_Handler(void)
//{
//}

/**
 * @brief This function handles SysTick Handler.
 * @param None
 * @retval None
 */
//void SysTick_Handler(void)
//{
// 
//}

再次進(jìn)行第4次編譯:

......(省略顯示若干行)
linking...
.ObjectsTemplate_FreeRTOS.axf: Error: L6218E: Undefined symbol vApplicationIdleHook (referred from tasks.o).
.ObjectsTemplate_FreeRTOS.axf: Error: L6218E: Undefined symbol vApplicationStackOverflowHook (referred from tasks.o).
.ObjectsTemplate_FreeRTOS.axf: Error: L6218E: Undefined symbol vApplicationTickHook (referred from tasks.o).
.ObjectsTemplate_FreeRTOS.axf: Error: L6218E: Undefined symbol vApplicationMallocFailedHook (referred from heap_4.o).
Not enough information to list image symbols.
Finished: 1 information, 0 warning and 4 error messages.
".ObjectsTemplate_FreeRTOS.axf" - 4 Error(s), 0 Warning(s).

又提示4個(gè)hook函數(shù)未定義,

這是因?yàn)樵?FreeRTOSConfig.h"中定義了這些鉤子函數(shù),但未找到函數(shù)定義,我們先注釋掉這些定義,

就是將configUSE_IDLE_HOOK之類的宏定義定義為0即可,

查看"FreeRTOSConfig.h"的93~108行:

#define configUSE_IDLE_HOOK				1
#define configUSE_TICK_HOOK				1
#define configCPU_CLOCK_HZ				( SystemCoreClock )
#define configTICK_RATE_HZ				( ( TickType_t ) 1000 )
#define configMAX_PRIORITIES			( 5 )
#define configMINIMAL_STACK_SIZE		( ( unsigned short ) 130 )
#define configTOTAL_HEAP_SIZE			( ( size_t ) ( 75 * 1024 ) )
#define configMAX_TASK_NAME_LEN			( 10 )
#define configUSE_TRACE_FACILITY		1
#define configUSE_16_BIT_TICKS			0
#define configIDLE_SHOULD_YIELD			1
#define configUSE_MUTEXES				1
#define configQUEUE_REGISTRY_SIZE		8
#define configCHECK_FOR_STACK_OVERFLOW	2
#define configUSE_RECURSIVE_MUTEXES		1
#define configUSE_MALLOC_FAILED_HOOK	1

修改93 94 106 108行的數(shù)值為0,即:

#define configUSE_IDLE_HOOK				0
#define configUSE_TICK_HOOK				0
......(省略顯示11行)
#define configCHECK_FOR_STACK_OVERFLOW	0
......(省略顯示1行)
#define configUSE_MALLOC_FAILED_HOOK	0

再次進(jìn)行第5次編譯:

......(省略顯示若干行)

compiling port.c...

compiling heap_4.c...

linking...

Program Size: Code=1880 RO-data=424 RW-data=68 ZI-data=2036 

".ObjectsTemplate_FreeRTOS.axf" - 0 Error(s), 0 Warning(s).

Build Time Elapsed:  00:00:01

終于編譯ok了,這樣基本上算移植成功了。





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5125

    文章

    19438

    瀏覽量

    313084
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    485

    瀏覽量

    63497
收藏 人收藏

    評論

    相關(guān)推薦

    FreeRTOS移植STM32F407

    FreeRTOS,接下來我們就把FreeRTOS移植到我們所使用的平臺(tái)上,我們使用的板子是STM32F407。02. 預(yù)備工作要移植
    發(fā)表于 08-24 06:07

    如何使用STM32F407移植FreeRTOS

    如何使用STM32F407移植FreeRTOS呢?有哪些操作步驟?
    發(fā)表于 10-21 09:45

    STM32F407 FreeRTOS開發(fā)指南

    參考資料:正點(diǎn)原子《littleVGL 開發(fā)指南》正點(diǎn)原子《STM32F407 FreeRTOS 開發(fā)指南》硬件平臺(tái):stm32f407開發(fā)板(或最小系統(tǒng))、4.3寸TFTLCD以正點(diǎn)原子的例程為
    發(fā)表于 01-05 06:55

    STM32F407模板

    STM32F407模板,感興趣可以看看。
    發(fā)表于 07-25 18:52 ?149次下載

    STM32F407 UCOS III實(shí)驗(yàn)

    STM32F407 UCOS III實(shí)驗(yàn),介紹基于STM32F407的UCOSIII實(shí)例,參考下
    發(fā)表于 09-22 14:08 ?82次下載

    STM32F407的串口UART 基礎(chǔ)配置STM32CubeMX

    STM32F407的串口UART 基礎(chǔ)配置STM32CubeMX
    發(fā)表于 11-29 16:06 ?56次下載
    <b class='flag-5'>STM32F407</b>的串口UART 基礎(chǔ)配置<b class='flag-5'>STM32</b>CubeMX

    STM32F407芯片介紹

    1. 文檔準(zhǔn)備做嵌入式開發(fā)的第一步就是了解主芯片,了解STM32F407主要要關(guān)注幾個(gè)文檔:1. stm32F407芯片手冊2. stm32F407參考手冊3. Arm Cortex-M4數(shù)據(jù)手冊
    發(fā)表于 12-04 13:21 ?109次下載
    <b class='flag-5'>STM32F407</b>芯片介紹

    FreeRTOS-stm32f407移植

    FreeRTOS-stm32f407移植需要準(zhǔn)備的內(nèi)容FreeRTOS移植步驟1、添加FreeRTOS源碼1)復(fù)制源碼內(nèi)容2)刪除porta
    發(fā)表于 12-04 13:36 ?9次下載
    <b class='flag-5'>FreeRTOS-stm32f407</b><b class='flag-5'>移植</b>

    STM32CubeIDE 中針對 STM32F407 移植 ThreadX

    STM32CubeIDE 中針對 STM32F407 移植 ThreadX,不依賴盜版破解的Keil MDK、IAR等軟件。
    發(fā)表于 12-04 13:36 ?18次下載
    在 <b class='flag-5'>STM32</b>CubeIDE 中針對 <b class='flag-5'>STM32F407</b> <b class='flag-5'>移植</b> ThreadX

    STM32FreeRTOS移植

    FreeRTOS,接下來我們就把FreeRTOS移植到我們所使用的平臺(tái)上,我們使用的板子是STM32F407。02. 預(yù)備工作要移植
    發(fā)表于 12-04 14:06 ?14次下載
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>FreeRTOS</b><b class='flag-5'>移植</b>

    STM32F407原理圖下載

    STM32F407原理圖下載
    發(fā)表于 01-17 13:44 ?427次下載

    stm32f407原理圖

    stm32f407原理圖
    發(fā)表于 07-14 16:07 ?221次下載

    STM32F407最小系統(tǒng)

    STM32F407最小系統(tǒng)免費(fèi)下載。
    發(fā)表于 07-31 11:01 ?188次下載

    STM32F407 FreeRTOS開發(fā)手冊 V1.1

    STM32F407 FreeRTOS開發(fā)手冊_V1.1PDF文件下載。
    發(fā)表于 07-31 11:16 ?57次下載

    STM32F407+FreeRTOS+LWIP1.4.1移植問題記錄

    最近在學(xué)習(xí)物聯(lián)網(wǎng)相關(guān)的知識,打算用ST的開發(fā)板STM32F407ZGT6作為控制中心,上面搭載FreeROTS實(shí)時(shí)系統(tǒng),STM32F407開發(fā)板作為 TCP client
    的頭像 發(fā)表于 07-21 14:09 ?4602次閱讀
    <b class='flag-5'>STM32F407+FreeRTOS</b>+LWIP1.4.1<b class='flag-5'>移植</b>問題記錄