91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

CW32L010安全運(yùn)行庫(kù)保護(hù)的實(shí)現(xiàn)

CW32生態(tài)社區(qū) ? 來(lái)源:CW32生態(tài)社區(qū) ? 作者:CW32生態(tài)社區(qū) ? 2025-05-12 14:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

CW32L010的FLASH存儲(chǔ)器支持安全運(yùn)行庫(kù)功能,方案商可將核心算法存儲(chǔ)于安全運(yùn)行庫(kù)區(qū)域以供客戶二次開(kāi)發(fā)時(shí)調(diào)用。使能安全運(yùn)行庫(kù)保護(hù)功能后,用戶代碼可正常調(diào)用運(yùn)行安全運(yùn)行庫(kù)區(qū)域內(nèi)的函數(shù),但無(wú)法通過(guò)任何方式(CPU、SWD、ISP)讀出安全運(yùn)行庫(kù)區(qū)域的內(nèi)容,只有提供正確的密碼時(shí)才能通過(guò)ISP協(xié)議禁止安全運(yùn)行庫(kù)保護(hù)功能,同 時(shí)清空安全運(yùn)行庫(kù)存儲(chǔ)空間的數(shù)據(jù)。

一、工作原理

通過(guò)將要保護(hù)的算法指定存放到FLASH對(duì)應(yīng)的頁(yè)面page(0

二、設(shè)置安全運(yùn)行庫(kù)的具體步驟

2.1.將算法函數(shù)指定到目標(biāo)頁(yè)面

只需要使用__attribute__((section(".ARM.__at_address")))就可以將變量、數(shù)組、函數(shù)指定到FLASH的任意地址。

wKgZPGggaqeAacjeAAAs0mtrR3o682.jpg

常見(jiàn)的函數(shù)類型指定地址方法如下:

@font-face{
font-family:"Times New Roman";
}
@font-face{
font-family:"宋體";
}
@font-face{
font-family:"Calibri";
}
p.MsoNormal{
mso-style-name:正文;
mso-style-parent:"";
margin:0pt;
margin-bottom:.0001pt;
mso-pagination:none;
text-align:justify;
text-justify:inter-ideograph;
font-family:Calibri;
mso-fareast-font-family:宋體;
mso-bidi-font-family:'Times New Roman';
font-size:10.5000pt;
mso-font-kerning:1.0000pt;
}
p.MsoFooter{
mso-style-name:頁(yè)腳;
mso-style-noshow:yes;
margin:0pt;
margin-bottom:.0001pt;
tab-stops:center blank 207.6500pt right blank 415.3000pt ;
layout-grid-mode:char;
mso-pagination:none;
text-align:left;
font-family:Calibri;
mso-fareast-font-family:宋體;
mso-bidi-font-family:'Times New Roman';
font-size:9.0000pt;
mso-font-kerning:1.0000pt;
}
span.msoIns{
mso-style-type:export-only;
mso-style-name:"";
text-decoration:underline;
text-underline:single;
color:blue;
}
span.msoDel{
mso-style-type:export-only;
mso-style-name:"";
text-decoration:line-through;
color:red;
}
@page{mso-page-border-surround-header:no;
	mso-page-border-surround-footer:no;}@page Section0{
}
div.Section0{page:Section0;}
void func1 (void); 
void func1 (void) __attribute__((section(".ARM.__at_0x0000FE00")));
//指定func函數(shù)的地址為0x0000FE00,所在頁(yè)面為127頁(yè)
 
void func2 (uint8_t CNT);void func2 (uint8_t) __attribute__((section(".ARM.__at_0x0000FE50")));//指定func函數(shù)的地址為0x0000FE50,所在頁(yè)面為127頁(yè)
 
uint8_t func3 (uint8_t CNT1,uint8_t* p);
uint8_t func3 (uint8_t, uint8_t*) __attribute__(( section(".ARM.__at_0x0000FEA4" )));
//指定func函數(shù)的地址為0x0000FEA4,所在頁(yè)面為127頁(yè)

多個(gè)函數(shù)指定地址儲(chǔ)存時(shí),在指定地址前,需先在KEIL的map文件中找到各個(gè)函數(shù)的大小,免得指定地址時(shí)內(nèi)存沖突。map文件如下:

wKgZO2ggaqiAQoN4AALl8rjUp84557.jpg

由此可以得到func1、func2、func3的字節(jié)大小分別是0x50、0x54、0x58,接下來(lái)就可以指定函數(shù)的存儲(chǔ)地址了。

注意指定地址時(shí),因?yàn)?2位變量需要4字節(jié)對(duì)齊,也就是地址的最低位得是0、4、8、C才行,所以地址不能出現(xiàn),如:0x0000FE01、0x0000FE02、0x0000FE03、0x0000FE05、0x0000FE06、0x0000FE07、0x0000FE09、0x0000FE0A、0x0000FE0B、0x0000FE0D、0x0000FE0E、0x0000FE0F

