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

歷史上的今天

今天是:2024年10月21日(星期一)

正在發生

2018年10月21日 | STM32學習之:事件標志組

發布者:mancozc 來源: eefocus關鍵字:STM32  事件標志組 手機看文章 掃描二維碼
隨時隨地手機看文章

為什么要使用事件標志

事件標志組是實現多任務同步的有效機制之一。也許有不理解的初學者會問采用事件標志組多麻煩,

搞個全局變量不是更簡單?其實不然,在裸機編程時,使用全局變量的確比較方便,但是在加上 RTOS 后

就是另一種情況了。 使用全局變量相比事件標志組主要有如下三個問題:

? 使用事件標志組可以讓 RTOS 內核有效地管理任務,而全局變量是無法做到的,任務的超時等機制需

要用戶自己去實現。

? 使用了全局變量就要防止多任務的訪問沖突,而使用事件標志組則處理好了這個問題,用戶無需擔心。

? 使用事件標志組可以有效地解決中斷服務程序和任務之間的同步問題。 

FreeRTOS 任務間事件標志組的實現

任務間事件標志組的實現是指各個任務之間使用事件標志組實現任務的通信或者同步機制。

下面我們來說說 FreeRTOS 中事件標志的實現,根據用戶在 FreeRTOSConfig.h 文件中的配置:

? #define configUSE_16_BIT_TICKS 1

配置宏定義 configUSE_16_BIT_TICKS 為 1 時,每創建一個事件標志組,用戶可以使用的事件標志是

8 個。

? #define configUSE_16_BIT_TICKS 0 

配置宏定義 configUSE_16_BIT_TICKS 為 0 時,每創建一個事件標志組,用戶可以使用的事件標志是24 個。 

上面說的 8 個和 24 個事件標志應該怎么理解呢?其實就是定義了一個 16 位變量,僅使用了低 8bit

或者定義了一個 32 位變量,僅使用了低 24bit。每一個 bit 用 0 和 1 兩種狀態來代表事件標志。 反映到

FreeRTOS 上就是將事件標志存儲到了 EventBits_t 類型的變量中, 這個變量又是怎么回事呢?定義如下: 

由上面定義可以看出,TickType_t 數據類型可以是 16 位數或者 32 位數,這樣就跟上面剛剛說的

configUSE_16_BIT_TICKS 宏定義呼應上了。教程配套的例子都是配置宏定義 configUSE_16_BIT_TICKS

為 0, 即用戶每創建一個事件標志組, 有 24 個標志可以設置。 如下圖所示,這里僅使用 bit0, bit1 和 bit2。 


 下面我們通過如下的框圖來說明一下 FreeRTOS 事件標志的實現,讓大家有一個形象的認識。 

FreeRTOS 中斷方式事件標志組的實現

FreeRTOS 中斷方式事件標志組的實現是指中斷函數和 FreeRTOS 任務之間使用事件標志。 下面我們

通過如下的框圖來說明一下 FreeRTOS 事件標志的實現,讓大家有一個形象的認識。

? 任務 Task1 運行過程中調用函數 xEventGroupWaitBits,等待事件標志位被設置,任務 Task1 由運

行態進入到阻塞態。

? Task1 阻塞的情況下,串口接收到數據進入到了串口中斷服務程序,在串口中斷服務程序中設置 Task1

等待的事件標志,任務 Task1 由阻塞態進入到就緒態,在調度器的作用下由就緒態又進入到運行態。

上面就是一個簡單的 FreeRTOS 中斷方式事件標志通信過程。 實際應用中,中斷方式的消息機制要注意以

下四個問題:

? 中斷函數的執行時間越短越好,防止其它低于這個中斷優先級的異常不能得到及時響應。

? 實際應用中,建議不要在中斷中實現消息處理,用戶可以在中斷服務程序里面發送消息通知任務,在

任務中實現消息處理,這樣可以有效地保證中斷服務程序的實時響應。同時此任務也需要設置為高優

