在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

GD32開發實戰指南(基礎篇) 第13章 DAC

嵌入式大雜燴 ? 來源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2023-05-17 08:57 ? 次閱讀

開發環境:

MDK:Keil 5.30

開發板:GD32F207I-EVAL

MCU:GD32F207IK

1 DAC工作原理

1.1 DAC介紹

數字/模擬轉換模塊(DAC)是12位數字輸入,電壓輸出的數字/模擬轉換器。DAC可以配置為8位或12位模式,也可以與DMA控制器配合使用。DAC工作在12位模式時,數據可以設置成左對齊或右對齊。DAC模塊有2個輸出通道,每個通道都有單獨的轉換器。在雙DAC模式下,2個通道可以獨立地進行轉換,也可以同時進行轉換并同步地更新2個通道的輸出。DAC可以通過引腳輸入參考電壓VREF+ 以獲得更精確的轉換結果。

1684244752692x28i72f2rj

1.2 DAC主要特征

● 2個DAC轉換器:每個轉換器對應1個輸出通道

● 8位或者12位單調輸出

● 12位模式下數據左對齊或者右對齊

● 同步更新功能

● 噪聲波形生成或三角波形生成

● 雙DAC通道同時或者分別轉換

● 每個通道都有DMA功能

● 外部觸發轉換

● 輸入參考電壓VREF+

1684244753144zltvtaa191

【注意】一旦使能DACx通道,相應的GPIO引腳(PA4或者PA5)就會自動與DAC的模擬輸出相連(DAC_OUTx)。為了避免寄生的干擾和額外的功耗,引腳PA4或者PA5在之前應當設置成模擬輸入(AIN)。

1.3 DAC功能描述

  • 使能DAC通道

將DAC_CTL 寄存器中的 DENx 位置 ’1’ 即可打開對DAC通道x 的供電。經過一段啟動時間tWAKEUP,DAC通道x 即被使能。

注意:DENx位只會使能DAC通道x的模擬部分,即便該位被置’0’,DAC通道x的數字部分仍然工作。

  • __使能DAC輸出緩存 __

DAC集成了2個輸出緩存,可以用來減少輸出阻抗,無需外部運放即可直接驅動外部負載。每個DAC通道輸出緩存可以通過設置 DAC_CTL 寄存器的 DBOFFx 位來開啟或者關閉緩沖區。

  • __DAC輸出電壓 __

數字輸入經過DAC被線性地轉換為模擬電壓輸出,其范圍為0到VREF+。任一DAC通道引腳上的輸出電壓滿足下面的關系:

DAC輸出 = VREF x (DAC_DO / 4096)

【注】官方手冊有問題的,這里應該是4096

  • DAC數據格式

根據選擇的配置模式,數據按照下文所述寫入指定的寄存器:

●8位數據右對齊:用戶須將數據寫入寄存器DACx_R8DH [7:0]位

●12位數據左對齊:用戶須將數據寫入寄存器DACx_L12DH[15:4]位

●12位數據右對齊:用戶須將數據寫入寄存器DACx_R12DH[11:0]位

經過相應的移位后,寫入的數據被轉存到DACx_DH寄存器中。隨后,DACx_DH寄存器的內容或被自動地傳送到DACx_DO寄存器,或通過軟件觸發或外部事件觸發被傳送到DACx_DO寄存器。

16842447535406xg4vy5rcl

  • DAC轉換

如果使能了外部觸發(通過設置 DAC_CTL 寄存器的 DTENx 位),根據已經選擇的觸發事件,DAC 保持數據(DACx_DH)會被轉移到 DAC 數據輸出寄存器(DACx_DO)。否則,在外部觸發沒有使能的情況下, DAC 保持數據(DACx_DH)會被自動轉移到 DAC 數據輸出寄存器(DACx_DO)。

當 DAC 保持數據(DACx_DH)加載到 DACx_DO 寄存器時,經過 tSETTLING 時間之后,模擬輸出變得有效, tSETTLING 的值與電源電壓和模擬輸出負載有關。

  • 選擇DAC觸發

通過設置 DAC_CTL 寄存器中 DTENx 位來使能 DAC 外部觸發。觸發源可以通過 DAC_CTL寄存器中 DTSELx 位來進行選擇。

1684244753868wt857usmh9

TIMERx_TRGO 信號是由定時器生成的,而軟件觸發是通過設置 DAC_SWT 寄存器的 SWTRx位生成的。

