在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

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

倩倩 ? 來(lái)源:技術(shù)讓夢(mèng)想更偉大 ? 作者:李肖遙 ? 2022-09-06 09:26 ? 次閱讀

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

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

3c2e27b6-2d82-11ed-ba43-dac502259ad0.png

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

CMSIS ARM官方定義如下:

3c54973e-2d82-11ed-ba43-dac502259ad0.png

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

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

不同之處

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

  • 而RTOS v2則是拓展了RTOS v1,兼容更多的CPU架構(gòu)和實(shí)時(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,高級(jí)功能選擇V2:

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

審核編輯 :李倩


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

    關(guān)注

    48

    文章

    7680

    瀏覽量

    152335
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10929

    瀏覽量

    213448
  • CMSIS
    +關(guān)注

    關(guān)注

    0

    文章

    40

    瀏覽量

    11974

原文標(biāo)題:stm32CubeIDE中CMSIS_V1和CMSIS_V2選項(xiàng)的區(qū)別

文章出處:【微信號(hào):技術(shù)讓夢(mèng)想更偉大,微信公眾號(hào):技術(shù)讓夢(mèng)想更偉大】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AIGC和AI什么區(qū)別

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

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

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

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

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

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

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

    lm324 V+懸空的時(shí)候,為啥V-2V的電壓

    V+懸空的時(shí)候,為啥V-2V的電壓
    發(fā)表于 07-29 07:34

    移植CMSIS-NN v6.0.0版本到VisionBoard

    CMSIS-NN是什么?官方的解釋是:CMSISNNsoftwarelibraryisacollectionofefficientneuralnetworkkernelsdevelopedtomaximizetheperformanceandminimizethememoryfootprintofneuralnet
    的頭像 發(fā)表于 07-10 08:35 ?761次閱讀
    移植<b class='flag-5'>CMSIS</b>-NN <b class='flag-5'>v</b>6.0.0版本到VisionBoard

    請(qǐng)問(wèn)ESP32支持Jlink v9或CMSIS DAP調(diào)試嗎?

    請(qǐng)問(wèn) ESP32 支持 Jlink v9 或 CMSIS DAP 調(diào)試么?
    發(fā)表于 06-06 07:18

    PDR_ON復(fù)位和NRST引腳復(fù)位,對(duì)STM32F407IG的影響什么區(qū)別

    新手請(qǐng)問(wèn)大家在實(shí)際做工程的時(shí)候,有沒(méi)有用PDR_ON引腳做芯片復(fù)位? PDR_ON復(fù)位和 NRST引腳復(fù)位,對(duì)芯片的影響什么區(qū)別? 謝謝大家。 PS:我用的是STM32F407I
    發(fā)表于 05-16 07:21

    請(qǐng)問(wèn)CMSIS-RTOS怎么調(diào)試?

    如果用的是MDK的RTX組件,調(diào)試倒是很簡(jiǎn)單,問(wèn)題是用CUBEMX生成的CMSIS-RTOS就不知道什么好辦法調(diào)試了。 各位什么好的方法
    發(fā)表于 05-14 06:40

    請(qǐng)問(wèn)CMSIS-RTOS2的事件標(biāo)志怎么使用?

    CMSIS-RTOS2的事件標(biāo)志怎么使用
    發(fā)表于 04-18 07:13

    MSC_Application只要在任務(wù)中調(diào)用就會(huì)報(bào)錯(cuò),怎么處理?

    工程是使用cubemx生成 的,帶有FreeRTOS與Fatfs的,使用了USB外設(shè),接U盤(pán) Freerots,選擇的接口是V2的,也就是CMSIS_V2 一 個(gè)函數(shù)
    發(fā)表于 04-17 06:56

    CMSIS-RTOS V1V2區(qū)別是什么?

    最近的學(xué)習(xí)FreeRTOS,看到STM32CubeMX分別用CMSIS-RTOS V1,V2進(jìn)行封裝,請(qǐng)教CMSIS-RTOS V1
    發(fā)表于 04-11 06:06

    CMSIS的DSP數(shù)字信號(hào)處理函數(shù)庫(kù)應(yīng)用

    為了使用DSP數(shù)據(jù)庫(kù),需要在IAR開(kāi)發(fā)環(huán)境中,對(duì)工程文件選項(xiàng)General中的連接庫(kù)設(shè)置中,選擇CMSIS DSP。在程序中增加arm math頭文件即可。
    發(fā)表于 03-25 10:52 ?1684次閱讀
    <b class='flag-5'>CMSIS</b>的DSP數(shù)字信號(hào)處理函數(shù)庫(kù)應(yīng)用

    英偉達(dá)AI服務(wù)器NVLink版與PCIe版區(qū)別?又如何選擇

    在人工智能領(lǐng)域,英偉達(dá)作為行業(yè)領(lǐng)軍者,推出了兩種主要的GPU版本供AI服務(wù)器選擇——NVLink版(實(shí)為SXM版)與PCIe版。這兩者何本質(zhì)區(qū)別?又該如何根據(jù)應(yīng)用場(chǎng)景做出最佳選擇
    的頭像 發(fā)表于 03-19 11:21 ?6237次閱讀
    英偉達(dá)AI服務(wù)器NVLink版與PCIe版<b class='flag-5'>有</b>何<b class='flag-5'>區(qū)別</b>?又如何<b class='flag-5'>選擇</b><b class='flag-5'>呢</b>?

    FX3 USB StreamerExample和FX3 USB BulkloopExample什么區(qū)別

    這兩種接口類(lèi)型FX3 USB StreamerExample 和 FX3 USB BulkloopExample 什么區(qū)別,如何正確使用?
    發(fā)表于 02-27 06:04
    主站蜘蛛池模板: 婷婷在线观看网站 | 久久久黄色大片 | 老司机精品视频免费 | 欧美日韩不卡码一区二区三区 | 高清视频一区二区 | 亚洲男人天堂手机版 | 天天躁狠狠躁 | www.福利| 婷婷激情四月 | 狠狠涩| 国产精品午夜国产小视频 | 午色| 午夜国产福利在线观看 | 亚洲免费人成在线视频观看 | 色吧五月婷婷 | 免费黄视频网站 | 国产精品黄页网站在线播放免费 | 三级在线观看免播放网站 | 精品伊人久久大线蕉地址 | 欧美美女一区二区三区 | 国产黄色视屏 | 久久观看午夜精品 | 好吊788gaoco| 午夜影院色 | 伊人手机在线观看 | 天天摸天天做天天爽天天弄 | 高清一区二区三区四区五区 | 日本黄色高清视频 | 免费一级特黄欧美大片勹久久网 | 天天做天天玩天天爽天天 | 夜色福利 | 一级做a爰片久久毛片一 | 欧美一级欧美一级高清 | 婷婷啪啪 | 曰曰摸天天摸人人看久久久 | 精品伊人久久大香线蕉网站 | 91极品女神私人尤物在线播放 | 欧美成人在线网站 | 欧美日韩中文字幕在线 | 欧美刺激午夜性久久久久久久 | 日日噜噜夜夜狠狠久久丁香 |