先級,以便退出中斷函數后任務可以得到及時執行。

? 中斷服務程序中一定要調用專用于中斷的事件標志設置函數,即以 FromISR 結尾的函數。

? 在操作系統中實現中斷服務程序與裸機編程的區別。

? 如果 FreeRTOS 工程的中斷函數中沒有調用 FreeRTOS 的事件標志組 API 函數,與裸機編程是

一樣的。

? 如果 FreeRTOS 工程的中斷函數中調用了 FreeRTOS 的事件標志組的 API 函數,退出的時候要

檢測是否有高優先級任務就緒,如果有就緒的,需要在退出中斷后進行任務切換,這點跟裸機編

程稍有區別,詳見 實驗例程說明(中斷方式):

? 另外強烈推薦用戶將 Cortex-M3 內核的 STM32F103 和 Cortex-M4 內核的 STM32F407, F429

的 NVIC 優先級分組設置為 4,即:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);這樣中

斷優先級的管理將非常方便。

? 用戶要在 FreeRTOS 多任務開啟前就設置好優先級分組,一旦設置好切記不可再修改。 


事件標志組 API 函數

使用如下 11 個函數可以實現 FreeRTOS 的事件標志組:

? xEventGroupCreate()

? xEventGroupCreateStatic()

? vEventGroupDelete()

? xEventGroupWaitBits()

? xEventGroupSetBits()

? xEventGroupSetBitsFromISR()

? xEventGroupClearBits()

? xEventGroupClearBitsFromISR()

? xEventGroupGetBits()

? xEventGroupGetBitsFromISR() 

這里我們重點的說以下 4 個函數:

? xEventGroupCreate()

? xEventGroupWaitBits()

? xEventGroupSetBits()

? xEventGroupSetBitsFromISR() 


函數 xEventGroupCreate

函數原型:

EventGroupHandle_t xEventGroupCreate( void );

函數描述:

函數 xEventGroupCreate 用于創建事件標志組。

? 返回值,如果創建成功, 此函數返回事件標志組的句柄,如果 FreeRTOSConfig.h 文件中定義的 heap

空間不足會返回 NULL

#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 30 * 1024 ) ) 

函數 xEventGroupSetBits

函數原型:

EventBits_t xEventGroupSetBits( EventGroupHandle_t xEventGroup, /* 事件標志組句柄 */

const EventBits_t uxBitsToSet ); /* 事件標志位設置 */

函數描述:

函數 xEventGroupSetBits 用于設置指定的事件標志位為 1。

? 第 1 個參數是事件標志組句柄。

? 第 2 個參數表示 24 個可設置的事件標志位,EventBits_t 是定義的 32 位變量,

低 24 位用于事件標志設置。變量 uxBitsToSet 的低 24 位的某個位設置為 1,那么被設置的

事件標志組的相應位就設置為 1。 變量 uxBitsToSet 設置為 0 的位對事件標志相應位沒有影響。比

如設置變量 uxBitsToSet = 0x0003 就表示將事件標志的位 0 和位 1 設置為 1,其余位沒有變化。


? 返回當前的事件標志組數值。 


使用這個函數要注意以下問題:

1. 使用前一定要保證事件標志組已經通過函數 xEventGroupCreate 創建了。

2. 此函數是用于任務代碼中調用的,故不可以在中斷服務程序中調用此函數,中斷服務程序中使用的是

xEventGroupSetBitsFromISR

3. 用戶通過參數 uxBitsToSet 設置的標志位并不一定會保留到此函數的返回值中,下面舉兩種情況:

a. 如果設置一個位導致等待該位的任務離開阻塞狀態,則該位可能會被自動清除(請參閱xEventGroupWaitBits()的xClearBitOnExit參數)。

b. 調用此函數的任務是一個低優先級任務,通過此函數設置了事件標志后,讓一個等待此事件標志

