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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CMSIS_V1和CMSIS_V2有什么區別呢,該怎選擇呢?

倩倩 ? 來源:技術讓夢想更偉大 ? 作者:李肖遙 ? 2022-09-06 09:26 ? 次閱讀

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

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

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

微控制器軟件接口標準CMSIS

CMSIS ARM官方定義如下:

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

Cortex微控制器軟件接口標準(CMSIS)是獨立于供應商的硬件抽象層,用于基于Arm Cortex處理器的微控制器,并且CMSIS提供了到處理器和外圍設備,實時操作系統以及中間件組件的接口,可以說非常實用。

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

不同之處

  • RTOS v1使得軟件能夠在不同的實時操作系統下運行(屏蔽不同RTOS提供的API的差別)

  • 而RTOS v2則是拓展了RTOS v1,兼容更多的CPU架構和實時操作系統。

RTOS v1創建任務函數如下:

/***********************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創建任務函數如下:

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編譯了兩次進行對比,CMSIS_V2都要大一些。

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7552

    瀏覽量

    151407
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10862

    瀏覽量

    211730
  • CMSIS
    +關注

    關注

    0

    文章

    40

    瀏覽量

    11899

原文標題:stm32CubeIDE中CMSIS_V1和CMSIS_V2選項的區別

文章出處:【微信號:技術讓夢想更偉大,微信公眾號:技術讓夢想更偉大】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    MAX44290ANT+T和MAX44290ANT+TG7什么區別

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

    域名、IP 地址、網址分別是什么?什么區別

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

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

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

    請問ESP32支持Jlink v9或CMSIS DAP調試嗎?

    請問 ESP32 支持 Jlink v9 或 CMSIS DAP 調試么?
    發表于 06-06 07:18

    請問CMSIS-RTOS2的事件標志怎么使用?

    CMSIS-RTOS2的事件標志怎么使用
    發表于 04-18 07:13

    MSC_Application只要在任務中調用就會報錯,怎么處理?

    工程是使用cubemx生成 的,帶有FreeRTOS與Fatfs的,使用了USB外設,接U盤 Freerots,選擇的接口是V2的,也就是CMSIS_V2 一 個函數
    發表于 04-17 06:56

    CMSIS-RTOS V1V2區別是什么?

    最近的學習FreeRTOS,看到STM32CubeMX分別用CMSIS-RTOS V1,V2進行封裝,請教CMSIS-RTOS V1
    發表于 04-11 06:06

    CMSIS的DSP數字信號處理函數庫應用

    為了使用DSP數據庫,需要在IAR開發環境中,對工程文件選項General中的連接庫設置中,選擇CMSIS DSP。在程序中增加arm math頭文件即可。
    發表于 03-25 10:52 ?1449次閱讀
    <b class='flag-5'>CMSIS</b>的DSP數字信號處理函數庫應用

    請問GTM模塊里的ATOM和TOM什么區別

    如題,GTM模塊里的ATOM和TOM什么區別
    發表于 02-06 06:35

    RISC-V 和RT-Thread什么區別

    RISC-V 和RT-Thread什么區別?僅僅是軟件層面嗎?
    發表于 02-05 22:23

    請問PWM波輸出方式中的邊沿對齊與中心對齊什么區別

    請問PWM波輸出方式中的邊沿對齊與中心對齊什么區別?對于PMSM FOC應該使用那種對齊方式?為什么
    發表于 02-05 06:06

    KEIL uVision5包含TLx493庫后cmsis_gcc模塊中出現許多錯誤是為什么?

    我使用了 DAVE 中為 TLx493D 傳感器提供的庫,并設法與那里的 2 個傳感器創建了總線通信。 圖書館名稱:\"英飛凌
    發表于 01-19 06:59

    Nano100B Series BSP_CMSIS_V3.02.000包里的I2C_Loopback示例時失敗了怎么解決?

    我測試Nano100B Series BSP_CMSIS_V3.02.000包里的I2C_Loopback示例時失敗,說是總線仲裁失敗,請問怎么解決
    發表于 01-16 06:26

    Mini51DE_Series_BSP_CMSIS_v3.02.000為何在IAR中編譯報錯?

    never-completed type Mini51DE_Series_BSP_CMSIS_v3.02.000LibraryStdDriversrcretarget.c 43 Error[Pe235]: variable
    發表于 01-15 08:22

    什么是SEPIC穩壓器,他和升壓穩壓器什么區別

    和升壓穩壓器什么區別? 3.我想給擊穿電壓在120V-200V的雪崩二極管施加反向電壓,想采用LTC3862-1提供反向偏壓,是否可以
    發表于 01-05 06:57
    主站蜘蛛池模板: 狠狠色狠狠色综合日日2019| 亚欧乱亚欧乱色视频| 国产亚洲精品久久久久久禁果TV| 真人美女精美小穴| 我就去色色| 欧美18videosex| 久久国语精品| 国产老头与老太hd| 伧理片午夜伧理片| 中国成人在线视频| 亚洲精品第一综合99久久| 热热久久超碰精品中文字幕| 久久精品亚洲AV中文2区金莲| 国产精品2020观看久久| bbbbbxxxxx肥胖| 2020国产欧洲精品视频| 亚洲专区区免费| 小SAO货水真多把你CAO烂| 日日干夜夜艹| 漂亮的av女演员| 暖暖 视频 免费 高清 在线观看| 久久久国产精品免费A片3D| 国产午夜小视频| 国产免费啪嗒啪嗒视频看看| 哒哒哒高清视频在线观看| JAPANBABES11学生老师| 992交通广播| 97SE亚洲国产综合自在线不卡| 一本道综合久久免费| 亚洲乱码爆乳精品成人毛片| 午夜婷婷精品午夜无码A片影院| 色宅男午夜电影网站| 日韩精品一区二区三区AV在线观看| 妻子的妹妹在线| 日本zljzljzlj精品| 日本视频一区二区免费观看| 青青伊人久久| 日本三级床震| 偷偷鲁青春草原视频| 亚洲 欧洲 国产 日产 综合| 校园刺激全黄H全肉细节文|