娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

GD32開發實戰指南(基礎篇) 第17章 看門狗

發布者:beta13最新更新時間:2024-11-07 來源: elecfans關鍵字:GD32  開發實戰  看門狗 手機看文章 掃描二維碼
隨時隨地手機看文章

開發環境:

MDK:Keil 5.30

開發板:GD32F207I-EVAL

MCU:GD32F207IK

GD32 有兩個看門狗, 一個是獨立看門狗,另外一個是窗口看門狗 ,獨立看門狗號稱寵物狗,窗口看門狗號稱警犬,本章我們主要分析這兩只看門狗的功能框圖和它的應用。


1 獨立看門狗

1.1 獨立看門狗工作原理

獨立看門狗用通俗一點的話來解釋就是一個 12 位的遞減計數器, 當計數器的值從某個值一直減到 0 的時候,系統就會產生一個復位信號,即 IWDG_RESET 。如果在計數沒減到 0 之前,刷新了計數器的值的話,那么就不會產生復位信號,這個動作就是我們經常說的__喂狗__。 看門狗功能由 VDD 電壓域供電,在停止模式和待機模式下仍能工作 。

獨立看門狗由內部專門的 40Khz 低速時鐘驅動,即使主時鐘發生故障,它也仍然有效 。這里需要注意獨立看門狗的時鐘是一個內部 RC 時鐘,所以并不是準確的 40Khz,而是在 30~60Khz 之間的一個可變化的時鐘,只是我們在估算的時候,以 40Khz 的頻率來計算,看門狗對時間的要求不是很精確,所以,時鐘有些偏差,都是可以接受的。

1684419441252m4efbppgdj

獨立看門狗的架構是很簡單的,本質就是一個遞減計數器,和Systick有些類似,只是運行在低速時鐘下,另外還有寄存器訪問保護功能。

【注】看門狗功能處于VDD供電區,即在深度睡眠和待機模式時仍能正常工作。

FWDGT最適合應用于那些需要看門狗作為一個在主程序之外,能夠完全獨立工作,并且對時間精度要求較低的場合。WWDGT最適合那些要求看門狗在精確計時窗口起作用的應用程序。

16844194417055lupm5ut7r

【注】這些時間是按照40kHz時鐘給出。實際上,MCU內部的RC頻率會在30kHz到60kHz之間變化。此外,即使RC振蕩器的頻率是精確的,確切的時序仍然依賴于APB接口時鐘與RC振蕩器時鐘之間的相位差,因此總會有一個完整的RC周期是不確定的。通過對IRC40K進行校準可獲得相對精確的看門狗超時時間。


1.2 獨立看門狗的寄存器描述

首先是鍵值寄存器FWDGT_CTL,該寄存器的各位描述如下圖所示。

1684419441991d3q9ju3ore

在鍵值寄存器(FWDGT_CTL)中寫入 0xCCCC,開始啟用獨立看門狗;此時計數器開始從其復位值 0xFFF 遞減計數。當計數器計數到末尾 0x000 時,會產生一個復位信號(FWDGT_RESET)。無論何時,只要鍵寄存器FWDGT_CTL中被寫入 0xAAAA,FWDGT_RLD中的值就會被重新加載到計數器中從而避免產生看門狗復位 。

FWDGT_PSC和FWDGT_RLD寄存器具有寫保護功能。要修改這兩個寄存器的值,必須先向FWDGT_CTL寄存器中寫入 0x5555。將其他值寫入這個寄存器將會打亂操作順序,寄存器將重新被保護。重裝載操作(即寫入 0xAAAA)也會啟動寫保護功能。預分頻寄存器(FWDGT_PSC)用來設置看門狗時鐘的分頻系數。重裝載寄存器用來保存重裝載到計數器中的值,該寄存器也是一個 32位寄存器,但是只有低 12 位是有效的。

1684419442353148v2b0yj2

1684419442677gjs4287pj5

1.3 獨立看門狗的具體代碼實現

獨立看門狗一般用來檢測和解決由程序引起的故障 ,比如一個程序正常運行的時間是50ms,在運行完這段程序之后緊接著進行喂狗,我們設置獨立看門狗的定時溢出時間為60ms,比我們需要監控的程序 50ms 多一點,如果超過 60ms 還沒有喂狗,那就說明我們監控的程序出故障了,跑飛了,那么就會產生系統復位,讓程序重新運行。