的高優先級任務就緒了,會立即切換到高優先級任務去執行,相應的事件標志位會被函數

xEventGroupWaitBits 清除掉,等從高優先級任務返回到低優先級任務后,函數xEventGroupSetBits 的返回值已經被修改。


函數 xEventGroupSetBitsFromISR

函數原型:

BaseType_t xEventGroupSetBitsFromISR(

EventGroupHandle_t xEventGroup, /* 事件標志組句柄 */

const EventBits_t uxBitsToSet, /* 事件標志位設置 */

BaseType_t *pxHigherPriorityTaskWoken ); /* 高優先級任務是否被喚醒的狀態保存 */

函數描述:

函數 xEventGroupSetBitsFromISR,用于設置指定的事件標志位為 1。(中斷方式)

? 第 1 個參數是事件標志組句柄。

? 第 2 個參數表示 24 個可設置的事件標志位,EventBits_t 是定義的 32 位變量(詳解 18.1.2 小節說

明),低 24 位用于事件標志設置。變量 uxBitsToSet 的低 24 位的某個位設置為 1,那么被設置的

事件標志組的相應位就設置為 1。 變量 uxBitsToSet 設置為 0 的位對事件標志相應位沒有影響。比

如設置變量 uxBitsToSet = 0x0003 就表示將事件標志的位 0 和位 1 設置為 1,其余位沒有變化。

? 第 3 個參數用于保存是否有高優先級任務準備就緒。如果函數執行完畢后,此參數的數值是 pdTRUE,

說明有高優先級任務要執行,否則沒有。 

? 返回值,如果消息成功發送給 daemon 任務(就是 FreeRTOS 的定時器任務)返回 pdPASS,否則

返回 pdFAIL,另外 daemon 任務中的消息隊列滿了也會返回 pdFAIL。

使用這個函數要注意以下問題:

1. 使用前一定要保證事件標志已經通過函數 xEventGroupCreate 創建了。同時要在 FreeRTOSConfig.h

文件中使能如下三個宏定義:

#define INCLUDE_xEventGroupSetBitFromISR 1

#define configUSE_TIMERS 1

#define INCLUDE_xTimerPendFunctionCall 1

2. 函數 xEventGroupSetBitsFromISR 是用于中斷服務程序中調用的,故不可以在任務代碼中調用此函

數,任務代碼中使用的是 xEventGroupSetBits。

3. 函數 xEventGroupSetBitsFromISR 對事件標志組的操作是不確定性操作,因為不知道當前有多少個

任務在等待此事件標志。而 FreeRTOS 不允許在中斷服務程序和臨界段中執行不確定性操作。 為了不

在中斷服務程序中執行,就通過此函數給 FreeRTOS 的 daemon 任務(就是 FreeRTOS 的定時器任

務)發送消息,在 daemon 任務中執行事件標志的置位操作。 同時也為了不在臨界段中執行此不確定

操作,將臨界段改成由調度鎖來完成。這樣不確定性操作在中斷服務程序和臨界段中執行的問題就都

得到解決了。

4. 由于函數 xEventGroupSetBitsFromISR 對事件標志的置位操作是在 daemon 任務里面執行的,如果

想讓置位操作立即生效,即讓等此事件標志的任務能夠得到及時執行,需要設置 daemon 任務的優先

級高于使用此事件標志組的所有其它任務。

5. 通過下面的使用舉例重點看一下函數 xEventGroupSetBitsFromISR 第三個參數的規范用法,初學者務

必要注意。 

函數 xEventGroupWaitBits

函數原型:

EventBits_t xEventGroupWaitBits(

const EventGroupHandle_t xEventGroup, /* 事件標志組句柄 */

const EventBits_t uxBitsToWaitFor, /* 等待被設置的事件標志位 */

const BaseType_t xClearOnExit, /* 選擇是否清零被置位的事件標志位 */

const BaseType_t xWaitForAllBits, /* 選擇是否等待所有標志位都被設置 */

TickType_t xTicksToWait ); /* 設置等待時間 */

