色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

基于MM32F5270 MCU實(shí)現(xiàn)FreeRTOS移植

靈動(dòng)MM32MCU ? 來源:靈動(dòng)MM32MCU ? 2024-08-22 10:04 ? 次閱讀

1?簡(jiǎn)介

嵌入式領(lǐng)域中,嵌入式實(shí)時(shí)操作系統(tǒng)正得到越來越廣泛的應(yīng)用。采用嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS)可以更合理、更有效地利用 CPU 的資源,簡(jiǎn)化應(yīng)用軟件的設(shè)計(jì),縮短系統(tǒng)開發(fā)時(shí)間,更好地保證系統(tǒng)的實(shí)時(shí)性和可靠性。

FreeRTOS是一個(gè)RTOS類的嵌入式實(shí)時(shí)操作系統(tǒng),具有源碼公開、可移植、可裁減、調(diào)度策略靈活的特點(diǎn),可以方便地移植到各種單片機(jī)上運(yùn)行。

MM32F5270是一款搭載了安謀科技 Arm Cortex-M33/STAR-MC1內(nèi)核的MCU產(chǎn)品,其工作頻率可達(dá) 120MHz,具有256KB Flash和192KB RAM,內(nèi)置單精度浮點(diǎn)運(yùn)算單元(Floating Point Unit,F(xiàn)PU),并支持數(shù)字信號(hào)處理(Digital Signal Processing, DSP)擴(kuò)展,提供實(shí)時(shí)處理和高級(jí)中斷處理能力,實(shí)現(xiàn)性能和電源效率的平衡,適合用于各種類型的實(shí)時(shí)控制應(yīng)用。

本系列微課堂基于MM32F5270 MCU初步學(xué)習(xí)使用FreeRTOS開發(fā),不足之處歡迎指出。

2?FreeRTOS移植

2.1 源碼下載

點(diǎn)擊官網(wǎng)標(biāo)題下的Download可以去下載FreeRTOS源碼,當(dāng)前版本是V10.5.1(task.h文件中有注明版本)。

wKgZombGnNqAeLj4AAFxHcIfOH0371.jpg

內(nèi)容如下:

wKgZombGnNuAWwk2AAHfI6BdHDc720.jpg

包括3個(gè)文件夾、4個(gè)HTML格式的網(wǎng)頁和2個(gè).txt文檔,重點(diǎn)在于上面的FreeRTOS 和FreeRTOS-Plus兩個(gè)文件夾,其中FreeRTOS文件夾的內(nèi)容就是FreeRTOS內(nèi)核源碼,而Plus版本還包括內(nèi)核以外的組件和第三方補(bǔ)充,對(duì)于FreeRTOS移植,我們只需要用到FreeRTOS內(nèi)核源碼就行了。

FreeRTOS文件夾內(nèi)容:

wKgaombGnNqAVLVfAAEe9ID7YDI295.jpg

Demo文件夾里面是 FreeRTOS的例程;

License文件夾里面是相關(guān)的許可信息

Source文件夾是FreeRTOS源碼;

Test文件夾是FreeRTOS的相關(guān)測(cè)試。

Source文件夾內(nèi)容:

wKgZombGnQqAVRx5AAIVcjHncjs699.jpg

其中.c文件就是FreeRTOS的源碼文件,include文件夾是源碼包含的一些頭文件,portable文件夾是FreeRTOS操作系統(tǒng)和具體硬件的連接層。

portable文件夾內(nèi)容:

wKgaombGnQqAUmtyAAMXFOPVB9o330.jpg

不同MCU內(nèi)核及編譯環(huán)境對(duì)應(yīng)的portable文件有所差異,MemMang文件跟內(nèi)存管理相關(guān)。

2.2 移植

移植 FreeRTOS首先需要一個(gè)基礎(chǔ)工程,可以參考MM32F5270 LibSamples創(chuàng)建工程,或直接在任一例程基礎(chǔ)上改動(dòng)。

1) 向工程中添加FreeRTOS源碼

在工程中新建一個(gè)名為FreeRTOS的文件夾:

wKgZombGnQqADI6oAAC38O8ipBk302.jpg

將FreeRTOS相關(guān)文件復(fù)制到此文件夾下:

wKgaombGnQqAHY_rAAFzne34Hk0504.jpg

portable文件夾只留下GCC和MemMang兩個(gè)文件夾,其他的都可以刪除。

wKgZombGnQqAW0t1AABnMBzqZb4396.jpg

2) 向工程分組中添加文件

