日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2025年07月26日(星期六)

2021年07月26日 | 移植uc/OS-III最新版到小熊派開發(fā)板(STM32L431)

發(fā)布者:BoldDreamer 來源: eefocus關(guān)鍵字:移植  OS-III  STM32L431 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

一、uc/OS全家桶

Micrium Software提供了 RTOS 解決方案系列,俗稱ucos全家桶,其中最為出名的就是 ucOS-II 和ucOS-III,于 2016 年成為 Silicon Labs 的一部分。

https://github.com/SiliconLabs

3. ucos內(nèi)核選擇

玩全家桶之前,肯定要先把RTOS內(nèi)核玩起來,關(guān)于選擇ucos-II還是ucos-III是個(gè)老生長談的問題,上圖解決:

4. uc/OS-III源碼下載

uc/OS-III系統(tǒng)分為了三個(gè)開源倉庫,要分別拉取。

① uC-OS3:

git clone https://github.com/SiliconLabs/uC-OS3.git1.

② uC-CPU:

git clone https://github.com/SiliconLabs/uC-CPU.git1.


③ uC-LIB:

git clone https://github.com/SiliconLabs/uC-LIB.git1.

二、移植前的準(zhǔn)備

本文中使用的開發(fā)板為小熊派IoT開發(fā)板,主控為STM32L431RCT6:

本文使用的開發(fā)工具是MDK 5.30版本,編譯器版本為ARMCC5。

移植之前使用STM32CubeMX生成一份裸機(jī)工程,保證可以使用printf在串口正常打印。

三、移植uc/OS-III

1. 復(fù)制ucos內(nèi)核文件到工程中

這里我全都復(fù)制過來,后續(xù)可以將未添加到MDK中的文件刪除。

在工程下新建 ucOS-III 文件夾,存放ucOS-III相關(guān)文件。

① 復(fù)制ucos內(nèi)核文件夾過來:

② 復(fù)制uC-CPU和uC-LIB兩個(gè)文件夾過來:

2.添加文件到MDK工程

① 添加 ucos-iii/ports 分組,添加 PortsARM-Cortex-MARMv7-M 目錄下的os_cpu_c.c文件,以及該目錄下ARM目錄下的os_cpu_a.asm文件和 os_cpu_c.c文件:

② 添加 ucos-iii/source分組,添加Source文件夾下的所有c文件(除去__dbg_uCOS-III.c):

③ 添加uC-LIB分組,添加uC-LIB文件夾下的4個(gè)c文件:

④ 添加uC-CPU分組,添加uC-CPU下的相關(guān)文件,如圖:

⑤ 添加 ucos-iii/config 分組,添加配置文件,如下:

  • lib_cfg.h:uC-LIBCfgTemplate

  • os_cfg.h:CfgTemplate

  • cpu_cfg.h:uC-CPUCfgTemplate

3. 添加頭文件路徑到工程中

4. 修改配置文件

① 修改 cpu_cfg.h,配置本工程所使用內(nèi)核中CPU的NVIC優(yōu)先級位數(shù):

② 修改 os_cfg.h,關(guān)閉系統(tǒng)中 APP HOOKS 功能:

5. 處理中斷

RTOS中內(nèi)核得以運(yùn)行需要兩個(gè)中斷:


在pendSV異常處理中進(jìn)行任務(wù)切換

在systick異常處理中進(jìn)行內(nèi)核時(shí)鐘處理

首先包含進(jìn)來ucos的頭文件,修改 stm32l4xx_it.c 文件,在頭文件添加:


/* Private includes ----------------------------------------------------------*/

/* USER CODE BEGIN Includes */

#include "os.h"

/* USER CODE END Includes */


① 處理pendSV異常,如下:


/**

  * @brief This function handles Pendable request for system service.

  */

void PendSV_Handler(void)

{

  /* USER CODE BEGIN PendSV_IRQn 0 */

   OS_CPU_PendSVHandler();


  /* USER CODE END PendSV_IRQn 0 */

  /* USER CODE BEGIN PendSV_IRQn 1 */


  /* USER CODE END PendSV_IRQn 1 */

}


② 處理Systick異常,如下:


/**

  * @brief This function handles System tick timer.

  */

void SysTick_Handler(void)

{

/* USER CODE BEGIN SysTick_IRQn 0 */

/* USER CODE END SysTick_IRQn 0 */

HAL_IncTick();

/* USER CODE BEGIN SysTick_IRQn 1 */

OS_CPU_SysTickHandler();

/* USER CODE END SysTick_IRQn 1 */

}


至此,移植完成。


四、測試系統(tǒng)調(diào)度和延時(shí)

在main.c中按照如下過程編寫測試代碼。


① 引入ucos頭文件:


/* Private includes ----------------------------------------------------------*/

/* USER CODE BEGIN Includes */

#include

#include "os.h"

/* USER CODE END Includes */


② 定義任務(wù)棧、任務(wù)控制塊、任務(wù)入口函數(shù):


/* Private variables ---------------------------------------------------------*/


/* USER CODE BEGIN PV */