函數描述:

函數 xEventGroupWaitBits 等待事件標志被設置。

? 第 1 個參數是事件標志組句柄。

? 第 2 個參數表示等待 24 個事件標志位中的指定標志,EventBits_t 是定義的 32 位變量(詳解 18.1.2

小節說明),低 24 位用于事件標志設置。比如設置變量 uxBitsToWaitFor = 0x0003 就表示等待事

件標志的位 0 和位 1 設置為 1。 此參數切不可設置為 0。

? 第 3 個參數選擇是否清除已經被置位的事件標志,如果這個參數設置為 pdTRUE,且函數

xEventGroupWaitBits 在參數 xTicksToWait 設置的溢出時間內返回,那么相應被設置的事件標志

位會被清零。 如果這個參數設置為 pdFALSE,對已經被設置的事件標志位沒有影響。

? 第 4 個參數選擇是否等待所有的標志位都被設置,如果這個參數設置為 pdTRUE,要等待第 2 個參

數 uxBitsToWaitFor 所指定的標志位全部被置 1,函數才可以返回。當然,超出了在參數

xTicksToWait 設置的溢出時間也是會返回的。如果這個參數設置為 pdFALSE,第 2 個參數

uxBitsToWaitFor 所指定的任何標志位被置 1,函數都會返回,超出溢出時間也會返回。

? 第 5 個參數設置等待時間,單位時鐘節拍周期。 如果設置為 portMAX_DELAY,表示永久等待。

? 返回值,由于設置的時間超時或者指定的事件標志位被置 1,導致函數退出時返回的事件標志組數值。

使用這個函數要注意以下問題:

1. 此函數切不可在中斷服務程序中調用。

2. 這里再著重說明下這個函數的返回值,通過返回值用戶可以檢測是哪個事件標志位被置 1 了。 

? 如果由于設置的等待時間超時,函數的返回值可會有部分事件標志位被置 1。

? 如果由于指定的事件標志位被置1而返回, 并且設置了這個函數的參數xClearOnExit為pdTRUE,

那么此函數的返回值是清零前的事件標志組數值。

另外,調用此函數的任務在離開阻塞狀態到退出函數 xEventGroupWaitBits 之間這段時間,如果一個

高優先級的任務搶占執行了,并且修改了事件標志位,那么此函數的返回值會跟當前的事件標志組數

值不同 。


  實驗分析場:



static void AppTaskCreate(void)

{


        xTaskCreate(vTaskWork,       /* 任務函數  */

                 "vTaskWork",         /* 任務名    */

                  512,                   /* 任務棧大小,單位word,也就是4字節 */

                  NULL,                  /* 任務參數  */

                  1,                     /* 任務優先級*/

                  &xHandleTaskWork );  /* 任務句柄  */

    

    

    xTaskCreate( vTaskLed1,            /* 任務函數  */

                 "vTaskLed1",          /* 任務名    */

                 512,                 /* 任務棧大小,單位word,也就是4字節 */

                 NULL,                /* 任務參數  */

                 2,                   /* 任務優先級*/

                 &xHandleTaskLED1); /* 任務句柄  */

    

    xTaskCreate( vTaskBeep,             /* 任務函數  */

                 "vTaskBeep",           /* 任務名    */

                 512,                     /* 任務棧大小,單位word,也就是4字節 */

                 NULL,                   /* 任務參數  */

                 3,                       /* 任務優先級*/

                 &xHandleTaskBeep );  /* 任務句柄  */

    

    

}


 



/*********************************************************************************

  * @ 函數名  : vTaskBeep

  * @ 功能說明: Beep 任務

  * @ 參數    : pvParameters,當任務創建的時候傳進來,可以沒有  

  * @ 返回值  : 無

  ********************************************************************************/

void vTaskBeep(void *pvParameters)

