91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

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

CMSIS_V1和CMSIS_V2有什么區(qū)別呢?該怎么選擇呢?

工程師鄧生 ? 來源:技術(shù)讓夢想更偉大 ? 作者:李肖遙 ? 2022-09-06 09:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

STM32CubeIDE在stm32開發(fā)者起著最基礎(chǔ)的作用,在STM32CubeIDE中配置FreeRTOS中間層時需要選擇interface,其中有三個選項(xiàng):Disable、CMSIS_V1和CMSIS_V2

CMSIS定義了通用工具接口,并提供一致的設(shè)備支持,那么CMSIS_V1和CMSIS_V2有什么區(qū)別呢,該怎選擇呢?

pYYBAGMWoYSAPRGuAAGCTFttMHk943.jpg

微控制器軟件接口標(biāo)準(zhǔn)CMSIS

CMSIS ARM官方定義如下:

pYYBAGMWoZaAGPcZAAFVig30WF4944.jpg

Cortex微控制器軟件接口標(biāo)準(zhǔn)(CMSIS)是獨(dú)立于供應(yīng)商的硬件抽象層,用于基于Arm Cortex處理器的微控制器,并且CMSIS提供了到處理器和外圍設(shè)備,實(shí)時操作系統(tǒng)以及中間件組件的接口,可以說非常實(shí)用。

CMSIS軟件接口簡化了軟件重用,減少了開發(fā)周期,而且也不受限操作系統(tǒng)的類型,去耦。

不同之處

RTOS v1使得軟件能夠在不同的實(shí)時操作系統(tǒng)下運(yùn)行(屏蔽不同RTOS提供的API的差別)

而RTOS v2則是拓展了RTOS v1,兼容更多的CPU架構(gòu)和實(shí)時操作系統(tǒng)。

RTOS v1創(chuàng)建任務(wù)函數(shù)如下:

/***********************ThreadManagement*****************************/
/**
*@briefCreateathreadandaddittoActiveThreadsandsetittostateREADY.
*@paramthread_defthreaddefinitionreferencedwith
efosThread.
*@paramargumentpointerthatispassedtothethreadfunctionasstartargument.
*@retvalthreadIDforreferencebyotherfunctionsorNULLincaseoferror.
*@noteMUSTREMAINUNCHANGED:osThreadCreateshallbeconsistentineveryCMSIS-RTOS.
*/
osThreadIdosThreadCreate(constosThreadDef_t*thread_def,void*argument)
{
TaskHandle_thandle;

#if(configSUPPORT_STATIC_ALLOCATION==1)&&(configSUPPORT_DYNAMIC_ALLOCATION==1)
if((thread_def->buffer!=NULL)&&(thread_def->controlblock!=NULL)){
handle=xTaskCreateStatic((TaskFunction_t)thread_def->pthread,(constportCHAR*)thread_def->name,
thread_def->stacksize,argument,makeFreeRtosPriority(thread_def->tpriority),
thread_def->buffer,thread_def->controlblock);
}
else{
if(xTaskCreate((TaskFunction_t)thread_def->pthread,(constportCHAR*)thread_def->name,
thread_def->stacksize,argument,makeFreeRtosPriority(thread_def->tpriority),
&handle)!=pdPASS){
returnNULL;
}
}
#elif(configSUPPORT_STATIC_ALLOCATION==1)

handle=xTaskCreateStatic((TaskFunction_t)thread_def->pthread,(constportCHAR*)thread_def->name,
thread_def->stacksize,argument,makeFreeRtosPriority(thread_def->tpriority),
thread_def->buffer,thread_def->controlblock);
#else
if(xTaskCreate((TaskFunction_t)thread_def->pthread,(constportCHAR*)thread_def->name,
thread_def->stacksize,argument,makeFreeRtosPriority(thread_def->tpriority),
&handle)!=pdPASS){
returnNULL;
}
#endif

returnhandle;
}

RTOS v2創(chuàng)建任務(wù)函數(shù)如下:

osThreadId_tosThreadNew(osThreadFunc_tfunc,void*argument,constosThreadAttr_t*attr){
constchar*name;
uint32_tstack;
TaskHandle_thTask;
UBaseType_tprio;
int32_tmem;

hTask=NULL;

if(!IS_IRQ()&&(func!=NULL)){
stack=configMINIMAL_STACK_SIZE;
prio=(UBaseType_t)osPriorityNormal;

name=NULL;
mem=-1;

if(attr!=NULL){
if(attr->name!=NULL){
name=attr->name;
}
if(attr->priority!=osPriorityNone){
prio=(UBaseType_t)attr->priority;
}

if((prioosPriorityISR)||((attr->attr_bits&osThreadJoinable)==osThreadJoinable)){
return(NULL);
}

if(attr->stack_size>0U){
/*InFreeRTOSstackisnotinbytes,butinsizeof(StackType_t)whichis4onARMports.*/
/*Stacksizeshouldbetherefore4bytealignedinordertoavoiddivisioncausedsideeffects*/
stack=attr->stack_size/sizeof(StackType_t);
}

if((attr->cb_mem!=NULL)&&(attr->cb_size>=sizeof(StaticTask_t))&&
(attr->stack_mem!=NULL)&&(attr->stack_size>0U)){
mem=1;
}
else{
if((attr->cb_mem==NULL)&&(attr->cb_size==0U)&&(attr->stack_mem==NULL)){
mem=0;
}
}
}
else{
mem=0;
}

if(mem==1){
#if(configSUPPORT_STATIC_ALLOCATION==1)
hTask=xTaskCreateStatic((TaskFunction_t)func,name,stack,argument,prio,(StackType_t*)attr->stack_mem,
(StaticTask_t*)attr->cb_mem);
#endif
}
else{
if(mem==0){
#if(configSUPPORT_DYNAMIC_ALLOCATION==1)
if(xTaskCreate((TaskFunction_t)func,name,(uint16_t)stack,argument,prio,&hTask)!=pdPASS){
hTask=NULL;
}
#endif
}
}
}

return((osThreadId_t)hTask);
}

正常V1夠用了,普通功能選V1,高級功能選擇V2:

我分別選擇CMSIS_V1和CMSIS_V2編譯了兩次進(jìn)行對比,CMSIS_V2都要大一些。



審核編輯:劉清