接著就可以指定func1的地址為0x0000FE00,func2的地址為0x0000FE00+0x50,func3的地址為0x0000FE00+0x50+0x54,如想指定其它地址,依次類推。

2.2.開(kāi)啟相應(yīng)頁(yè)面的安全運(yùn)行庫(kù)

使能安全運(yùn)行庫(kù)保護(hù)功能的方法為:在地址0xFFF0~ 0xFFFF 寫(xiě)入特定控制字,如下表所示:

wKgZPGggaqmAP5yGAAECAGD6p0o349.jpgwKgZO2ggaqmAJC5nAABz1keOiRc549.jpg

2.3.參考代碼

文章及視頻中使用到的例程源碼文件:

通過(guò)網(wǎng)盤(pán)分享的文件:CW32L010 FLASH PROTECT.zip

鏈接: https://pan.baidu.com/s/1d5tj_zz-b1bQGkJkuAgbdQ?pwd=CW32

提取碼: CW32

@font-face{
font-family:"Times New Roman";
}
@font-face{
font-family:"宋體";
}
@font-face{
font-family:"Calibri";
}
p.MsoNormal{
mso-style-name:正文;
mso-style-parent:"";
margin:0pt;
margin-bottom:.0001pt;
mso-pagination:none;
text-align:justify;
text-justify:inter-ideograph;
font-family:Calibri;
mso-fareast-font-family:宋體;
mso-bidi-font-family:'Times New Roman';
font-size:10.5000pt;
mso-font-kerning:1.0000pt;
}
p.MsoFooter{
mso-style-name:頁(yè)腳;
mso-style-noshow:yes;
margin:0pt;
margin-bottom:.0001pt;
tab-stops:center blank 207.6500pt right blank 415.3000pt ;
layout-grid-mode:char;
mso-pagination:none;
text-align:left;
font-family:Calibri;
mso-fareast-font-family:宋體;
mso-bidi-font-family:'Times New Roman';
font-size:9.0000pt;
mso-font-kerning:1.0000pt;
}
span.msoIns{
mso-style-type:export-only;
mso-style-name:"";
text-decoration:underline;
text-underline:single;
color:blue;
}
span.msoDel{
mso-style-type:export-only;
mso-style-name:"";
text-decoration:line-through;
color:red;
}
@page{mso-page-border-surround-header:no;
	mso-page-border-surround-footer:no;}@page Section0{
}
div.Section0{page:Section0;}
void func1 (void) __attribute__((section(".ARM.__at_0x0000FE00")));//指定func函數(shù)的地址為0x0000FE00,所在頁(yè)面為127頁(yè)
void func2 (uint8_t ) __attribute__((section(".ARM.__at_0x0000FE50")));//指定func函數(shù)的地址為0x0000FE50,所在頁(yè)面為127頁(yè)
uint8_t func3 (uint8_t ,uint8_t* ) __attribute__((section(".ARM.__at_0x0000FEA4")));//指定func函數(shù)的地址為0x0000FEA4,所在頁(yè)面為127頁(yè)
 
void func1 (void) 
{
 //PB03---LED1 推挽輸出
    CW_GPIOB->DIR_f.PIN3 = 0;
    CW_GPIOB->ANALOG_f.PIN3 = 0;

 uint8_t cnt = 10;

    while(cnt--)
 {
  CW_GPIOB->TOG_f.PIN3 = 1;
  uint32_t thisCnt = 0X9FFFF;
  while( thisCnt-- )
  {
   ;
  }
 }
}
 
void func2 (uint8_t CNT) 
{
 //PB03---LED1 推挽輸出
    CW_GPIOB->DIR_f.PIN3 = 0;
    CW_GPIOB->ANALOG_f.PIN3 = 0;

 uint8_t cnt = CNT;

    while(cnt--)
 {
  CW_GPIOB->TOG_f.PIN3 = 1;
  uint32_t thisCnt = 0X9FFFF;
  while( thisCnt-- )
  {
   ;
  }
 }
}
 
uint8_t func3 (uint8_t CNT1,uint8_t* p) 
{
 //PB03---LED1 推挽輸出
    CW_GPIOB->DIR_f.PIN3 = 0;
    CW_GPIOB->ANALOG_f.PIN3 = 0;

 uint8_t cnt = CNT1 + *p;

    while(cnt--)
 {
  CW_GPIOB->TOG_f.PIN3 = 1;
  uint32_t thisCnt = 0X9FFFF;
  while( thisCnt-- )
  {
   ;
  }
 }
 return 0;
}
 
int32_t main(void)
{        
    uint8_t ret,temp;
    
    __SYSCTRL_FLASH_CLK_ENABLE();
    __SYSCTRL_CRC_CLK_ENABLE();
 __SYSCTRL_GPIOB_CLK_ENABLE();

    ret = FLASH_SafetyLibraryEnable(SlibKey, 0x7F, 0x7F);
    
    if (ret)
    {
        // 開(kāi)啟安全區(qū)失敗
        while(1);
    }    

 func1();

 func2(10);

 temp = 5;
 ret = func3(5,&temp);
    
    //結(jié)束
    while(1)
    {
        
    }
}

2.4.函數(shù)調(diào)用

函數(shù)調(diào)用時(shí)需要在指定的地址上加1,因?yàn)閷?duì)于cortex M核的芯片,任何跳轉(zhuǎn)相關(guān)地址的最低位,即BIT0都應(yīng)是1。該位表示將用到的的指令集為T(mén)humb指令。具體調(diào)用方法如下:

@font-face{
font-family:"Times New Roman";
}
@font-face{
font-family:"宋體";
}
@font-face{
font-family:"Calibri";
}
p.MsoNormal{
mso-style-name:正文;
mso-style-parent:"";
margin:0pt;
margin-bottom:.0001pt;
mso-pagination:none;
text-align:justify;
text-justify:inter-ideograph;
font-family:Calibri;
mso-fareast-font-family:宋體;
mso-bidi-font-family:'Times New Roman';
font-size:10.5000pt;
mso-font-kerning:1.0000pt;
}
p.MsoFooter{
mso-style-name:頁(yè)腳;
mso-style-noshow:yes;
margin:0pt;
margin-bottom:.0001pt;
tab-stops:center blank 207.6500pt right blank 415.3000pt ;
layout-grid-mode:char;
mso-pagination:none;
text-align:left;
font-family:Calibri;
mso-fareast-font-family:宋體;
mso-bidi-font-family:'Times New Roman';
font-size:9.0000pt;
mso-font-kerning:1.0000pt;
}
span.msoIns{
mso-style-type:export-only;
mso-style-name:"";
text-decoration:underline;
text-underline:single;
color:blue;
}
span.msoDel{
mso-style-type:export-only;
mso-style-name:"";
text-decoration:line-through;
color:red;
}
@page{mso-page-border-surround-header:no;
	mso-page-border-surround-footer:no;}@page Section0{
}
div.Section0{page:Section0;}
#define  Slib_Led_Blink1     ((void (*)())(0x0000FE00UL + 1))
#define  Slib_Led_Blink2     ((void (*)(uint8_t))(0x0000FE50UL + 1))
#define  Slib_Led_Blink3     ((uint8_t (*)(uint8_t,uint8_t*))(0x0000FEA4UL + 1))
 
int32_t main(void)
{
    SYSCTRL_HSI_Enable(SYSCTRL_HSIOSC_DIV12);
 __SYSCTRL_GPIOB_CLK_ENABLE();

 Slib_Led_Blink1();//方法一:宏調(diào)用
 ((void (*)())(0x0000FE00UL + 1))();//方法二:直接調(diào)用
 void (*ppp1) ();//方法三;函數(shù)指針調(diào)用
 ppp1 = (void (*) ())(0xFE00 + 1);
 ppp1();

 Slib_Led_Blink2(10);//方法一:宏調(diào)用
 ((void (*)(uint8_t))(0x0000FE50UL + 1))(10);//方法二:直接調(diào)用
 void (*ppp2)(uint8_t);//方法三;函數(shù)指針調(diào)用
 ppp2 = ((void (*)(uint8_t))(0x0000FE50UL + 1));
 ppp2(10);

 uint8_t xx = 5;
 uint8_t temp = Slib_Led_Blink3(5,&xx);//方法一:宏調(diào)用
 ((uint8_t (*)(uint8_t,uint8_t*))(0x0000FEA4UL + 1))(5,&xx);//方法二:直接調(diào)用
 uint8_t (*ppp3)(uint8_t,uint8_t*);//方法三;函數(shù)指針調(diào)用
 ppp3 = (uint8_t (*)(uint8_t,uint8_t*))(0x0000FEA4+1);
 ppp3(5,&xx);

    while (1)
    {

    }
}

2.5.擦除安全運(yùn)行庫(kù)

禁止安全運(yùn)行庫(kù)保護(hù)功能共有兩種方法:

(1).通過(guò)ISP協(xié)議執(zhí)行片擦操作:芯片接收到片擦指令及正確的安全運(yùn)行庫(kù)密碼時(shí),將自動(dòng)擦除本芯片的所有數(shù)據(jù)并禁止安全運(yùn)行庫(kù)保護(hù)功能;。

需要用到上位機(jī)CW-Programmmer,具體連線請(qǐng)按上位機(jī)提示進(jìn)行連接,上位機(jī)配置需按下圖配置:

wKgZPGggaqqAaPjYAAB01jsbjCA934.jpg

填寫(xiě)SDK區(qū)域密碼時(shí),需按16進(jìn)制來(lái)填寫(xiě)密碼,如:十進(jìn)制1,0xF,'_','!','@','*','A','1',填寫(xiě)時(shí)為它們對(duì)應(yīng)ascii值的16進(jìn)制,分別是0x01、0x0F、0x5F、0x21、0x40、0x2A、0x41、0x31,所以密碼應(yīng)該填寫(xiě)010F5F21402A4131。

填寫(xiě)完密碼后,點(diǎn)擊在線編程,即可擦除安全運(yùn)行庫(kù)。

(2).在RAM中對(duì)芯片執(zhí)行片擦操作:配置編譯器參數(shù),使片擦操作從RAM中執(zhí)行。片擦操作完成后,本芯片的所有數(shù)據(jù)均被擦除并禁止安全運(yùn)行庫(kù)保護(hù)功能。

2.6.注意事項(xiàng)

(1).指定算法函數(shù)的地址不要太靠前,否則會(huì)與下載的代碼起沖突,建議選擇FLASH靠后的頁(yè)面。

(2).儲(chǔ)存在安全運(yùn)行庫(kù)頁(yè)面里的函數(shù),不可調(diào)用安全區(qū)外的函數(shù)。

(3).安全運(yùn)行庫(kù)代碼下載到MCU后,要進(jìn)行上電復(fù)位才能生效。

三、現(xiàn)象演示

將安全運(yùn)行庫(kù)的代碼下載到CW32L010F8P6 StartKit REV01板子中后,斷電后重新上電,DEBUG頁(yè)面的memory中,127頁(yè)顯示不可讀,全0,表示127頁(yè)已經(jīng)受到保護(hù)了。

wKgZO2ggaquARyW3AAFMKuxTQ_k875.jpg