打開基礎(chǔ)工程,新建分組 FreeRTOS_CORE 和 FreeRTOS_PORTABLE,然后向這兩個(gè)分組中添加文件:

wKgaombGnQqAKb8DAAIWqJ5ojAY579.jpg

port.c文件位于portable\GCC\ARM_CM33_NTZ\non_secure文件夾。

heap_4.c文件位于portable\MemMang文件夾,提供RTOS內(nèi)核所需的內(nèi)存分配。

3) 添加頭文件路徑

添加FreeRTOS源碼的頭文件路徑:

wKgaombGnQqAc2jHAAIEFVpoy_0818.jpg

4) 加入FreeRTOSConfig.h文件

FreeRTOSConfig.h是FreeRTOS的配置文件,通過宏定義來完成對(duì)系統(tǒng)的配置和裁剪。可以自己創(chuàng)建(參考 http://www.freertos.org/a00110.html),也可以從FreeRTOS的官方移植工程中復(fù)制。這里復(fù)制FreeRTOSDemoCORTEX_MPU_M33F_Simulator_Keil_GCCConfigFreeRTOSConfig.h。

5)修改重復(fù)定義的函數(shù)

FreeRTOS在port.c中定義了SysTick_Handler()、SVC_Handler()和PendSV_Handler()這三個(gè)函數(shù),需要將工程mm32f5270_it.c中定義的三個(gè)同名函數(shù)注釋掉。

6) 編譯和修改

編譯后如果一些報(bào)錯(cuò)或警告,根據(jù)提示修改即可,一般和Contex-M33的特定配置選項(xiàng)有關(guān),如configENABLE_MPU、configENABLE_FPU、configENABLE_TRUSTZONE 根據(jù)實(shí)際應(yīng)用情況來適配。

另外還要在FreeRTOSConfig.h修改如下宏定義:

設(shè)置configCPU_CLOCK_HZ為120000000,和當(dāng)前MCU配置的系統(tǒng)時(shí)鐘頻率一致。

設(shè)置configTICK_RATE_HZ為1000,即FreeRTOS時(shí)鐘節(jié)拍周期是1ms。

wKgaombGnUuAAOyQAAEzAoWALxQ974.jpg

3?驗(yàn)證

開發(fā)板使用Mini-F5277-OB,編寫簡(jiǎn)單的FreeRTOS應(yīng)用代碼,測(cè)試FreeRTOS的移植是否成功。設(shè)計(jì)四個(gè)任務(wù):start_task()、led1_task ()、led2_task ()和 float_task(),功能如下:

start_task():用來創(chuàng)建其他三個(gè)任務(wù)。

led1_task ():控制 LED1 的閃爍,提示系統(tǒng)正在運(yùn)行。

led2_task ():控制 LED2 的閃爍。

float_task():浮點(diǎn)測(cè)試任務(wù),用于測(cè)試FPU是否工作正常。

代碼如下:

voidstart_task(void*pvParameters)
{
taskENTER_CRITICAL();

xTaskCreate((TaskFunction_t)led1_task,
(constchar*)"led1_task",
(uint16_t)LED1_STK_SIZE,
(void*)NULL,
(UBaseType_t)LED1_TASK_PRIO,
(TaskHandle_t*)&LED1Task_Handler);

xTaskCreate((TaskFunction_t)led2_task,
(constchar*)"led2_task",
(uint16_t)LED2_STK_SIZE,
(void*)NULL,
(UBaseType_t)LED2_TASK_PRIO,
(TaskHandle_t*)&LED2Task_Handler);

xTaskCreate((TaskFunction_t)float_task,
(constchar*)"float_task",
(uint16_t)FLOAT_STK_SIZE,
(void*)NULL,
(UBaseType_t)FLOAT_TASK_PRIO,
(TaskHandle_t*)&FLOATTask_Handler);

vTaskDelete(StartTask_Handler);
taskEXIT_CRITICAL();
}


voidled1_task(void*p_arg)
{
while(1)
{
PLATFORM_LED_Toggle(LED1);
vTaskDelay(100);
}
}


voidled2_task(void*p_arg)
{
while(1)
{
PLATFORM_LED_Toggle(LED2);
vTaskDelay(500);
}
}


voidfloat_task(void*p_arg)
{
staticfloatfloat_num=0.00;
while(1)
{
float_num+=0.01f;
printf("float_num=%.4f
",float_num);
vTaskDelay(1000);
}
}

主函數(shù):

intmain(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);

PLATFORM_Init();

xTaskCreate((TaskFunction_t)start_task,
(constchar*)"start_task",
(uint16_t)START_STK_SIZE,
(void*)NULL,
(UBaseType_t)START_TASK_PRIO,
(TaskHandle_t*)&StartTask_Handler);

vTaskStartScheduler();
}