聲明:本文內(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)注

    48

    文章

    7953

    瀏覽量

    155065
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    19896

    瀏覽量

    235227
  • CMSIS
    +關(guān)注

    關(guān)注

    0

    文章

    41

    瀏覽量

    12328
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    286

    瀏覽量

    16273
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    GD32與STM32什么區(qū)別

    電子發(fā)燒友網(wǎng)站提供《GD32與STM32什么區(qū)別.docx》資料免費(fèi)下載
    發(fā)表于 04-03 17:27 ?0次下載

    CubeMX創(chuàng)建STM32F1 FreeRTOS選擇新版庫1.8.6后工程出錯是怎么回事?

    /FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c(34): error: 'freertos_os2.h' file not found34
    發(fā)表于 03-14 06:31

    ATX主板和ITX主板什么區(qū)別

    在計(jì)算機(jī)硬件領(lǐng)域,主板是承載計(jì)算機(jī)核心組件的關(guān)鍵部件,其類型多樣,性能也各有千秋。那么ATX主板和ITX主板什么區(qū)別,下面來介紹一下:
    的頭像 發(fā)表于 03-03 08:47 ?725次閱讀

    AIGC和AI什么區(qū)別

    AIGC是AI在內(nèi)容生成領(lǐng)域的一個特定應(yīng)用方向,AI的技術(shù)發(fā)展為AIGC提供了基礎(chǔ)和支撐。那么,AIGC和AI什么區(qū)別?下面,AI部落小編帶您詳細(xì)了解。
    的頭像 發(fā)表于 02-20 10:33 ?836次閱讀

    BNC連接器對于工業(yè)方面如何選擇

    BNC連接器涵蓋各種各樣類型的產(chǎn)品,在工業(yè)方面的使用會特別考驗(yàn)BNC連接器性能的穩(wěn)定,不同的應(yīng)用環(huán)境下也會影響到連接器的性能和可靠性。那么BNC連接器對于工業(yè)方面如何選擇?德索精密工業(yè)小編為大家科普一下BNC連接器對于工業(yè)方
    的頭像 發(fā)表于 02-17 09:10 ?486次閱讀
    BNC連接器對于工業(yè)方面<b class='flag-5'>該</b>如何<b class='flag-5'>選擇</b><b class='flag-5'>呢</b>?

    想選一個10或12bit的ADC,哪些ADC可以選擇?SPS如何計(jì)算

    我想選一個10或12bit的ADC,4通道的,REF可外接5V,所有通道40us完成采集,哪些ADC可以選擇?SPS如何計(jì)算
    發(fā)表于 01-22 08:14

    ADS1255 MUX寄存器設(shè)置上,AINP與AINN如何選擇

    手冊上提出最好不要接地,假如我直接基準(zhǔn)2.5v上,或是AVDD上,什么不同?MUX寄存器設(shè)置上,AINP與AINN如何選擇?AINN
    發(fā)表于 01-10 07:50

    MAX44290ANT+T和MAX44290ANT+TG7什么區(qū)別

    MAX44290ANT+T和MAX44290ANT+TG7請問什么區(qū)別? 是否文件 謝謝
    發(fā)表于 12-19 07:17

    請問PurePath里面帶ROM和不帶ROM的元件什么區(qū)別

    PurePath 里面的 帶ROM 和不帶ROM的元件什么區(qū)別?比如說,音量VOLUME_ZX 和 VOLUME_ZX_ROM, 我對比過生成的pps_driver.C文件,發(fā)現(xiàn)生成的配置
    發(fā)表于 10-28 07:21

    LM211的OC門輸出和COL輸出有什么區(qū)別嗎?

    LM211 說是OC門輸出,但是PDF里面又是COL輸出。。。這兩種什么區(qū)別嗎? 我現(xiàn)在的現(xiàn)象是這樣的 LM211 正負(fù)12V供電,COL腳輸出, (1)不接上拉電阻,IN+大于I
    發(fā)表于 09-25 07:08

    域名、IP 地址、網(wǎng)址分別是什么?什么區(qū)別

    域名、IP 地址和網(wǎng)址我們經(jīng)常會聽到這三個名詞,尤其是當(dāng)你想要開通一個網(wǎng)站的時候,但很多人對它們之間的區(qū)別并不十分清楚,那么域名、IP 地址、網(wǎng)址分別是什么?什么區(qū)別?接下來讓我來
    的頭像 發(fā)表于 09-18 11:13 ?1739次閱讀
    域名、IP 地址、網(wǎng)址分別是什么?<b class='flag-5'>有</b><b class='flag-5'>什么區(qū)別</b><b class='flag-5'>呢</b>?

    電流反饋型和電壓反饋型的帶負(fù)載能力什么區(qū)別嗎?

    1.帶負(fù)載的能力與輸出電阻(運(yùn)放的內(nèi)阻)有關(guān),但內(nèi)阻是一定的啊?出此之外,帶負(fù)載的能力還和什么有關(guān)2.電流反饋型和電壓反饋型的帶負(fù)載能力
    發(fā)表于 09-10 07:59

    INA118和INA128什么區(qū)別

    在TI分類中看帶INA118是單電源儀表放大器。INA128是雙電源儀表放大器 看到它們的基本電路也都一樣,我如何理解單電源和雙電源的區(qū)別,單電源是指只有一種電源,而沒有正負(fù)電源之分嗎?? 謝謝
    發(fā)表于 09-06 06:07

    XTR300,XTR305和XTR300什么區(qū)別

    XTR300,XTR305和XTR300什么區(qū)別? 從datasheet上哪里可以看到他們的區(qū)別和升級?
    發(fā)表于 08-02 06:20

    lm324 V+懸空的時候,為啥V-2V的電壓

    V+懸空的時候,為啥V-2V的電壓
    發(fā)表于 07-29 07:34
    主站蜘蛛池模板: 在线色综合 | avt天堂网| 色综合久久综合欧美综合网 | 免费看一级视频 | 夜夜夜夜曰天天天天拍国产 | 亚欧美综合 | 伊人网网站 | 色色色色网 | 色老板在线视频一区二区 | 国产xxxxxx久色视频在 | 国内精品免费视频自在线 | 在线免费看片 | 22eee在线播放成人免费视频 | 在线成人亚洲 | 在线 你懂的| 都市激情亚洲综合 | 亚洲一区二区电影 | 大杳蕉伊人狼人久久一本线 | 免费观看的黄色网址 | 日韩三级毛片 | 四虎影视在线影院4hu | 男人的j桶女人的j视频 | 最近最新免费视频 | 色婷婷5月 | 久久免费手机视频 | 免费在线观看大片影视大全 | 五月婷婷色网 | 婷婷色激情 | 丁香六月激情婷婷 | 六月婷婷网视频在线观看 | 福利盒子手机看片 | 欧美一卡2卡三卡四卡五卡 欧美一卡二卡3卡4卡无卡六卡七卡科普 | 欧美成人免费全部观看天天性色 | 国产成人在线网址 | 天天操夜夜嗨 | 奇米7777影视 | yellow中文字幕久久网 | 玖玖精品国产 | 爽好舒服快受不了了老师 | 狠狠操婷婷 | 午夜免费啪在线观看视频网站 |