用戶可以在其它工程中調(diào)用儲(chǔ)存在安全運(yùn)行庫(kù)頁(yè)面的函數(shù),具體調(diào)用方法詳情見(jiàn)2.4函數(shù)調(diào)用章節(jié)。

四、視頻講解

CW32L010黑客區(qū)安全運(yùn)行庫(kù)保護(hù)的實(shí)現(xiàn) :1.FLASH及安全庫(kù)區(qū)域原理_嗶哩嗶哩_bilibili

CW32L010黑客區(qū)安全運(yùn)行庫(kù)保護(hù)的實(shí)現(xiàn) :2.算法編程調(diào)用及注意事項(xiàng)_嗶哩嗶哩_bilibili

CW32L010黑客區(qū)安全運(yùn)行庫(kù)保護(hù)的實(shí)現(xiàn) :3. 實(shí)例代碼運(yùn)行講解及FLASH讀取驗(yàn)證_嗶哩嗶哩_bilibili

審核編輯 黃宇

聲明:本文內(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)投訴
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1399

    瀏覽量

    120604
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4784

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    CW32L010的2種啟動(dòng)模式介紹

    CW32L010 支持以下 2 種啟動(dòng)模式: ●從主 FLASH 存儲(chǔ)器啟動(dòng),運(yùn)行用戶程序。 ●從啟動(dòng)程序存儲(chǔ)器啟動(dòng),運(yùn)行內(nèi)部 BootLoader。 當(dāng)運(yùn)行 Bootloader
    發(fā)表于 11-28 08:09

    CW32L010的串口輸出

    CW32L010是一款集成了豐富功能的低功耗微控制器,其串口輸出功能是通過(guò)其內(nèi)部的通用異步收發(fā)器(UART)實(shí)現(xiàn)的。 一、串口硬件資源 CW32L010提供了二路低功耗UART,這些UART接口支持
    發(fā)表于 11-27 07:27

    CW32L010新品安全低功耗MCU性能如何?有哪些優(yōu)勢(shì)?

    CW32L010新品安全低功耗MCU性能如何?有哪些優(yōu)勢(shì)?
    發(fā)表于 11-24 07:31

    CW32L010的內(nèi)部框圖

    CW32L010系列產(chǎn)品是基于 eFlash 的單芯片低功耗微控制器,集成了主頻高達(dá) 48MHz 的 ARM? Cortex?-M0+ 內(nèi)核、高速嵌入式存儲(chǔ)器(多至 64K 字節(jié) FLASH 和多至 4K 字節(jié) SRAM)以及一系列全面的增強(qiáng)型外設(shè)和 I/O 口。
    發(fā)表于 11-21 06:40

    CW32L010使能讀保護(hù)后標(biāo)志位不正確怎么解決?

    CW32L010使能讀保護(hù)后標(biāo)志位不正確
    發(fā)表于 11-20 07:44

    CW32L010用jlink能去除讀保護(hù)嗎?

    如題,板上的CW32L010有讀保護(hù),JLINK能識(shí)別到內(nèi)核,但無(wú)法擦除下載程序。 要怎么才能去除讀保護(hù)
    發(fā)表于 11-20 06:23

    CW32L010高速風(fēng)筒方案的特點(diǎn)

    1、高性能處理能力:主控采用CW32L010F8P6,基于ARM Cortex-M0+ 32位高速處理器內(nèi)核,能夠?qū)崟r(shí)處理復(fù)雜的控制算法,確保風(fēng)筒在不同風(fēng)速和溫度設(shè)置下的穩(wěn)定運(yùn)行。 2、低功耗
    發(fā)表于 11-13 06:21

    請(qǐng)問(wèn)CW32L010 能否使用SysTick中斷?

    CW32L010 能否使用SysTick中斷?
    發(fā)表于 11-12 07:25

    CW32L010系列的特點(diǎn)

    ,用戶能依據(jù)采樣時(shí)機(jī)的不同,靈活調(diào)整PWM波形的邊沿位置。 RTC補(bǔ)償精度高達(dá)060ppm,實(shí)現(xiàn)亞秒級(jí)讀數(shù) CW32L010在RTC補(bǔ)償機(jī)制上進(jìn)行了精心優(yōu)化,提供三種可選的補(bǔ)償周期:32秒、128秒
    發(fā)表于 11-12 06:51

    CW32L010安全運(yùn)行庫(kù)保護(hù)是什么功能?

    它是針對(duì)用戶指定的MCU內(nèi)部FLASH數(shù)據(jù),提供的一種讀保護(hù)功能;該功能生效后,就可以禁止對(duì)安全運(yùn)行庫(kù)進(jìn)行任何形式的讀取操作(比如CPU、 SWD、 ISP 均無(wú)法正確讀取該區(qū)數(shù)據(jù)), 但不影響調(diào)用
    發(fā)表于 11-12 06:19

    基于CW32L010的高性能溫控器方案

    武漢芯源半導(dǎo)體的明星產(chǎn)品CW32L010系列MCU憑借其ARM Cortex-M0+內(nèi)核、超低功耗特性以及豐富的外設(shè)接口,為溫控器設(shè)計(jì)提供了理想的解決方案。 本文將介紹無(wú)錫梓軒電子基于武漢芯源半導(dǎo)體低功耗CW32L010單片機(jī)開(kāi)發(fā)的溫控器方案,功能全面,性價(jià)比突出。
    的頭像 發(fā)表于 07-02 09:47 ?1294次閱讀
    基于<b class='flag-5'>CW32L010</b>的高性能溫控器方案

    基于CW32L010的高性能溫控器方案

    CW32L010溫控器 方案可實(shí)現(xiàn): 溫控范圍:5-95℃; 溫度開(kāi)關(guān)偏差:0.5-10℃可調(diào); 設(shè)定溫度與時(shí)鐘輪流顯示,測(cè)量溫度直接讀取; 傳感器故障提示; 支持人工控制、時(shí)段控制和臨時(shí)控制三種
    發(fā)表于 07-02 09:46

    基于CW32L010單片機(jī)的掃振一體電動(dòng)牙刷應(yīng)用方案

    大幅擺動(dòng)實(shí)現(xiàn)了高效的刷牙方式,這種設(shè)計(jì)能夠更高效地清潔牙齒和牙齦溝,為用戶帶來(lái)全新的潔牙體驗(yàn)?。本文將介紹武漢芯源半導(dǎo)體CW32L010單片機(jī)在掃振一體電動(dòng)牙刷上的應(yīng)用方案。 圖1:電動(dòng)牙刷方案
    發(fā)表于 06-17 09:38

    武漢芯源半導(dǎo)體CW32L010在兩輪車(chē)儀表的應(yīng)用介紹

    CW32L010憑借其優(yōu)異的性能、豐富的外設(shè)資源和超低功耗特性,為兩輪車(chē)儀表盤(pán)應(yīng)用提供了高性價(jià)比的解決方案。其寬電壓工作范圍和工業(yè)級(jí)溫度特性,特別適合車(chē)輛電子應(yīng)用的嚴(yán)苛環(huán)境。對(duì)于想采用CW32L010進(jìn)行兩輪車(chē)儀表盤(pán)開(kāi)發(fā)的客戶,武漢芯源半導(dǎo)體可提供全面的技術(shù)支持,助力客戶
    的頭像 發(fā)表于 05-13 14:07 ?815次閱讀
    武漢芯源半導(dǎo)體<b class='flag-5'>CW32L010</b>在兩輪車(chē)儀表的應(yīng)用介紹

    武漢芯源半導(dǎo)體CW32L010在兩輪車(chē)儀表的應(yīng)用介紹

    隨著兩輪電動(dòng)車(chē)的智能化發(fā)展,儀表盤(pán)作為人機(jī)交互的重要界面,其功能需求日益復(fù)雜。武漢芯源半導(dǎo)體的安全低功耗單片機(jī)CW32L010憑借其優(yōu)異的性能和豐富的外設(shè)資源,成為兩輪車(chē)儀表盤(pán)應(yīng)用的理想選擇。 本文
    發(fā)表于 05-13 14:06