獨立看門的啟動過程可以按如下步驟實現。


1)取消寄存器寫保護(向FWDGT_CTL寫入 0X5555)


通過這步,我們取消FWDGT_PSC和FWDGT_RLD的寫保護,使后面可以操作這兩個寄存器,設置FWDGT_PSC和FWDGT_RLD的值。 這在庫函數中的實現函數是:


IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);

這個函數非常簡單,顧名思義就是開啟/取消寫保護,也就是使能/失能寫權限。這里的IWDG_WriteAccess_Enable的值就是0x5555,而IWDG_WriteAccess_Disable就是0x0000。


2)設置獨立看門狗的預分頻系數和重裝載值


設置看門狗的分頻系數的函數是:


void IWDG_SetPrescaler(uint8_t IWDG_Prescaler); //設置 IWDG 預分頻值

設置看門狗的重裝載值的函數是:


void IWDG_SetReload(uint16_t Reload); //設置 IWDG 重裝載值

設置好看門狗的分頻系數 prer 和重裝載值就可以知道看門狗的喂狗時間(也就是看門狗溢出時間),該時間的計算方式為:


Tout=((4×2^prer) ×rlr) /40


其中 Tout 為看門狗溢出時間(單位為 ms); prer 為看門狗時鐘預分頻值(FWDGT_PSC值),范圍為 0~7;rlr為看門狗的重裝載值(FWDGT_RLD的值);


比如我們設定 prer 值為 4, rlr 值為 625,那么就可以得到 Tout=64×625/40=1000ms,這樣,看門狗的溢出時間就是 1s,只要你在一秒鐘之內,有一次寫入 0XAAAA 到FWDGT_CTL,就不會導致看門狗復位(當然寫入多次也是可以的)。這里需要提醒大家的是,看門狗的時鐘不是準確的 40Khz,所以在喂狗的時候,最好不要太晚了,否則,有可能發生看門狗復位。


3) 啟動看門狗(向FWDGT_CTL寫入 0XCCCC)


庫函數里面啟動獨立看門狗的函數是:


IWDG_Enable(); //使能 IWDG

通過這句,來啟動GD32 的看門狗。注意FWDGT在一旦啟用,就不能再被關閉!想要關閉,只能重啟,并且重啟之后不能打開FWDGT,否則問題依舊,所以在這里提醒大家,如果不用 FWDGT的話,就不要去打開它,免得麻煩。


4)重載計數值喂狗(向FWDGT_CTL寫入 0XAAAA)


庫函數里面重載計數值的函數是:


IWDG_ReloadCounter(); //按照 IWDG 重裝載寄存器的值重裝載 IWDG 計數器

通過這句,將使GD32重新加載FWDGT_RLD的值到看門狗計數器里面,即實現獨立看門狗的喂狗操作。


因此獨立看門狗的配置如下:


/**

  * @brief  看門狗初始化

  * @param  None

  * @retval None

  */

void fwdgt_configuration(void)

{

    //使能寄存器 寫功能

    fwdgt_write_enable();

    //設置預分頻 40K/64=0.625k 一個周期是 1.6ms

    //設置初值

    fwdgt_config(800, FWDGT_PSC_DIV64); //800*1.6ms=1.28S

    //喂狗

    fwdgt_counter_reload();

    //使能獨立看門狗

    fwdgt_enable();

}

主函數如下:


/*

    brief      main function

    param[in]  none

    param[out] none

    retval     none

*/

int main(void)