2 DAC寄存器描述

我們介紹一下要實現 DAC 輸出,需要用到的一些寄存器。首先是 DAC控制寄存器DAC_CTL,該寄存器的各位描述如下圖所示。

1684244754259px134xmere

DAC_CTL的低 16 位用于控制通道0,而高 16 位用于控制通道 1,我們這里僅列出比較重要的最低 8 位的詳細描述。

16842447546331jhmc2yugx

首先,我們來看 DAC 通道0使能位(DEN0),該位用來控制 DAC 通道 0使能的,本章我們就是用的 DAC 通道 0,所以該位設置為 1。

再看關閉 DAC 通道 0輸出緩存控制位(DBOFF0),這里 GD32 的 DAC 輸出緩存做的有些不好,如果使能的話,雖然輸出能力強一點,但是輸出沒法到 0,這是個很嚴重的問題。所以本章我們不使用輸出緩存。即設置該位為 1。DAC 通道0觸發使能位(DTEN0),該位用來控制是否使用觸發,里我們不使用觸發,所以設置該位為 0。DAC 通道 0觸發選擇位(DTSEL0 [2:0]),這里我們沒用到外部觸發,所以設置這幾個位為 0就行了。DAC 通道 0噪聲/三角波生成使能位(DWM0 [1:0]),這里我們同樣沒用到波形發生器,故也設置為 0 即可。DAC 通道0噪聲波位寬(DWBW0 [3:0]),這些位僅在使用了波形發生器的時候有用,本章沒有用到波形發生器,故設置為 0 就可以了。

最后是 DAC 通道0 DMA 使能位(DDMAEN0)。

在 DAC_CTL設置好之后, DAC 就可以正常工作了, 我們僅需要再設置 DAC 的數據保持寄存器的值,就可以在 DAC 輸出通道得到你想要的電壓了(對應 IO 口設置為模擬輸入)。假設我們用的是 DAC 通道 0的 12 位右對齊數據保持寄存器:DAC0_R12DH,該寄存器各位描述如下圖所示。

16842447551314p74t5int6

該寄存器用來設置 DAC 輸出,通過寫入 12 位數據到該寄存器,就可以在 DAC 輸出通道0得到我們所要的結果。

3 DAC應用代碼實現

3.1 DAC普通方式輸出

本章我們將使用庫函數的方法來設置 DAC 模塊的通道0來輸出模擬電壓,其詳細設置步驟如下:

1)開啟 PA 口時鐘,設置 PA4為模擬輸入。

GD32F207的 DAC 通道0在 PA4上,所以,我們先要使能PA4的時鐘, 然后設置 PA4為模擬輸入。 DAC 本身是輸出,但是為什么端口要設置為模擬輸入模式呢?因為一但使能 DACx 通道后,相應的 GPIO 引腳(PA4 或者 PA5)會自動與 DAC 的模擬輸出相連,設置為輸入,是為了避免額外的干擾

使能 GPIOA 時鐘:

rcu_periph_clock_enable(RCU_GPIOA);

設置 PA5為模擬輸入只需要設置初始化參數即可:

gpio_init(GPIOA, GPIO_MODE_AIN, GPIO_OSPEED_50MHZ, GPIO_PIN_5);

2)使能 DAC時鐘。

同其他外設一樣,要想使用,必須先開啟相應的時鐘。DAC 模塊時鐘是由 APB1提供的。

rcu_periph_clock_enable(RCU_DAC); //使能 DAC 通道時鐘

3)初始化 DAC,設置 DAC 的工作模式。

該部分設置全部通過 DAC_CR 設置實現,包括:DAC 通道 使能、 DAC 通道輸出緩存關閉、不使用觸發、不使用波形發生器等設置。

/* configure the DAC0 */
dac_trigger_disable(DAC0);
dac_wave_mode_config(DAC0, DAC_WAVE_DISABLE);
dac_output_buffer_enable(DAC0);

dac_trigger_disable()函數用來關閉觸發功能。

dac_wave_mode_config()設置是否使用波形發生,這里我們前面同樣講解過不使用。所以值為 DAC_WAVE_DISABLE。

dac_output_buffer_enable用于緩存的配置,如果不使用輸出緩存,因此使用dac_output_buffer_enable()關閉緩存。

4)使能 DAC 轉換通道

初始化 DAC 之后,理所當然要使能 DAC 轉換通道,庫函數方法是:

dac_enable(DAC0); //使能 DAC0

5)設置 DAC 的輸出值。

通過前面 4 個步驟的設置, DAC 就可以開始工作了,我們使用 12 位右對齊數據格式,所以我們通過設置 DAC0_R12DH,就可以在 DAC 輸出引腳(PA4)得到不同的電壓值了。 庫函數的函數是:

dac_data_set(DAC0, DAC_ALIGN_12B_R, 0);

第二個參數設置對齊方式,可以為 12 位右對齊DAC_ALIGN_12B_R, 12 位左對齊DAC_ALIGN_12B_L 以及 8 位右對齊 DAC_ALIGN_8B_R方式。

第三個參數就是 DAC 的輸入值了,這個很好理解,初始化設置為 0。這里,還可以讀出 DAC 的數值,函數是:

dac_output_value_get (DAC0);

因此DAC0的整體配置如下:

/*
    brief      Configure the DAC peripheral
    param[in]  none
    param[out] none
    retval     none
*/
void dac_config(void)
{
    /* DAC GPIO configuration */
    dac_gpio_config();

    /* enable the clock of DAC */
    rcu_periph_clock_enable(RCU_DAC);

    /* configure the DAC0 */
    dac_trigger_disable(DAC0);
    dac_wave_mode_config(DAC0, DAC_WAVE_DISABLE);
    dac_output_buffer_enable(DAC0);

    /* enable DAC0 and set data */
    dac_enable(DAC0);
}

主函數如下:

/*
    brief      main function
    param[in]  none
    param[out] none
    retval     none
*/
int main(void)
{
    uint8_t i=0;
    uint16_t da=0;

    //systick init
    sysTick_init();

    //usart init 115200 8-N-1
    com_init(COM1);

    /*DAC初始化*/
    dac_config();//調用DAC配置

    while(1)
    {
        da=0;
        
        for(i=0;i<=10;i++)
        {
            da=i*400;

            dac_data_set(DAC0, DAC_ALIGN_12B_R, da);

            printf("da=%f v\\r\\n",3.3*((float)da/4096));

            //printf("%3.2f\\r\\n",3.3*((float)da/4096));

            delay_ms(1000);
        }
    }
}

這代碼很簡單,首先是對串口等進行初始化,接下來就是循環設置電壓并輸出。

如果想要使用軟件觸發,則需要將DAC配置為DAC_TRIGGER_SOFTWARE。

dac_trigger_source_config(DAC0, DAC_TRIGGER_SOFTWARE);
dac_trigger_enable(DAC0);

然后在主函數中需要進行軟件觸發。

dac_software_trigger_enable(DAC0);

3.2 DAC正弦波輸出實現

本章我們還要通過DAC實現正弦波輸出,那么就需要找到正弦波的曲線散點,其計算方式如下所示:

原系統時鐘周期:T_Systick=1/120M(單位:秒)

因為定時時鐘預分頻:Prescaler=0

所以定時時鐘周期:T_TIMER=T_Systick*(Prescaler+1)=1/120M(單位:秒)

因為設置的定時更新周期:Period=19

所以定時器更新周期:T_update=T_TIMER*(Period+1)=20/120M

而DAC數據更新率等于定時器更新速率:即DAC的數據更新周期為:

DAC_update=T_update=20/120M

本實驗有32個數據點,則正弦波的周期為:

T_sin=DAC_update*點數=640/120M

最后求的正弦波的頻率為:

f_sin=1/T_sin=187500Hz

因此正弦波的頻率為:

f_sin=1/T_Systick/(Prescaler+1)/(Period+1)/點數

其波形數據如下:

const uint16_t Sine12bit[32] = {
    2448,2832,3186,3496,3751,3940,4057,4095,4057,3940,
    3751,3496,3186,2832,2448,2048,1648,1264,910,600,345,
    156,39,0,39,156,345,600,910,1264,1648,2048
};

接下來看看主函數。

/*
    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);

    /*DAC初始化*/
    dac_mode_init();

    while(1)
    {
        delay_ms(1000);
    }
}

主函數很簡單,那我們進入DAC_Mode_Init()看看吧。

/*
    brief      Configure the DAC mode
    param[in]  none
    param[out] none
    retval     none
*/
void dac_mode_init(void)
{
    // dac 配置
    dac_config();

    //DMA配置
    dma_config();

    // TIMER配置并啟動
    timer_config();
}