static  OS_TCB   Task1TCB;

static  CPU_STK  Task1Stk[512];


static void Task1_entry(void *p_arg)

{

OS_ERR  err;

    

(void)p_arg;

  

while(1)

{

        printf("task1 is running...rn");

    OSTimeDly(1000, OS_OPT_TIME_DLY, &err);

}   

}



static  OS_TCB   Task2TCB;

static  CPU_STK  Task2Stk[512];


static void Task2_entry(void *p_arg)

{

OS_ERR  err;

    

(void)p_arg;

  

while(1)

{

        printf("task2 is running...rn");

    OSTimeDly(1000, OS_OPT_TIME_DLY, &err);

}   

}



/* USER CODE END PV */


③ 在main函數(shù)中定義錯(cuò)誤值變量:


  /* USER CODE BEGIN 1 */

    OS_ERR  err;

  /* USER CODE END 1 */


④ 在main函數(shù)中初始化內(nèi)核、創(chuàng)建兩個(gè)任務(wù)、啟動內(nèi)核:


/* USER CODE BEGIN 2 */

printf("uc/OS-III Port On BearPi Board By Mculover666rn");


/* 初始化 uc/OS 內(nèi)核 */

OSInit(&err); 


/* 創(chuàng)建task1 */

OSTaskCreate((OS_TCB       *)&Task1TCB,         //任務(wù)控制塊指針           

             (CPU_CHAR     *)"Task 1",          //任務(wù)名稱

             (OS_TASK_PTR   )Task1_entry,       //任務(wù)入口函數(shù)

             (void         *)NULL,              //任務(wù)入口函數(shù)的參數(shù)

             (OS_PRIO       )2,                 //任務(wù)優(yōu)先級

             (CPU_STK      *)&Task1Stk[0],      //任務(wù)棧地址

             (CPU_STK_SIZE  )512 / 10,          //任務(wù)棧監(jiān)測區(qū)大小

             (CPU_STK_SIZE  )512,               //任務(wù)棧大小

             (OS_MSG_QTY    )0,                 //任務(wù)支持接受的最大消息數(shù)

             (OS_TICK       )0,                 //時(shí)間片 */

             (void         *)0,                 //堆??臻g大小  

             (OS_OPT        )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),

 /*

OS_OPT_TASK_STK_CHK      使能檢測任務(wù)棧,統(tǒng)計(jì)任務(wù)棧已用的和未用的

OS_OPT_TASK_STK_CLR      在創(chuàng)建任務(wù)時(shí),清零任務(wù)棧

 */  

             (OS_ERR       *)&err);


/* 創(chuàng)建task2 */

OSTaskCreate((OS_TCB       *)&Task2TCB,   

             (CPU_CHAR     *)"Task 2",

             (OS_TASK_PTR   )Task2_entry,

             (void         *)0,

             (OS_PRIO       )3,

             (CPU_STK      *)&Task2Stk[0],

             (CPU_STK_SIZE  )512 / 10,

             (CPU_STK_SIZE  )512,

             (OS_MSG_QTY    )0,

             (OS_TICK       )0,

             (void         *)0,

             (OS_OPT        )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),

             (OS_ERR       *)&err);


/* 啟動內(nèi)核 */

OSStart(&err);


(void)&err;


/* USER CODE END 2 */


⑤ 編譯,下載,在串口助手中查看輸出:




接下來就可以愉快的去玩uc/OS-III內(nèi)核啦~還可以玩玩全家桶,go go go!

關(guān)鍵字:移植  OS-III  STM32L431 引用地址:移植uc/OS-III最新版到小熊派開發(fā)板(STM32L431)

上一篇:STM32CubeMX | 35-使用硬件FSMC驅(qū)動TFT-LCD屏幕
下一篇:STM32WL芯片解鎖方法

推薦閱讀