{

    /* systick init*/

    sysTick_init();


    //usart init 115200 8-N-1

    com_init(COM1, 115200, 0, 1);


    /*獨立看門狗初始化*/

    fwdgt_configuration();


    printf('Independent watchdog

');


    while(1)

    {

        //喂狗

        fwdgt_counter_reload();

        printf('

Feed the dog

');

        delay_ms(800);

    }

}

主函數很簡單,初始化獨立看門狗后,在主循環里不斷喂狗即可。


1.4 獨立看門狗實現現象

編譯無誤,打開串口,現象如下:

1684419443035mtliv35net

當注釋掉喂狗語句后,板子就會不斷重啟,因為沒有喂狗就導致板子不斷復位。

1684419443446py4l3eig4j

2 窗口看門狗

2.1 窗口看門狗工作原理

窗口看門狗通常被用來監測,由外部干擾或不可預見的邏輯條件造成的應用程序背離正常的運行序列而產生的軟件故障 。窗口看門狗跟獨立看門狗一樣,也是一個遞減計數器不斷的往下遞減計數,當減到一個__固定值 0X40 時還不喂狗的話,產生復位,這個值叫窗口的下限, 是固定的值,不能改變。這個是跟獨立看門狗類似的地方,不同的地方是窗口看門狗的計數器的值在減到某一個數之前喂狗的話也會產生復位,這個值叫窗口的上限,上限值由用戶獨立設置。因此__窗口看門狗計數器的值必須在上窗口和下窗口之間才可以喂狗 ,除非遞減計數器的值在T6位變成0前被刷新,看門狗電路在達到預置的時間周期時,會產生一個MCU復位。在遞減計數器達到窗口寄存器數值之前,如果7位的遞減計數器數值(在控制寄存器中)被刷新,那么也將產生一個MCU復位。這表明遞減計數器需要在一個有限的時間窗口中被刷新。

1684419443918kkzkq6nwpw

窗口看門狗時鐘來自 PCLK1, PCLK1 最大是60M,由 RCC 時鐘控制器開啟。計數器時鐘由 CK 計時器時鐘經過預分頻器分頻得到,分頻系數由配置寄存器 CFG的位 8:7 PSC[1:0]配置,可以是[0,1,2,3],其中 CK 計時器時鐘=PCLK1/4096,除以 4096是手冊規定的,沒有為什么。所以計數器的時鐘 CNT_CK=PCLK1/4096/(2^ PSC),這就可以算出計數器減一個數的時間 T= 1/CNT_CK = Tpclk1 * 4096 * (2^ PSC)

窗口看門狗的計數器是一個遞減計數器,共有 7 位,其值存在控制寄存器 CTL的位 6:0,即 CNT[6:0],當 7 個位全部為 1 時是 0X7F,這個是最大值,當遞減到 CNT6 位變成 0 時,即從0X40 變為 0X3F 時候,會產生看門狗復位。這個值 0X40 是看門狗能夠遞減到的最小值,所以計數器的值只能是: 0X40~0X7F 之間 ,實際上真正用來計數的是 CNT[5:0]。當遞減計數器遞減到 0X40 的時候,還不會馬上產生復位,如果使能了提前喚醒中斷:WWDGT_CFG寄存器的EWIE位置 1,則產生提前喚醒中斷,如果真進入了這個中斷的話,就說明程序肯定是出問題了,進入中斷后就是作重要的一些保護操作,如保存數據等。

我們知道窗口看門狗必須在計數器的值在一個范圍內才可以喂狗,其中下窗口的值是固定的 0X40,上窗口的值可以改變,具體的由配置寄存器 CFG的位 6:0 WIN[6:0]設置。其值必須大于 0X40,如果小于或者等于 0X40 就是失去了窗口的價值,而且也不能大于計數器的值,所以必須得小于 0X7F。因此我們設置的窗口上限值在0X40-0X7F之間。

16844194442000c9liyxhbd

上窗口時間:T_min = 4096 * (2^ PSC)*(T - W + 1)/60 (us)

下窗口時間:T_max = 4096 * (2^ PSC)*(T - 0x40 + 1)/60 (us)

2.2 窗口看門狗的寄存器描述

首先介紹控制寄存器(WWDGT_CTL),該寄存器的各位描述如圖所示。

1684419444517or1nkmr6vo

可以看出,這里我們的WWDGT_CTL只有低八位有效,CNT[6:0]用來存儲看門狗的計數器值,隨時更新的,每個窗口看門狗計數周期(4096×2^ PSC)減 1。當該計數器的值從 0X40 變為 0X3F 的時候,將產生看門狗復位。WDGTEN位則是看門狗的激活位,該位由軟件置 1,以啟動看門狗,并且一定要注意的是該位一旦設置,就只能在硬件復位后才能清零了。

窗口看門狗的第二個寄存器是配置寄存器(WWDGT_CFG),該寄存器的各位及其描述如圖所示。

16844194448215hygiqubm7

該寄存器中的 EWIE是提前喚醒中斷,也就是在快要產生復位的前一段時間(CNT[6:0]=0X40) 來提醒我們,需要進行喂狗了,否則將復位!因此,我們一般用該位來設置中斷,當窗口看門狗的計數器值減到 0X40 的時候,如果該位設置,并開啟了中斷,則會產生中斷,我們可以在中斷里面向WWDGT_CTL重新寫入計數器的值,來達到喂狗的目的。注意這里在進入中斷后, 必須在不大于 1 個窗口看門狗計數周期的時間(在 PCLK1 頻率為 60M 且PSC為 0 的條件下,該時間為68.2us)內重新寫WWDGT_CTL,否則,看門狗將產生復位!

最后我們要介紹的是狀態寄存器(WWDGT_STAT,該寄存器用來記錄當前是否有提前喚醒的標志。該寄存器僅有位 0 有效,其他都是保留位。當計數器值達到 40h 時,此位由硬件置 1。它必須通過軟件寫 0 來清除。對此位寫 1 無效。 即使中斷未被使能, 在計數器的值達到0X40的時候,此位也會被置1。

16844194451087ggtkpcsby

2.3 窗口看門狗具體代碼實現

啟用GD32 的窗口看門狗如下步驟。


1)使能 WWDGT時鐘


WWDGT不同于 FWDGT, FWDGT有自己獨立的 40Khz 時鐘,不存在使能問題。而 WWDGT使用的是 PCLK1 的時鐘,需要先使能時鐘。 方法是:


rcu_periph_clock_enable(RCU_WWDGT); // WWDGT時鐘使能

2)設置初始值、窗口值和分頻數


設置窗口值的函數是:


void wwdgt_config(uint16_t counter, uint16_t window, uint32_t prescaler)

3)開啟 WWDGT中斷并分組