dac_mode_init()函數初始化了DAC、DMA和TIMER,啟動定時器,利用定時器的觸發DAC數據更新。

完整配置代碼如下:

/*
    brief      Configure the GPIO peripheral
    param[in]  none
    param[out] none
    retval     none
*/
static void dac_gpio_config(void)
{
    /* enable the clock of GPIO */
    rcu_periph_clock_enable(RCU_GPIOA);

    /* config the GPIO as analog mode */
    gpio_init(GPIOA, GPIO_MODE_AIN, GPIO_OSPEED_50MHZ, GPIO_PIN_4);
}

/*
    brief      Configure the DAC peripheral
    param[in]  none
    param[out] none
    retval     none
*/
static void dac_config(void)
{
    /* DAC GPIO configuration */
    dac_gpio_config();

    /* enable the clock of DAC */
    rcu_periph_clock_enable(RCU_DAC);

    dac_wave_mode_config(DAC0, DAC_WAVE_DISABLE);
    dac_output_buffer_disable(DAC0);
    /* configure the DAC0 */
    dac_trigger_source_config(DAC0, DAC_TRIGGER_T1_TRGO);

    /* DAC的DMA功能使能 */
    dac_dma_enable(DAC0);

    dac_trigger_enable(DAC0);
    /* enable DAC0 and set data */
    dac_enable(DAC0);
}

/*
    brief      configure the DMA peripheral
    param[in]  none
    param[out] none
    retval     none
  */
static void dma_config(void)
{
    dma_parameter_struct dma_init_struct;

    /* enable DMA CLK */
    rcu_periph_clock_enable(RCU_DMA1);

    /* deinitialize DMA1 channel2 */
    dma_deinit(DMA1, DMA_CH2);

    dma_init_struct.direction = DMA_MEMORY_TO_PERIPHERAL;/* 存儲器到外設方向 */
    dma_init_struct.memory_addr = (uint32_t)Sine12bit; /* 存儲器基地址 */
    dma_init_struct.memory_inc = DMA_MEMORY_INCREASE_ENABLE;
    dma_init_struct.memory_width = DMA_MEMORY_WIDTH_16BIT;
    dma_init_struct.periph_inc = DMA_PERIPH_INCREASE_DISABLE;
    dma_init_struct.periph_width = DMA_PERIPHERAL_WIDTH_16BIT;
    //dma_init_struct.periph_addr = ((uint32_t)(DAC0_R12DH_ADDRESS));  /* 外設基地址 */
    dma_init_struct.periph_addr = ((uint32_t)(&DAC0_R12DH));
    dma_init_struct.number = 32;  /* 傳輸數據個數 */
    dma_init_struct.priority = DMA_PRIORITY_ULTRA_HIGH;
    dma_init(DMA1, DMA_CH2, &dma_init_struct);

    /* configure DMA mode 存儲器到存儲器DMA傳輸禁能*/
    dma_memory_to_memory_disable(DMA1, DMA_CH2);

    //DMA循環模式開啟
    dma_circulation_enable(DMA1, DMA_CH2);
    dma_channel_enable(DMA1, DMA_CH2);
}

/*
    brief      configure the TIMER peripheral
    param[in]  none
    param[out] none
    retval     none
  */
static void timer_config(void)
{
    timer_parameter_struct timer_initpara;

    //Enable TIMER clock
    rcu_periph_clock_enable(RCU_TIMER1);

    timer_deinit(TIMER1);

    /* TIMER configuration */
    timer_initpara.prescaler         = 0;
    timer_initpara.alignedmode       = TIMER_COUNTER_EDGE;
    timer_initpara.counterdirection  = TIMER_COUNTER_UP;
    timer_initpara.period            = 19;
    timer_initpara.clockdivision     = TIMER_CKDIV_DIV1;
    timer_init(TIMER1, &timer_initpara);

    //定時器主輸出觸發源選擇
    timer_master_output_trigger_source_select(TIMER1,TIMER_TRI_OUT_SRC_UPDATE);

    //定時器更新事件使能
    timer_update_event_enable(TIMER1);

    /* TIMER enable */
    timer_enable(TIMER1);
}

當然也可使用TIMER中斷來更新數據,從而也可實現正弦波,但是會消耗CPU資源,建議使用筆者給出的方式。

4 實驗現象

4.1 DAC普通方式輸出