{

        EventBits_t uxBits;

        const TickType_t xTicksToWait = 5000; /* 最大延遲100ms */

    

    while(1)

    {

        /* 等K1按鍵按下設置bit0和K2按鍵按下設置bit1 */

        uxBits = xEventGroupWaitBits(xCreatedEventGroup, /* 事件標志組句柄 */

                                     BIT_ALL,            /* 等待bit0和bit1被設置 */

                                     pdTRUE,             /* 退出前bit0和bit1被清除,這里是bit0和bit1都被設置才表示“退出”*/

                                     pdTRUE,             /* 設置為pdTRUE表示等待bit1和bit0都被設置*/

                                     xTicksToWait);      /* 等待延遲時間 */

        

        if((uxBits & BIT_ALL) == BIT_ALL)

        {

            /* 接收到bit1和bit0都被設置的消息 */

            printf("接收到bit0和bit1都被設置的消息\r\n");

        }

        else

        {

            /* 超時,另外注意僅接收到一個按鍵按下的消息時,變量uxBits的相應bit也是被設置的 */

            BEEP_TOGGLE; 

        }

    }

}


 


 



/***按鍵處理任務***/




static void vTaskWork(void *pvParameters)

{


    EventBits_t uxBits;


    while(1)

    {

        

        

        if (key1_flag==1)

        {

            key1_flag=0;

                        /* 設置事件標志組的bit0 */

                    uxBits = xEventGroupSetBits(xCreatedEventGroup, BIT_0);

                    if((uxBits & BIT_0) != 0)

                    {

                        printf("K1鍵按下,事件標志的bit0被設置\r\n");

                    }

                    else

                    {

                        printf("K1鍵按下,事件標志的bit0被清除,說明任務vTaskBeep已經接受到bit0和bit1被設置的情況\r\n");

                    }

        }

        if(key2_flag==1)

        {

                    key2_flag=0;

                    uxBits = xEventGroupSetBits(xCreatedEventGroup, BIT_1);

                    if((uxBits & BIT_1) != 0)

                    {

                        printf("K2鍵按下,事件標志的bit1被設置\r\n");

                    }

                    else

                    {

                        printf("K2鍵按下,事件標志的bit1被清除,說明任務vTaskBeep已經接受到bit0和bit1被設置的情況\r\n");

                    }

            

        }

    

        

        vTaskDelay(20);

    }

}



創建的任務,按鍵處理優先級低于事件等待的Beep任務,先按下K1,再按K2,打印如下:



第一個輸出毫無疑問,第二行,由于事件等待Beep優先級大于按鍵處理,所以當K2按下之后,調度器首先回到高優先級的任務Beep,打印出此時K1,K2都被按下以致bit0和bit1被置位的消息,在Beep任務中調用xEventGroupWaitBits函數后,這兩個置為1的位bit1和bit0會被清零,此時,調度器再次回到低優先級的按鍵處理任務時,xEventGroupSetBits的返回值已經更新成清零值,故第三行打印清除的消息。


現在,我們把按鍵處理的優先級設置成為高于Beep任務的,打印輸出如下:

第一個輸出也毫無疑問,按下K1,bit0被置位,當我按下K2的時候,此時調度器 不會馬上返回低優先級的Beep任務,而會繼續執行自身(此實驗設置按鍵處理最高優先級)直到被阻塞,所以會有第二行的打印,但是,注意,第二行按下K2的打印卻依舊顯示的是被清除了,因為在Beep任務中使用了事件等待,而K2按下的時候,freertos操作系統會知道等待兩個按鍵按下的事件已經觸發了,此時,在按鍵處理任務中,xEventGroupSetBits的返回值,也不是當前獲取的置位值了,而是經過xEventGroupSetBits函數自動清零之后的值,所以第二行打印的是清零消息,第三行打印都被置位,為什么不是清零?因為此時的xEventGroupWaitBits返回值是清零前的事件標志組數值。


可能你覺得有點奇怪, xEventGroupSetBits函數本就是置位信息的功能,居然還要受xEventGroupWaitBits函數和調用形式影響,哪怕調用xEventGroupWaitBits函數的任務優先級還是低于我們的按鍵任務的,但是,正是因為這樣,我們真正實時傳遞了事件信息啊。試想,要是我的兩個按鍵事件都已經觸發了,而我在按鍵處理任務中還不能立即知道,這樣的實時性顯然是不滿足需求的。就連裸機中,我們通過中斷改變一個元素的值,一定是中斷改變之后,這個值在被任何使用的時候都已經更新,所以,作為實時操作系統,freertos這樣的行為也就可以理解了。


 


中斷方式不再演示,只是需要在中斷服務函數中使用xEventGroupSetBitsFromISR,使用方式如下:



/*

*********************************************************************************************************

*    函 數 名: TIM_CallBack1和TIM_CallBack2

*    功能說明: 定時器中斷的回調函數,此函數被bsp_StartHardTimer所調用。                        

*    形    參: 無

*    返 回 值: 無

*********************************************************************************************************

*/

static void TIM_CallBack1(void)

{

    BaseType_t xResult;

    BaseType_t xHigherPriorityTaskWoken = pdFALSE;

    

    /* 向任務vTaskBeep發送事件標志 */

    xResult = xEventGroupSetBitsFromISR(xCreatedEventGroup, /* 事件標志組句柄 */

                                        BIT_0 ,             /* 設置bit0 */

                                        &xHigherPriorityTaskWoken );


    /* 消息被成功發出 */

    if( xResult != pdFAIL )

    {

        /* 如果xHigherPriorityTaskWoken = pdTRUE,那么退出中斷后切到當前最高優先級任務執行 */

        portYIELD_FROM_ISR(xHigherPriorityTaskWoken);

    }

}


關鍵字:STM32  事件標志組 引用地址:STM32學習之:事件標志組

上一篇:STM32學習之:NVIC的初步理解
下一篇:STM32學習之:定時器程序設計探討

推薦閱讀

三大模塊:電源、IO口、時鐘。一、 首先,我們來看一下電源,下面是電源框圖從上面我們可以看出,電源給內部的三大關鍵部分供電,一是給ADC供電,這塊無需多說,二是電池備份域,VBAT引腳可以連接到一個可選的待機電壓由電池供電或由另一個來源,當V DD是斷開時保留的備份寄存器的內容和供給的RTC。還一部分主要用來給數字邏輯部分供電,像...
人工智能與5G將成為推動半導體未來十年成長的重要動能,但在前段制程微縮越來越困難,以及某些功能,先天就不宜使用太細微的電路實現的情況下,將一顆SoC設計切割成不同小芯片(Chiplet),再用先進封裝技術提供的高密度互聯將多顆Chiplet包在同一個封裝體內,將是未來的發展趨勢。在AI浪潮席卷下,為了提供更高的運算效能,處理器核心數量,以及其所搭配的...
近日,在無錫聯勤保障中心某部的任務現場,保管員穿上單兵機械外骨骼系統搬運報廢武器。這是機械外骨骼首次亮相報廢武器銷毀一線!有了全新裝備助力,不僅搬運工作更輕松,而且大大降低了安全風險。視頻截圖最后,記得關注微信公眾號:OFweek機器人,更多干貨在等你!1.限時下載 | 工業機器人四大家族(ABB、庫卡、安川)全套資料!2.限時下載 | ...
你的吉時利源表是否遇到以下問題?不開機、開機異響、炸機、死機、無輸出、輸出不穩定、輸出超差、顯示值亂跳、燒產品、無法連接電腦等其他使用問題......如果有一起來看看吧~按鍵無反應故障現象:開機后電流及電壓界面均顯示overflow,前面板按鍵無反應。檢測過程:經檢測,儀器按鍵膜老化,電源開關不良,模擬板多處組件性能不良,損壞,造成輸出不受控...

史海拾趣

問答坊 | AI 解惑

ucos2移植到2812

在CCS3.3中,F2812硬件仿真環境,成功移植ucos ii到2812上的工程文件,提供給想做2812上ucos ii移植,完成實時多任務調度的朋友參考。…

查看全部問答∨

wince 和 pc同步問題

我的設備每次啟動后與pc機通過USB連接都會提示連接無效 我發現控制面板->PC連接屬性里面沒有"USB Socket"選項 必須進入我的設備->windows->啟動->運行USBSync后,PC連接屬性才有此選項.由此可以跟PC機同步了 我想每次啟動自動同步不 ...…

查看全部問答∨

讀取CF卡的序列號的問題

我的程序如下:是在網上弄到的。 // getCFSerialNumber.cpp : Defines the entry point for the application. // #include "stdafx.h" //my code #include <windows.h> #include <winioctl.h> #define IOCTL_DISK_BASE F ...…

查看全部問答∨

CE 網絡連接

    這兩天在搞3G的東西,因為我們現在的模塊用的是USB接口,然后模擬成一個COM6進行通信,在CE的: 控制面板->網絡連接 里要新建一個連接,選擇“撥號連接”然后設置好區域代碼,還有附加解調器命令+CGDCON,"IP","CMNET",mod ...…

查看全部問答∨

關于ndis中間層驅動程序開發

我現在要實現一個中間層虛擬網卡和2個物理網卡綁定,不知道如何下手, 大致看過DDK里面的Mux和passthru的代碼,但是不知道如何改。 煩請告訴指點下,謝了先…

查看全部問答∨

求助達人幫看的電源原理圖有什么問題

這個圖這樣可不可以?有什么問題?R90/R92/C94/C95的值是多少…

查看全部問答∨

南華大學黃智偉 備戰2013年全國大學生電子設計競賽 (系列教程)

本帖最后由 paulhyde 于 2014-9-15 03:17 編輯 南華大學黃智偉 備戰2013年全國大學生電子設計競賽 一. 基本技能訓練 南華大學黃智偉 備戰2013年全國大學生電子設計競賽一. 基本技能訓練訓練內容:1.元器件的選用包括:電阻(位)器,電容器,電感 ...…

查看全部問答∨

使用 /sys 文件系統訪問 Linux 內核(轉自IBM社區)

使用 /sys 文件系統訪問 Linux 內核 sysfs 虛擬文件系統提供了一種比 proc 更為理想的訪問內核數據的途徑 程 任全 (crquan@gmail.com), Linux 內核開發者、存儲開發工程師, UIT(創新科存儲技術有限公司) 簡介: sysfs ...…

查看全部問答∨

靜電源對元器件的影響

       靜電危害起因于靜電力和靜電火花,靜電危害中最嚴重的靜電放電(ESD)引起可燃物的起火和爆炸。人們常說,防患于未然,防止產生靜電的措施一般都是降低流速和流量,改造起電強烈的工藝環節,采用起電較少的設備材料等。 ...…

查看全部問答∨

2014 NXP分立器件選型指南

本帖最后由 music_586 于 2014-10-13 19:53 編輯 剛剛網上下的; …

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

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

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

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 湄潭县| 武平县| 昔阳县| 五家渠市| 上蔡县| 荣成市| 陆良县| 芜湖市| 加查县| 阳原县| 卢氏县| 盐山县| 万年县| 金昌市| 武城县| 旺苍县| 贵德县| 天峻县| 望江县| 四会市| 壶关县| 铜山县| 陈巴尔虎旗| 左云县| 云和县| 集安市| 盱眙县| 南陵县| 新巴尔虎右旗| 聂荣县| 通化市| 郧西县| 林州市| 页游| 辽阳市| 大庆市| 锡林郭勒盟| 循化| 巴彦淖尔市| 宣恩县| 册亨县|