開啟WWDGT中斷的函數為:


nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2);

nvic_irq_enable(WWDGT_IRQn, 2U, 0U);

wwdgt_interrupt_enable (); //開啟窗口看門狗中斷

4)使能看門狗


這一步在庫函數里面是通過一個函數實現的:


void wwdgt_enable(void);

該函數使能窗口看門狗。


5)編寫中斷服務函數


在最后,還是要編寫窗口看門狗的中斷服務函數,通過該函數來喂狗,喂狗要快,否則當窗口看門狗計數器值減到 0X3F 的時候,就會引起軟復位了。在中斷服務函數里面也要將狀態寄存器的 EWIF 位清空。


/**

  * @brief  This function handles WWDG Handler.

  * @param  None

  * @retval None

  */

void WWDGT_IRQHandler (void)

{

   wwdgt_counter_update(0x7F);

   wwdgt_flag_clear();

   printf('WWDG');

}

【小貼士】當然啦,最好不要在中斷服務程序中喂狗,標準的寫法是在中斷服務程序中做重要的操作,也就是復位前的操作,喂狗在主函數中進行。


窗口配置如下:


/**

  * @brief  看門狗初始化

  * @param  None

  * @retval None

  */

void wwdog_configuration(void)

{

    //窗口看門狗時鐘

    rcu_periph_clock_enable(RCU_WWDGT);


    //設置WWDG預分頻數值,則WWDG時鐘頻率=(PCK1(60M)/4096)/8

    //窗口上邊界數值

    wwdgt_config(0x7F, 0x5F, WWDGT_CFG_PSC_DIV8);


    //使能窗口看門狗

    wwdgt_enable();


    //清除提前喚醒中斷標志

    wwdgt_flag_clear();


    //開啟窗口看門狗中斷

    wwdgt_interrupt_enable();


    nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2);

    nvic_irq_enable(WWDGT_IRQn, 2U, 0U);

}

主函數如下:


/*

    brief      main function

    param[in]  none

    param[out] none

    retval     none

*/

int main(void)

{

    /* systick init*/

    sysTick_init();


    //usart init 115200 8-N-1

    com_init(COM1, 115200, 0, 1);


    /*窗口看門狗初始化*/

    wwdog_configuration();


    printf('Window watchdog');


    while(1)

    {

        printf('https://www.bruceou.cn/');

        delay_ms(800);

    }

}


4 窗口看門狗實現現象

編譯無誤,打開串口,現象如下:

11111.png


關鍵字:GD32  開發實戰  看門狗 引用地址:GD32開發實戰指南(基礎篇) 第17章 看門狗

上一篇:GD32開發實戰指南(基礎篇) 第8章 定時器
下一篇:GD32開發實戰指南(基礎篇) 第13章 DAC

推薦閱讀最新更新時間:2025-04-08 20:29

4412開發板圖像識別實戰項目-移植jsoncpp庫(四)
圖像識別: 通過百度AI的快速入門手冊,我們可以知道,如果要調用百度AI的接口,我們需要移植依賴庫libcurl,openssl和jsincpp庫。 環境:迅為提供的ubuntu16.04 編譯器:arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2 平臺:迅為4412開發板 一.jsoncpp庫簡介 JSON全稱為JavaScript ObjectNotation,它是一種輕量級的數據交換格式,易于閱讀、編寫、解析。jsoncpp是c++解析JSON串常用的解析庫之一。 二.移植 1,解壓壓縮包進進入解壓后的目錄 tar -vxf jsoncp
[單片機]
4412<font color='red'>開發</font>板圖像識別<font color='red'>實戰</font>項目-移植jsoncpp庫(四)
如何調試GD32虛擬串口的兩個BUG?
最近魚鷹在搞調試器,折騰了好多天終于理解了 MDK 、下載算法、調試器、MCU 之間的關系。 簡單來說,就是,調試器作為 USB 轉 SWD 協議的轉換工具,MDK 通過 USB 驅動這個工具,下載算法包含了一些 MCU 內部 FLASH 擦除、編程代碼,和普通代碼不同的是,該代碼可以下載在任意位置運行。如果需要校驗,還會加入 CRC 校驗代碼,扇區檢測代碼。 MDK 首先通過調試器將算法寫入內部 RAM,然后把需要寫入的固件程序寫入 RAM,再由 MDK 控制(通過調試器) MCU 執行相應代碼(擦除或寫入扇區),通過 MCU 的寄存器和設定軟件斷點得到執行結果,如此來回搬運,就可完成固件下載。 說起來簡單,做起來很麻煩
[單片機]
如何調試<font color='red'>GD32</font>虛擬串口的兩個BUG?
什么是GD32 MCU讀保護?
如今電子產品市場風云變幻,暗流洶涌,有沒有小伙伴遇到自己費了大力氣寫出來的代碼,很容易就被別人“借鑒”了,真的是讓聞者傷心,聽著落淚啊。 那有沒有什么方法可以防止別人將你的代碼從MCU讀出來呢?答案當然是肯定的,GD32 MCU全系列都有“讀保護”功能,我們以GD32F30x系列為例,來看下用戶手冊中的選項字節的介紹: 我們可以看到,地址0x1fff f800存儲的是安全保護值,也就是我們所說的讀保護。當該值為0xA5的時候,MCU處于無保護狀態,此時可以通過Jlink、GDlink配合一些上位機比如Jflash、GDlink Programmer就可以讀出,當然,通過串口ISP也可以讀出代碼;當讀保護值為非0xA5時,
[單片機]
什么是<font color='red'>GD32</font> MCU讀保護?
GD32 MCU 入門教程】二、GD32 MCU 燒錄說明(1)ISP 燒錄
GD32 MCU提供了多種燒錄方法,可在調試和生產等階段進行便捷的燒錄。GD32目前主要燒錄方法有ISP燒錄、SWD/JTAG在線下載、脫機燒錄三種類型。 ISP燒錄:使用串口或USB即可燒錄,無需特殊工具支持。可根據協議自行定制下載方式,需要控制BOOT0引腳電平選擇啟動模式。 SWD/JTAG在線下載:無需切換MCU啟動方式,使用仿真器等可進行下載。需使用仿真器和上位機進行操作。 脫機燒錄:適用于大批量的產線生產,燒錄過程無需PC和軟件,可脫機進行燒錄,批量燒錄效率高。 本章對三種燒錄方法有以下三個方面介紹。 1 燒錄工具和硬件連接:介紹各燒錄方法需使用的工具,以及硬件所需接口。 2 軟件操作和燒錄流程:介紹燒錄軟件的
[單片機]
【<font color='red'>GD32</font> MCU 入門教程】二、<font color='red'>GD32</font> MCU 燒錄說明(1)ISP 燒錄
單片機stm32看門狗超詳細總結看了很有用
  一、獨立看門狗   STM32 的獨立看門狗由內部專門的 40Khz 低速時鐘驅動,即使主時鐘發生故障,它也仍然有效。   看門狗的原理:單片機系統在外界的干擾下會出現程序跑飛的現象導致出現死循環,看門狗電路就是為了避免這種情況的發生。看門狗的作用就是在一定時間內(通過定時計數器實現)沒有接收喂狗信號(表示   MCU 已經掛了),便實現處理器的自動復位重啟(發送復位信號) 。   在鍵值寄存器(IWDG_KR)中寫入 0xCCCC,開始啟用獨立看門狗;此時計數器開始從其復位值 0xFFF 遞減計數。當計數器計數到末尾 0x000   時,會產生一個復位信號(IWDG_RESET)。無論何時,只要鍵寄存器 IWDG_KR 中被
[單片機]
獨立看門狗(IWDG)的基礎知識
獨立看門狗(IWDG)概述 STM32F10xxx系列內置兩個看門狗(獨立看門狗和窗口看門狗),提供了更高的安全性、時間的精確性和使用的靈活性。兩個看門狗設備(獨立看門狗和窗口看門狗)可用來檢測和解決由軟件錯誤引起的故障;當計數器達到給定的超時值時,觸發一個中斷(僅適用于窗口型看門狗)或產生系統復位。 獨立看門狗(IWDG)由專用的低速內部時鐘(LSI)驅動,即使主時鐘發生故障它也仍然有效。 窗口看門狗由從APB1時鐘分頻后得到的時鐘驅動,通過可配置的時間窗口來檢測應用程序非正常的過遲或過早的操作。 IWDG最適合應用于那些需要看門狗作為一個在主程序之外,能夠完全獨立工作,并且對時間精度要求較低的場合。 WWDG適合要求看門狗
[單片機]
獨立<font color='red'>看門狗</font>(IWDG)的基礎知識
s3c6410在linux下的WATCHDOG TIMER(看門狗定時器)驅動(3)
前面兩篇一篇分析了看門狗定時器的驅動架構,另一篇分析了平臺設備對應的probe函數,雖然對應的remove函數沒分析,其實和別的平臺設備驅動一樣,做和probe函數相反的工作。這一篇要說點啥呢? S3c2410_wdt.c (linux2.6.28driverswatchdog)在這個文件中還有很多函數,我們都沒有分析過,這一篇就找些重要的函數分析下。 1、那就先從s3c2410wdt_start函數開始,此函數開啟看門狗,源碼如下: static void s3c2410wdt_start(void) { unsigned long wtcon; spin_lock(&wdt_lock); __s3c2410
[單片機]
s3c6410在linux下的WATCHDOG TIMER(<font color='red'>看門狗</font>定時器)驅動(3)
Exynos4412裸機開發 —— 看門狗定時器
一、看門狗定時器概述 看門狗(WatchDog Timer) 定時器和PWM的定時功能目的不一樣。它的特點是,需要不同的接收信號(一些外置看門狗芯片)或重新設置計數器,保持計數值不為0。一旦一些時間接收不到信號,或計數值為0,看門狗將發出復位信號復位系統或產生中斷。 看門狗的作用是微處理器收到干擾進入錯誤狀態后,使系統在一定時間間隔內復位。因此看門狗是保證系統長期、可靠和穩定運行的有效措施。目前大部分的嵌入式芯片內部都集成了看門狗定時器來提高系統運行的可靠性。 4412處理器的看門狗是當系統被故障干擾時,用于處理器的復位操作,也可以作為一個通用的16位定時器來請求中斷操作。看門狗定時器產生128個PCLK周期的復位信號。主
[單片機]
Exynos4412裸機<font color='red'>開發</font> —— <font color='red'>看門狗</font>定時器
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 定南县| 姜堰市| 弋阳县| 宜兴市| 惠来县| 五华县| 都匀市| 紫阳县| 加查县| 琼结县| 普兰县| 中江县| 泸西县| 宁蒗| 井研县| 长兴县| 梁河县| 高安市| 沂水县| 晋中市| 荃湾区| 金沙县| 隆尧县| 花垣县| 赤峰市| 通许县| 克拉玛依市| 秦皇岛市| 松桃| 香格里拉县| 石狮市| 昌图县| 大余县| 南和县| 南木林县| 龙江县| 九江县| 临朐县| 周口市| 登封市| 寻乌县|