將程序編譯好后下載到板子中,通過串口助手可以看到在接收區有電壓值輸出。這個和ADC輸入不同,我們使用DAC的目的是通過板子得到相應的模擬電壓值,看到串口的輸出值只是我們的調試手段,要想確認實驗是否成功,是需要通過電壓表測量PA4的電壓值是否串口的輸出一致。我們設置的步進是400,因此電壓值也是在以400*3.3/4096的電壓步進。

1684244755534dnbw6gad0l

當然啦,還需要萬用表測量引腳電壓即可。你可以使用一個固定值,或者延時更長這樣便于測量。為了更好的測量,筆者將轉換電壓設置為固定值,因此在循環體的前面加了一句話。

da = 2048;

接下來看看實驗結果:

1684244755998peppujpozi

當然也可以使用萬用表測量實際電壓。

4.2 DAC正弦波輸出

將程序編譯好后下載到板子中,通過示波器可看到波形輸出。

C:\\Users\\BruceOu\\Desktop\\scope_9.png

這里測量出的正弦波的頻率是187.42kHz,和計算結果相符。

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

    關注

    146

    文章

    17148

    瀏覽量

    351186
  • dac
    dac
    +關注

    關注

    43

    文章

    2294

    瀏覽量

    191052
  • 開發板
    +關注

    關注

    25

    文章

    5050

    瀏覽量

    97456
  • 模擬轉換器
    +關注

    關注

    0

    文章

    42

    瀏覽量

    12698
  • GD32
    +關注

    關注

    7

    文章

    403

    瀏覽量

    24351
收藏 人收藏

    評論

    相關推薦

    GD32開發實戰指南(基礎) 1 開發環境搭建

    開發環境: MDK:Keil 5.30 開發板:GD32F207I-EVAL MCU:GD32F207IK 1 GD32F207I-EVAL
    的頭像 發表于 05-07 23:35 ?1.1w次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>1<b class='flag-5'>章</b> <b class='flag-5'>開發</b>環境搭建

    GD32開發實戰指南(基礎) 4 GD32啟動流程詳解(Keil版)

    ,所有的一切都需要由開發者來設置,這里處理器是沒有堆棧,沒有中斷,更沒有外圍設備,這些工作是需要軟件來指定的,而且不同的CPU類型、不同大小的內存和不同種類的外設,其初始化工作都是不同的。本文將以GD32F207IK (基于Cortex-M3)為例進行講解。
    的頭像 發表于 05-10 09:00 ?1.7w次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>4<b class='flag-5'>章</b> <b class='flag-5'>GD32</b>啟動流程詳解(Keil版)

    GD32開發實戰指南(基礎) 7 定時器

    系統滴答定時器一般用來提供“心跳”作用,而GD32定時器最基本功能也是定時,可以設置不同時間長度的定時。定時器除了最基本的定時功能外,定時器與GPIO有掛鉤使得它可以發揮強大的作用,比如可以輸出
    的頭像 發表于 05-11 09:00 ?1.2w次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>7<b class='flag-5'>章</b> 定時器

    GD32開發實戰指南(基礎) 8 定時器

    開發環境: MDK:Keil 5.30 開發板:GD32F207I-EVAL MCU:GD32F207IK 1 PWM輸出的工作原理 脈沖寬度調制(PWM) ,是英文“Pulse Wi
    的頭像 發表于 05-12 22:14 ?7967次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>8<b class='flag-5'>章</b> 定時器

    GD32開發實戰指南(基礎) 11 CPU的高級代理-DMA

    或者存儲器和存儲器之間的高速數據傳輸,因而被廣泛地使用。早在 8086 的應用中就已經有 Intel 的 8237 這種典型的 DMA 控制器,而 GD32的 DMA 則是以類似外設的形式添加到 Cortex 內核之外的。可以說,DMA就是CPU的高級代理,DMA大大減輕了CPU的負擔。
    的頭像 發表于 05-16 08:59 ?3870次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>11<b class='flag-5'>章</b> CPU的高級代理-DMA

    GD32開發實戰指南(基礎) 12 ADC

    GD32F2系列有 3 個逐次逼近型的ADC,精度為 12 位,有18個多路復用通道,可以轉換來自16個外部通道和2個內部通道的模擬信號。其中ADC0 和 ADC1都有 16 個外部通道, ADC2
    的頭像 發表于 05-16 09:03 ?1.1w次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>12<b class='flag-5'>章</b> ADC

    GD32開發實戰指南(基礎) 14 內部溫度傳感器

    GD32 有一個內部的溫度傳感器,可以用來測量 CPU 及周圍的溫度(TA)。該溫度傳感器在內部和 ADCx_IN16 輸入通道相連接,此通道把傳感器輸出的電壓轉換成數字值。溫度傳感器模擬輸入
    的頭像 發表于 05-17 08:58 ?5370次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>14<b class='flag-5'>章</b> 內部溫度傳感器

    GD32開發實戰指南(基礎) 15 低功耗

    GD32的工作電壓(VDD)為2.0~3.6V。通過內置的電壓調節器提供所需的1.8V電源。當主電源VDD掉電后,通過VBAT腳為實時時鐘(RTC)和備份寄存器提供電源。
    的頭像 發表于 05-17 08:59 ?8069次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>15<b class='flag-5'>章</b> 低功耗

    GD32開發實戰指南(基礎) 16 RTC

    開發環境: MDK:Keil 5.30 開發板:GD32F207I-EVAL MCU:GD32F207IK 1 RTC工作原理 1.1 RTC簡介
    的頭像 發表于 05-18 22:14 ?7180次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>16<b class='flag-5'>章</b> RTC

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

    開發環境: MDK:Keil 5.30 開發板:GD32F207I-EVAL MCU:GD32F207IK GD32 有兩個看門狗, 一個是
    的頭像 發表于 06-03 16:00 ?1.1w次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>17<b class='flag-5'>章</b> 看門狗

    【圖書分享】《STM32庫開發實戰指南

    ,可作為高校電子信息、通信工程、信息工程等相關專業的教材,也適合作為從事嵌入式領域科技工作者的參考書。目錄前言第一部分 庫開發初級 1 為什么學習STM32 
    發表于 03-13 17:01

    GD32 MCU原理及固件庫開發指南》 + 初讀感悟

    GD32 MCU原理固件庫開發指南這本書內容豐富,囊括了GD32中的所有外設,書中首先介紹了如何使用MDK或IAR軟件搭建GD32工程環境,讓初學者能快速基于工程上手編程。書中主要對
    發表于 03-31 22:11

    GD32 MCU原理及固件庫開發指南》+讀后感

    2介紹GD32 MCU快速入門與開發平臺搭建的方法,包括對軟硬件開發平臺、調試工具、GD32
    發表于 06-06 21:52

    GD32開發實戰指南(基礎) 10 串口通信

    開發環境: MDK:Keil 5.30 開發板:GD32F207I-EVAL MCU:GD32F207IK 1 串口簡介 USART(Universal Synchronous
    的頭像 發表于 05-12 22:25 ?1w次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>10<b class='flag-5'>章</b> 串口通信

    GD32開發實戰指南(基礎) 19 程序加密

    GD32通過讀取芯片唯一ID號來實現程序的保護,防止被抄襲。96位的產品唯一身份標識所提供的參考號碼對任意一個GD32微控制器
    的頭像 發表于 05-20 09:10 ?4154次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發</b><b class='flag-5'>實戰</b><b class='flag-5'>指南</b>(基礎<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>19<b class='flag-5'>章</b> 程序加密
    主站蜘蛛池模板: 轻点灬大ji巴太粗太大了小说| 国产内地激情精品毛片在线一| 97伊人| 天堂8资源在线官网资源| 手机看片欧美日韩| 69女poren18中国| 美女扒开腿让男生桶爽网站| 色偷偷男人天堂| 欧美大片一区| 国产亚洲高清在线精品不卡| 中文网丁香综合网| 163黄页网又粗又长又舒服| 亚洲免费视频一区二区三区| 日韩综合色| 国产91小视频在线观看| 黄乱色伦| 天天躁狠狠躁夜躁2021| 亚洲欧美高清| 欧美色图久久| 手机在线1024| 国产99在线| 国产专区青青草原亚洲| 人人干网站| 最近2018中文字幕免费看手机| 久久久免费| 天天看天天摸色天天综合网| 日本a级特黄三级三级三级| 农村女人的一级毛片| 免费看欧美一级特黄α大片| 一区二区三区在线观看免费| 天天色影院| 天天综合色天天综合网| 羞羞色院91精品网站| 色播久久| 欧美一级特黄高清免费| 亚洲国产精品婷婷久久久久| 久久久久久国产精品免费| 成人黄色三级| 日本经典在线三级视频| 美女午夜| 色噜噜狠狠狠综合曰曰曰|