程序執(zhí)行情況:

板載LED1、LED2分別間隔100ms、500ms閃爍。

串口調(diào)試助手打印float_num的值不斷增加,每次增加0.01,工程和KEIL已經(jīng)設(shè)置使用FPU,調(diào)試觀察會(huì)用到浮點(diǎn)寄存器s0、s2和浮點(diǎn)指令VLDR、VADD.F32。

與程序設(shè)置相符,F(xiàn)reeRTOS移植成功。

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

    關(guān)注

    146

    文章

    17123

    瀏覽量

    350980
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19104

    瀏覽量

    304798
  • RTOS
    +關(guān)注

    關(guān)注

    22

    文章

    811

    瀏覽量

    119593
  • FreeRTOS
    +關(guān)注

    關(guān)注

    12

    文章

    484

    瀏覽量

    62139
  • 實(shí)時(shí)操作系統(tǒng)

    關(guān)注

    1

    文章

    197

    瀏覽量

    30753

原文標(biāo)題:靈動(dòng)微課堂 (第283講)|基于MM32F5270移植FreeRTOS

文章出處:【微信號(hào):MindMotion-MMCU,微信公眾號(hào):靈動(dòng)MM32MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MM32F5270平臺(tái)ADC注入通道的單周期采樣的實(shí)現(xiàn)

    MM32F5270的ADC可配置4個(gè)注入通道來擴(kuò)展轉(zhuǎn)換通道,那么可進(jìn)行轉(zhuǎn)換的通道最多可達(dá)20個(gè)。
    的頭像 發(fā)表于 06-01 17:25 ?1497次閱讀
    <b class='flag-5'>MM32F5270</b>平臺(tái)ADC注入通道的單周期采樣的<b class='flag-5'>實(shí)現(xiàn)</b>

    MM32F5270開發(fā)板+Freertos(+1.8寸TFT)使用步驟介紹

    1、MM32F5270開發(fā)板+Freertos(+1.8寸TFT)使用步驟  最近一直在弄這個(gè)板子,但是中間遇到了很多問題還沒解決,在這里先把之前做的一部分分享一下,  mindsdk  靈動(dòng)官網(wǎng)
    發(fā)表于 08-31 15:17

    MM32F5270(STAR-MC1內(nèi)核)RT-Thread完整版的移植教程

    基本把rtt移植mm32f5270中。移植驗(yàn)證在main.c中main函數(shù)添加點(diǎn)燈的代碼。如果能夠看到led在閃爍,就說明移植成功了。現(xiàn)象shell適配適配uart驅(qū)動(dòng)
    發(fā)表于 12-23 17:17

    MM32F5270總線架構(gòu)設(shè)計(jì)

    本文介紹了MM32F5270 中所采用的多并發(fā)總線架構(gòu),并通過帶顯示的音頻播放器的實(shí)例說明了該架構(gòu)在實(shí)際應(yīng)用中所能達(dá)到的吞吐率提升效果。
    的頭像 發(fā)表于 05-11 11:15 ?2170次閱讀
    <b class='flag-5'>MM32F5270</b>總線架構(gòu)設(shè)計(jì)

    基于MM32F5270控制器的I2S音頻播放

    MM32F5270 系列控制器支持 I2S 總線接口,本章節(jié)在接下來會(huì)對(duì) MM32F5270 I2S進(jìn)行介紹,并使用 MM32F5270 和 CS4344 芯片進(jìn)行 I2S 通信來演示播放一段聲音。
    的頭像 發(fā)表于 09-16 10:39 ?2353次閱讀

    MM32F5270】Keil開發(fā)環(huán)境搭建

    本文是對(duì)MM32F5270相關(guān)的靈動(dòng)官網(wǎng)資料和社區(qū)現(xiàn)有幾篇環(huán)境搭建帖的整理和總結(jié)。詳細(xì)且完整的記錄了——如何從零搭建MM32F5270 Keil開發(fā)環(huán)境以及如何編譯運(yùn)行MM32F5270 SDK中
    的頭像 發(fā)表于 11-06 16:14 ?2747次閱讀
    【<b class='flag-5'>MM32F5270</b>】Keil開發(fā)環(huán)境搭建

    MM32F5270 產(chǎn)品手冊(cè)(中文版)

    MM32F5270 產(chǎn)品手冊(cè)(中文版)
    發(fā)表于 02-23 18:45 ?0次下載
    <b class='flag-5'>MM32F5270</b> 產(chǎn)品手冊(cè)(中文版)

    MM32F5270 產(chǎn)品手冊(cè)(英文版)

    MM32F5270 產(chǎn)品手冊(cè)(英文版)
    發(fā)表于 02-23 18:45 ?0次下載
    <b class='flag-5'>MM32F5270</b> 產(chǎn)品手冊(cè)(英文版)

    MM32F5270 用戶手冊(cè)(中文版)

    MM32F5270 用戶手冊(cè)(中文版)
    發(fā)表于 02-23 18:46 ?0次下載
    <b class='flag-5'>MM32F5270</b> 用戶手冊(cè)(中文版)

    MM32F5270 用戶手冊(cè)(英文版)

    MM32F5270 用戶手冊(cè)(英文版)
    發(fā)表于 02-23 18:46 ?0次下載
    <b class='flag-5'>MM32F5270</b> 用戶手冊(cè)(英文版)

    MM32F5270 勘誤表(中文版)

    MM32F5270 勘誤表(中文版)
    發(fā)表于 02-23 18:47 ?0次下載
    <b class='flag-5'>MM32F5270</b> 勘誤表(中文版)

    MM32F5270 勘誤表(英文版)

    MM32F5270 勘誤表(英文版)
    發(fā)表于 02-23 18:48 ?0次下載
    <b class='flag-5'>MM32F5270</b> 勘誤表(英文版)

    MM32F5270平臺(tái)ADC注入通道的單周期采樣的實(shí)現(xiàn)

    MM32F5270的ADC可配置4個(gè)注入通道來擴(kuò)展轉(zhuǎn)換通道,那么可進(jìn)行轉(zhuǎn)換的通道最多可達(dá)20個(gè)。
    的頭像 發(fā)表于 05-26 09:31 ?706次閱讀
    <b class='flag-5'>MM32F5270</b>平臺(tái)ADC注入通道的單周期采樣的<b class='flag-5'>實(shí)現(xiàn)</b>

    MM32F5270平臺(tái)ADC注入通道的單周期采樣的實(shí)現(xiàn)

    MM32F5270的ADC可配置4個(gè)注入通道來擴(kuò)展轉(zhuǎn)換通道,那么可進(jìn)行轉(zhuǎn)換的通道最多可達(dá)20個(gè)。
    的頭像 發(fā)表于 05-26 09:32 ?919次閱讀
    <b class='flag-5'>MM32F5270</b>平臺(tái)ADC注入通道的單周期采樣的<b class='flag-5'>實(shí)現(xiàn)</b>

    基于MM32F5270的I2S音頻播放

    基于MM32F5270的I2S音頻播放
    的頭像 發(fā)表于 10-30 17:13 ?1182次閱讀
    基于<b class='flag-5'>MM32F5270</b>的I2S音頻播放
    主站蜘蛛池模板: 在线看片亚洲| 国产精品久久久精品a级小说| 国产区精品综合在线| 内射少妇36P九色| 亚洲男人的天堂久久精品麻豆| YELLOW视频直播在线观看高清| 久久精品九九亚洲精品天堂| 婷婷亚洲五月色综合久久| 99久久精品费精品国产| 久久国产精品永久免费网站| 午夜射精日本三级| 成人免费在线视频| 女人一级毛片免费观看| 一天不停的插BB十几次| 国产精品一区二区在线播放| 日本漫画母亲口工子全彩| 2017欧美狠狠色| 久久精品国产清白在天天线| 亚洲AV无码乱码国产麻豆P| 动漫美女被羞羞动漫怪物| 欧美大片免费观看| 中文字幕爆乳JULIA女教师| 精品国产90后在线观看| 日本精油按摩| caoporon超碰在线视频| 色青青草原桃花久久综合| 24小时日本在线电影| 精品国产一区二区三区久久影院| 日本视频中文字幕一区二区 | 亚洲中文日韩日本在线视频| 国产成人综合95精品视频免费| 情浓野战台湾三级| 99久久精品免费看国产一区二区三区| 久草精品在线| 亚洲精品久久久久AV无码| 国产美女又黄又爽又色视频网站| 色欲AV人妻精品麻豆AV| 豆奶视频在线高清观看| 日韩精品a在线视频| 吃奶啃奶玩乳漫画| 人人碰79免费视频|