chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(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)注

    49

    文章

    8830

    瀏覽量

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

    關(guān)注

    68

    文章

    11320

    瀏覽量

    225832
  • CMSIS
    +關(guān)注

    關(guān)注

    0

    文章

    41

    瀏覽量

    13021

原文標(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)推薦
    熱點(diǎn)推薦

    基于 X-Cube-FreeRTOS_Heap4 和 CubeMX 生成 UCPD 項(xiàng)目介紹

    生成 STM32H563 的 USB-PD Sink 的應(yīng)用不是那么順暢,文章中介紹的是 CMSIS_V1,但現(xiàn)在最新的是 CMSIS_V2,客戶(hù)希望我們予以支持指導(dǎo)。2. 環(huán)境準(zhǔn)備硬件:僅 NUCLEO-H563ZI (MB
    發(fā)表于 04-15 15:59 ?0次下載

    Boost、Buck-Boost、Sepic拓?fù)?b class='flag-5'>有什么區(qū)別

    工程師們?cè)谧鲭娫丛O(shè)計(jì)時(shí)經(jīng)常會(huì)有升壓的需求,而常用的Boost、Buck-Boost、Sepic拓?fù)渚蓪?shí)現(xiàn)升壓。這些拓?fù)?b class='flag-5'>有什么區(qū)別,選哪個(gè)
    的頭像 發(fā)表于 04-11 14:14 ?929次閱讀
    Boost、Buck-Boost、Sepic拓?fù)?b class='flag-5'>有</b><b class='flag-5'>什么區(qū)別</b>

    如何使用 powerquad 加速器中的一些功能以及 CMSIS 原始實(shí)現(xiàn)中的一些功能?

    fsl_powerquad_cmsis.c 使用 PowerQuad 實(shí)現(xiàn)了許多 CMSIS 功能。許多是有用的,許多是無(wú)用的,因?yàn)?powerquad 的數(shù)據(jù)大小受到限制(例如
    發(fā)表于 04-03 06:37

    請(qǐng)教TJA1028DT和TJA1028T/5V0/20什么區(qū)別

    這兩款芯片什么區(qū)別,或者更確切地說(shuō),TJA1028DT比TJA1028T/5V0/20什么優(yōu)勢(shì)?
    發(fā)表于 03-18 07:27

    JLink、STLink、DAPLink、CMSIS DAP使用的區(qū)別

    元包郵。特別注意一下:驅(qū)動(dòng)包就在KEIL本身的文件夾里頭,你說(shuō)它多火。 缺點(diǎn):不夠穩(wěn)定! 可能不時(shí)的來(lái)個(gè)彈窗。原因嘛:13元包郵,鬼知道拼出來(lái)的 ! CMSIS-DAP軟硬件開(kāi)源!這兩三年,含量在
    發(fā)表于 01-22 07:51

    行星減速機(jī)與齒輪減速機(jī)什么區(qū)別?

    行星減速機(jī)與齒輪減速機(jī)什么區(qū)別
    的頭像 發(fā)表于 01-04 16:30 ?1776次閱讀
    行星減速機(jī)與齒輪減速機(jī)<b class='flag-5'>有</b><b class='flag-5'>什么區(qū)別</b>?

    基于 X-Cube-FreeRTOS_Heap4 和 CubeMX 生成 UCPD 項(xiàng)目介紹

    STM32H563 的 USB-PD Sink 的應(yīng)用不是那么順暢,文章中介紹的是 CMSIS_V1,但現(xiàn)在最新的是 CMSIS_V2,客戶(hù)希望我們予以支持指導(dǎo)。
    發(fā)表于 01-04 11:18 ?0次下載

    系統(tǒng)調(diào)用和API什么區(qū)別?

    首先,什么是API?以汽車(chē)發(fā)動(dòng)機(jī)為例: 檔把就是發(fā)動(dòng)機(jī)給你提供的api,當(dāng)你想讓汽車(chē)前進(jìn)時(shí)只需要將其掛到“D”檔位,然后輕踩油門(mén)就可以前進(jìn)了,當(dāng)你掛擋時(shí)你根本就不需要關(guān)心汽油是怎么進(jìn)到發(fā)動(dòng)機(jī)
    發(fā)表于 12-03 06:52

    請(qǐng)問(wèn)jtag和jlink什么區(qū)別?。?/a>

    jtag和jlink什么區(qū)別?。?/div>
    發(fā)表于 11-28 06:46

    詳解電容濾波與電感濾波的區(qū)別

    在電子電路中,常常會(huì)用到濾波電路,尤其是電源芯片,有的是電容濾波,有的是電感濾波,電容和電感濾波的作用看起來(lái)差不多,那么它們之間什么區(qū)別?在實(shí)際應(yīng)用中又如何選擇
    的頭像 發(fā)表于 10-23 14:10 ?6447次閱讀
    詳解電容濾波與電感濾波的<b class='flag-5'>區(qū)別</b>

    如何使用CMSIS DAP仿真器調(diào)試,通過(guò)NucleiStudio調(diào)試蜂鳥(niǎo)SOC

    ,以及openocd軟件生態(tài),符合蜂鳥(niǎo)SOC的調(diào)試需求 具體步驟 1. 只需要修改調(diào)試腳本就可以了 紅框框出來(lái)的這里 2. 我們分享我們更改的腳本 3. 然后就可以調(diào)試?yán)?/div>
    發(fā)表于 10-21 12:05

    CBB82電容和CBB81電容什么區(qū)別

    CBB81電容大家都不陌生,它屬于高壓諧振電容器,在很多高壓、高頻、大電流電路中,都能見(jiàn)到它的身影,還有一種電容器叫CBB82電容,兩者只有一字之差,什么區(qū)別?
    的頭像 發(fā)表于 09-15 14:53 ?1241次閱讀

    請(qǐng)問(wèn)是否可以將 Nu-Link2-Me V1.0 的固件升級(jí)到 V2.0?

    0416:2004 華邦電子股份有限公司 Nu-Link2 CMSIS-DAP Nu-Link2-Me V1.0:總線(xiàn) 001 設(shè)備 020:ID 0416:5200 華邦電子股份有
    發(fā)表于 08-18 08:09

    請(qǐng)問(wèn)CYW2019B2的SPI1與SPI2什么區(qū)別?

    請(qǐng)問(wèn): CYW2019B2的SPI1與SPI2什么區(qū)別?SPI接口工作于Slave方式,接收外設(shè)的數(shù)據(jù)。如果設(shè)為SPI
    發(fā)表于 07-08 07:51

    使用MiniProg4通過(guò)ModusToolBox軟件調(diào)試CYW920820M2EVB-01,遇到報(bào)錯(cuò)怎么解決?

    上的 telnet 連接 信息:使用 CMSIS-DAPv2 接口,VID:PID=0x04b4:0xf151, 序列號(hào)=0E1816E8021D2400 信息:CMSIS-DAP:支持 SWD
    發(fā)表于 07-01 08:24