· 第二季凈營收22.7億美元 (同比增幅18.0%),營業(yè)利潤率12.7%,凈利潤2.61億美元· 第二季度產(chǎn)品部門、地區(qū)市場和終端市場營收同比增長均衡· 第三季度業(yè)務(wù)展望中位數(shù)目標(biāo):凈營收環(huán)比增幅約10.0%,毛利率大約40.0% 橫跨多重電子應(yīng)用領(lǐng)域的全球領(lǐng)先的半導(dǎo)體供應(yīng)商意法半導(dǎo)體(STMicroelectronics,簡稱ST;紐約證券交易所代碼:STM)公布截至2018年6月30...
記憶體大廠SK海力士25日公布2019年第2季的獲利狀況,因?yàn)槭艿接洃涹w價(jià)格持續(xù)低迷,以及美中貿(mào)易戰(zhàn)與日韓貿(mào)易摩擦等因素的沖擊,凈獲利較2018年同期大降了88%之多,使得SK海力士不得不繼三星傳出要延后平澤P2記憶體產(chǎn)線的投資之后,也宣布該公司的生產(chǎn)調(diào)整計(jì)劃,連帶帶動25日臺灣記憶體股票的股價(jià)上揚(yáng)。根據(jù)SK 海力士所公布的資料顯示,2019 年第2 季的...
在工業(yè)生產(chǎn)過程中,單一或設(shè)備的故障可能會引起非常嚴(yán)重的后果,如2010年的“震網(wǎng)”病毒。根據(jù)目前智能工廠的發(fā)展方向和安全態(tài)勢,攻擊者可能觸發(fā)的攻擊將會對企業(yè)、社會乃至一個(gè)國家造成巨大的損失。工業(yè)機(jī)器人作為智能工廠的核心組成部分之一,其存在軟件和協(xié)議的缺陷漏洞已經(jīng)廣為人知,但是到目前為止還沒有深入的研究,以證明機(jī)器人究竟在多大程度上...
7月22日,上能電氣10GW高效智能逆變器項(xiàng)目在同心工業(yè)園區(qū)正式投產(chǎn),我區(qū)第一臺3.125MW光伏逆變器正式下線。該項(xiàng)目由上能電氣與中核匯能合作興建,項(xiàng)目總投資2億元,一期投資5000萬元,租用寧夏同心工業(yè)園區(qū)扶貧產(chǎn)業(yè)園拓展區(qū)4號廠房(總面積共計(jì)4000.75平方米),計(jì)劃安裝2條逆變器及儲能雙向變流生產(chǎn)線,項(xiàng)目全部建成達(dá)產(chǎn)后,可達(dá)年產(chǎn)10GW光伏逆變器的生產(chǎn)...

史海拾趣

問答坊 | AI 解惑

谷歌IO對Androd的架構(gòu)和運(yùn)行機(jī)理分析

谷歌IO對Androd的架構(gòu)和運(yùn)行機(jī)理分析 Android Anatomy and Physiology By Google IO Android 架構(gòu)剖析和機(jī)能分析 翻譯:JeefJiang 2009 年8 月14 日 ·  Android Anatomy    Android 架構(gòu)剖析 ·    Li ...…

查看全部問答∨

修復(fù)移動硬盤

我的移動硬盤不顯示盤符,不顯示發(fā)現(xiàn)新硬件,早上好好的,放在口袋里辦點(diǎn)事就出了這毛病!希望大家看看是什么毛病,是不是數(shù)據(jù)線虛了!…

查看全部問答∨

想找一份這方面的工作,不要求多少待遇

想做windows驅(qū)動開發(fā),也想做linux驅(qū)動,但是linux不太熟悉,希望推薦一個(gè)工作機(jī)會…

查看全部問答∨

isp下載線

用在s52上的下載線,自己做的 接到電腦上后,可以檢測到器件 可以很順利的完成,沒有任何報(bào)錯(cuò) 但實(shí)際程序沒寫進(jìn)去 不知道為什么 ??? 很奇怪…

查看全部問答∨

ARM9開發(fā)板

為了方便科研部門、公司學(xué)習(xí)和開發(fā)嵌入式系統(tǒng)產(chǎn)品。我們在成功推出DM2410B+ 實(shí)驗(yàn)/開發(fā)系統(tǒng)基礎(chǔ)上,隆重推出DM2410/P 總線開發(fā)板,該產(chǎn)品與DM2410B+ 實(shí)驗(yàn)/開發(fā)系統(tǒng)100%兼容,可以將DM2410B+ 實(shí)驗(yàn)/開發(fā)系統(tǒng)完成的任何項(xiàng)目固化在該板上運(yùn)行,而且其總 ...…

查看全部問答∨

stm32串口波特率設(shè)置為5bps

串口波特率設(shè)置為 5bps,還從來沒見到有人這么用,恐怕STM32不支持這么低的波特率。 波特率為 5,直接用IO口模擬都沒有任何問題?!?

查看全部問答∨

請大家?guī)兔ふ疫@種類型的傳感器

有沒有那種傳感器裝在物體模型里面的,當(dāng)用手或者其他物體碰到裝有傳感器的物體模型表面的時(shí)候就有一個(gè)信號輸出。這種傳感器怎么選型?;蛘哂袥]有廠家定做這中類型的傳感器,求大家?guī)兔?,謝謝?!?

查看全部問答∨

C語言中的static和extern

C語言中的static和extern extern的作用     extern有兩個(gè)作用,第一個(gè),當(dāng)它與\"C\"一起連用時(shí),如: extern \"C\" void fun(int a, int b); 則告訴編譯器在編譯fun這個(gè)函數(shù)名時(shí)按著C的規(guī)則去翻譯相應(yīng)的函數(shù)名而不是C++的, C++的規(guī)則在 ...…

查看全部問答∨

編譯quartus遇到的問題

Error (199058): Fail to evaluate Tcl command d:/study app/quartus/quartus/common/tcl/internal/nativelink/qnativesim.tcl 編譯過程中出現(xiàn)這個(gè)問題,緊急求助~…

查看全部問答∨

線性電源TPS7A4901

有用過TPS7A4901的嗎? 最大輸出電流150ma,由24V降到5V,需要加什么樣的散熱器? …

查看全部問答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved