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

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

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

GD32開發(fā)實(shí)戰(zhàn)指南(基礎(chǔ)篇) 第8章 定時(shí)器

嵌入式大雜燴 ? 2023-05-12 22:14 ? 次閱讀

開發(fā)環(huán)境:

MDK:Keil 5.30

開發(fā)板:GD32F207I-EVAL

MCU:GD32F207IK

1 PWM輸出的工作原理

脈沖寬度調(diào)制(PWM) ,是英文“Pulse Width Modulation” 的縮寫,簡(jiǎn)稱脈寬調(diào)制,是利用微處理器的數(shù)字輸出來對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù)。簡(jiǎn)單一點(diǎn),就是對(duì)脈沖寬度的控制。

GD32 的定時(shí)器除了 TIMER5 和 6(基本定時(shí)器)。其他的定時(shí)器都可以用來產(chǎn)生 PWM 輸出。

每個(gè)定時(shí)器有四個(gè)通道,每一個(gè)通道都有一個(gè)捕獲比較寄存器,,將寄存器值和計(jì)數(shù)器值比較,通過比較結(jié)果輸出高低電平,便可以實(shí)現(xiàn)脈沖寬度調(diào)制模式(PWM信號(hào))。

在上一節(jié),講解了定時(shí)器的相關(guān)寄存器即基本原理,本節(jié)將不再贅述。下面談?wù)勅绾问褂枚〞r(shí)器的寄存器進(jìn)行PWM輸出的。若配置脈沖計(jì)數(shù)器TIMERx_CNT為向上計(jì)數(shù),而重載寄存器TIMERx_CAR配置為N,即TIMERx_CNT的當(dāng)前計(jì)數(shù)值數(shù)值X在CK_TIMER時(shí)鐘源的驅(qū)動(dòng)下不斷累加,當(dāng)TIMERx_CNT的數(shù)值X大于N時(shí),會(huì)重置TIMERx_CNT數(shù)值為0重新計(jì)數(shù)。而在TIMERx_CNT計(jì)數(shù)的同時(shí),TIMERx_CNT的計(jì)數(shù)值X會(huì)與比較寄存器TIMERx_CHxCV預(yù)先存儲(chǔ)了的數(shù)值A(chǔ)進(jìn)行比較,當(dāng)脈沖計(jì)數(shù)器TIMERx_CNT的數(shù)值X小于比較寄存器TIMERx_CHxCV的值A(chǔ)時(shí),輸出高電平(或低電平),相反地,當(dāng)脈沖計(jì)數(shù)器的數(shù)值X大于或等于比較寄存器的值A(chǔ)時(shí),輸出低電平(或高電平)。如此循環(huán),得到的輸出脈沖周期就為重載寄存器TIMERx_CAR存儲(chǔ)的數(shù)值(N+1)乘以觸發(fā)脈沖的時(shí)鐘周期,其脈沖寬度則為比較寄存器TIMERx_CHxCV的值A(chǔ)乘以觸發(fā)脈沖的時(shí)鐘周期,即輸出PWM的占空比為A/(N+1)。

估計(jì)很多初學(xué)者看了上面的一段話都很蒙圈,沒關(guān)系,下面以向上計(jì)數(shù)模式為例進(jìn)行講解。

1683894461407ai9zjve8vv

在PWM輸出模式下,除了CNT(計(jì)數(shù)器當(dāng)前值)、CAR(自動(dòng)重裝載值)之外,還多了一個(gè)值CHxCV(捕獲/比較寄存器值)。當(dāng)CNT小于CHxCV時(shí),CHxCV通道輸出低電平;當(dāng)CNT等于或大于CHxCV時(shí),CHxCV通道輸出高電平。因此得到PWM的一個(gè)周期如下:

1.定時(shí)器從0開始向上計(jì)數(shù);

2.當(dāng)0-t1段,定時(shí)器計(jì)數(shù)器CNT值小于CHxCV值,輸出低電平;

3.t1-t2段,定時(shí)器計(jì)數(shù)器CNT值大于CHxCV值,輸出高電平;

4.當(dāng)CNT值達(dá)到CAR時(shí),定時(shí)器溢出,重新向上計(jì)數(shù)...循環(huán)此過程。

至此一個(gè)PWM周期完成。針對(duì)PWM重點(diǎn)關(guān)注兩個(gè)寄存器, CAR寄存器確定PWM頻率,CHxCV寄存器確定占空比

上文提到了PWM的輸出模式,下面講解PWM的工作模式:

  • PWM模式1(向上計(jì)數(shù)) :計(jì)數(shù)器從0計(jì)數(shù)加到自動(dòng)重裝載值(CAR),然后重新從0開始計(jì)數(shù),并且產(chǎn)生一個(gè)計(jì)數(shù)器溢出事。
  • PWM模式2(向下計(jì)數(shù)) :計(jì)數(shù)器從自動(dòng)重裝載值(CAR)減到0,然后重新從重裝載值(CAR)開始遞減,并且產(chǎn)生一個(gè)計(jì)數(shù)器溢出事件。

這里我們僅利用 TIMER2產(chǎn)生多路 PWM 輸出。如果要產(chǎn)生多路輸出,大家可以根據(jù)我們的代碼稍作修改即可。具體不同定時(shí)器對(duì)應(yīng)引腳在對(duì)應(yīng)芯片數(shù)據(jù)手冊(cè)的引腳說明(pin description) 中查看。

[ps] 本文以F2系列為例進(jìn)行講解,GD不同系列其定時(shí)器個(gè)數(shù)不同

2 PWM輸出的寄存器描述

同樣,我們首先通過對(duì) PWM 相關(guān)的寄存器進(jìn)行講解,大家了解了定時(shí)器 TIMER2的 PWM原理之后,我們?cè)僦v解怎么使用庫(kù)函數(shù)產(chǎn)生 PWM 輸出。

要使 GD32 的通用定時(shí)器 TIMERx 產(chǎn)生 PWM 輸出,除了上一章介紹的寄存器外,我們還會(huì)用到 3 個(gè)寄存器,來控制 PWM 的。這三個(gè)寄存器分別是:通道控制寄存器(TIMERx_CHCTL0/1)、通道控制寄存器(TIMERx_CHCTL2)、捕獲/比較寄存器(TIMERx_CHxCV)。接下來我們簡(jiǎn)單介紹一下這三個(gè)寄存器。

首先是通道控制寄存器(TIMERx_CHCTL0/1),該寄存器總共有2個(gè),TIMERx_CHCTL0和TIMERx_CHCTL1。TIMERx_CHCTL0控制 CH1 和 2,而TIMERx_CHCTL1 控制 CH3 和 4。該寄存器的各位描述如下圖。

1683894462034r9plgle44a

1683894462440oz34fdco6x

該寄存器的有些位在不同模式下,功能不一樣,所以在上圖中,我們把寄存器分了2層,上面一層對(duì)應(yīng)輸出而下面的則對(duì)應(yīng)輸入。關(guān)于該寄存器的詳細(xì)說明,請(qǐng)參考《GD32F20x User Manual》。這里我們需要說明的是模式設(shè)置位CH0COMCTL,此部分由 3 位組成。總共可以配置成 7 種模式,我們使用的是 PWM 模式,所以這 3 位必須設(shè)置為 110/111。這兩種PWM 模式的區(qū)別就是輸出電平的極性相反。

接下來,我們介紹通道控制寄存器(TIMERx_CHCTL2),該寄存器控制著各個(gè)輸入輸出通道的開關(guān)。該寄存器的各位描述如下圖。

1683894462744tsklgtikai

1683894463026lzyiovgssl

該寄存器比較簡(jiǎn)單, 我們這里只用到了CHxEN位,該位是輸入/捕獲 2 輸出使能位,要想PWM 從 IO 口輸出,這個(gè)位必須設(shè)置為 1,所以我們需要設(shè)置該位為 1。

最后,我們介紹一下捕獲/比較寄存器(TIMERx_CHxCV),該寄存器總共有 4 個(gè),對(duì)應(yīng) 4 個(gè)輸通道 CH0~3。因?yàn)檫@ 4 個(gè)寄存器都差不多,我們僅以TIMERx_CH0CV為例介紹,該寄存器的各位描述如下圖。

1683894463366hvxr57gmdc

在輸出模式下,該寄存器的值與 CNT 的值比較,根據(jù)比較結(jié)果產(chǎn)生相應(yīng)動(dòng)作。利用這點(diǎn),我們通過修改這個(gè)寄存器的值,就可以控制 PWM 的輸出脈寬了。

假如我們要利用 TIMER2的 CH1 輸出 PWM 來控制 DS0 的亮度,但是 TIMER2_CH1默認(rèn)是接在 PA7上面的,這就可以通過重映射功能,把 TIMER2_CH1映射到 PB5 上。

GD32 的重映射控制是由復(fù)用重映射和調(diào)試 IO 配置寄存器控制的,該寄存器的各位描述如上圖。我們這里用到的是 TIMER2的重映射,從上圖可以看出,TIMER2_REMAP 是由[11:10]這 2 個(gè)位控制的。TIMER2_REMAP[1:0]重映射控制表如下表。

1683894463750rgwb4veuvf

默認(rèn)條件下,TIMER2_REMAP[1:0]為 00,是沒有重映射的,所以 TIMER2_CH0~TIMER2_CH3 分別是接在 PA6、 PA7、 PB0 和 PB1 上的,而我們想讓 TIMER2_CH1 映射到 PB5 上, 則需要設(shè)置TIMER2_REMAP[1:0]=10,即部分重映射,這里需要注意,此時(shí)TIMER2_CH0 也被映射到 PB4 上了。

TIMER定時(shí)器的四路通道CHx_O輸出PWM。

16838944641193rhskkcdf5

3 PWM輸出實(shí)現(xiàn)

3.1 PWM代碼分析

本章要實(shí)現(xiàn)通過TIMER2實(shí)現(xiàn)四路方波的輸出,以TIMER2_CH0 輸出 PWM 為例進(jìn)行講解。下面我們介紹通過庫(kù)函數(shù)來配置該功能的步驟。

首先要提到的是,PWM 相關(guān)的函數(shù)設(shè)置在庫(kù)函數(shù)文件gd32f20x_timer.h和gd32f20x_timer.c文件中。

1) 開啟 TIMER2 時(shí)鐘以及GPIO的時(shí)鐘,配置 PA6為復(fù)用輸出。

要使用 TIMER2,我們必須先開啟 TIMER2的時(shí)鐘,這點(diǎn)相信大家看了這么多代碼,應(yīng)該明白了。庫(kù)函數(shù)使能 TIMER2及PA6時(shí)鐘的方法是:

/* enable the GPIOA clock */
rcu_periph_clock_enable(RCU_GPIOA);
//Enable TIMER2 clock
rcu_periph_clock_enable(RCU_TIMER2);

庫(kù)函數(shù)設(shè)置 AFIO 時(shí)鐘的方法是:

/* 開啟復(fù)用功能時(shí)鐘 */
rcu_periph_clock_enable(RCU_AF);

2) 初始化 TIMER2,設(shè)置 TIMER2的 CAR 和 PSC。

在開啟了 TIMER2 的時(shí)鐘之后,我們要設(shè)置 CAR 和 PSC 兩個(gè)寄存器的值來控制輸出 PWM 的周期。這在庫(kù)函數(shù)是通過timer_init()函數(shù)實(shí)現(xiàn)的,在上一節(jié)定時(shí)器中斷章節(jié)我們已經(jīng)有講解,這里就不詳細(xì)講解,調(diào)用的格式為:

/* TIMER2 configuration */
timer_init_struct.prescaler         = 0;
timer_init_struct.alignedmode       = TIMER_COUNTER_EDGE;
timer_init_struct.counterdirection  = TIMER_COUNTER_UP;
timer_init_struct.period            = 999;
timer_init_struct.clockdivision     = TIMER_CKDIV_DIV1;
timer_init_struct.repetitioncounter = 0;
timer_init(TIMER2, &timer_init_struct);

3) 設(shè)置 TIMER2_CH0的 PWM 模式,使能 TIMER2的 CH0輸出。

接下來,我們要設(shè)置 TIMER2_CH0為 PWM 模式(默認(rèn)是凍結(jié)的),在庫(kù)函數(shù)中,PWM通道設(shè)置是通過函數(shù) timer_channel_output_config()來設(shè)置的,我們直接來看看結(jié)構(gòu)體 timer_oc_parameter_struct的定義:

/* channel output parameter structure definitions */
typedef struct {
    uint16_t outputstate;                       /*!< channel output state */
    uint16_t outputnstate;                      /*!< channel complementary output state */
    uint16_t ocpolarity;                        /*!< channel output polarity */
    uint16_t ocnpolarity;                       /*!< channel complementary output polarity */
    uint16_t ocidlestate;                       /*!< idle state of channel output */
    uint16_t ocnidlestate;                      /*!< idle state of channel complementary output */
} timer_oc_parameter_struct;

該結(jié)構(gòu)體主要配置通道的狀態(tài),極性等,還需要設(shè)置占空比等配置,不同的通道需要分別設(shè)置。

/* PWM Mode configuration: Channel0 */
timer_channel_output_config(TIMER2, TIMER_CH_0, &timer_oc_init_struct);

/* 通道2占空比設(shè)置 */
timer_channel_output_pulse_value_config(TIMER2, TIMER_CH_0, CH0CV_Val);
/* PWM模式0 */
timer_channel_output_mode_config(TIMER2,TIMER_CH_0,TIMER_OC_MODE_PWM0);
/* 不使用輸出比較影子寄存器 */
timer_channel_output_shadow_config(TIMER2,TIMER_CH_0,TIMER_OC_SHADOW_DISABLE);

4) 使能 TIM3。

我們需要使能 TIMER2。使能 TIMER2的方法前面已經(jīng)講解過:

timer_enable(TIMER2);

最后看下主函數(shù)代碼:

/*
    brief      main function
    param[in]  none
    param[out] none
    retval     none
*/
int main(void)
{
    //systick init
    sysTick_init();

    /* configure the TIMER peripheral */
    pwm_init ();

    while(1) 
    {
     
    }
}

是不是很簡(jiǎn)單,這里進(jìn)行了PWM初始化,最核心的就是timer2_init()函數(shù),其代碼如下:

/*
    brief      configure the TIMER peripheral
    param[in]  none
    param[out] none
    retval     none
  */
void pwm_init(void)
{
    /* TIMER2 configuration: generate PWM signals with different duty cycles*/
    /* 定義一個(gè)定時(shí)器初始化結(jié)構(gòu)體 */
    timer_parameter_struct timer_init_struct;
    /* 定義一個(gè)定時(shí)器輸出比較參數(shù)結(jié)構(gòu)體*/
    timer_oc_parameter_struct timer_oc_init_struct;

    /* PWM信號(hào)電平跳變值 */
    uint16_t CH0CV_Val = 500;
    uint16_t CH1CV_Val = 375;
    uint16_t CH2CV_Val = 250;
    uint16_t CH3CV_Val = 125;

    /* ----------------------------------------------------------------------- 
    TIMER2 Channel0 duty cycle = (TIMER2_CH0CV/ TIMER2_CAR+1)* 100% = 50%
    TIMER2 Channel1 duty cycle = (TIMER2_CH1CV/ TIMER2_CAR+1)* 100% = 37.5%
    TIMER2 Channel2 duty cycle = (TIMER2_CH2CV/ TIMER2_CAR+1)* 100% = 25%
    TIMER2 Channel3 duty cycle = (TIMER2_CH3CV/ TIMER2_CAR+1)* 100% = 12.5%
    ----------------------------------------------------------------------- */
    // gpio init
    timer_gpio_init();

    //Enable TIMER2 clock
    rcu_periph_clock_enable(RCU_TIMER2);
    /* 開啟復(fù)用功能時(shí)鐘 */
    rcu_periph_clock_enable(RCU_AF);

    timer_deinit(TIMER2);

    /* TIMER2 configuration */
    timer_init_struct.prescaler         = 0;
    timer_init_struct.alignedmode       = TIMER_COUNTER_EDGE;
    timer_init_struct.counterdirection  = TIMER_COUNTER_UP;
    timer_init_struct.period            = 999;
    timer_init_struct.clockdivision     = TIMER_CKDIV_DIV1;
    timer_init_struct.repetitioncounter = 0;
    timer_init(TIMER2, &timer_init_struct);

    /* PWM初始化 */
    timer_oc_init_struct.outputstate  = TIMER_CCX_ENABLE;		/* 通道使能 */
    timer_oc_init_struct.outputnstate = TIMER_CCXN_DISABLE;		/* 通道互補(bǔ)輸出使能(定時(shí)器2無效) */
    timer_oc_init_struct.ocpolarity   = TIMER_OC_POLARITY_HIGH;	/* 通道極性 */
    timer_oc_init_struct.ocnpolarity  = TIMER_OCN_POLARITY_HIGH;/* 互補(bǔ)通道極性(定時(shí)器2無效)*/
    timer_oc_init_struct.ocidlestate  = TIMER_OC_IDLE_STATE_LOW;/* 通道空閑狀態(tài)輸出(定時(shí)器2無效)*/
    timer_oc_init_struct.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;/*互補(bǔ)通道空閑狀態(tài)輸出(定時(shí)器2無效) */

    /* PWM Mode configuration: Channel0 */
    timer_channel_output_config(TIMER2, TIMER_CH_0, &timer_oc_init_struct);

    /* 通道2占空比設(shè)置 */
    timer_channel_output_pulse_value_config(TIMER2, TIMER_CH_0, CH0CV_Val);
    /* PWM模式0 */
    timer_channel_output_mode_config(TIMER2,TIMER_CH_0,TIMER_OC_MODE_PWM0);
    /* 不使用輸出比較影子寄存器 */
    timer_channel_output_shadow_config(TIMER2,TIMER_CH_0,TIMER_OC_SHADOW_DISABLE);	

    /* PWM Mode configuration: Channel1 */
    timer_channel_output_config(TIMER2, TIMER_CH_1, &timer_oc_init_struct);

    /* 通道2占空比設(shè)置 */
    timer_channel_output_pulse_value_config(TIMER2, TIMER_CH_1, CH1CV_Val);
    /* PWM模式0 */
    timer_channel_output_mode_config(TIMER2,TIMER_CH_1,TIMER_OC_MODE_PWM0);
    /* 不使用輸出比較影子寄存器 */
    timer_channel_output_shadow_config(TIMER2,TIMER_CH_1,TIMER_OC_SHADOW_DISABLE);	

    /* PWM Mode configuration: Channel2 */
    timer_channel_output_config(TIMER2, TIMER_CH_2, &timer_oc_init_struct);

    /* 通道2占空比設(shè)置 */
    timer_channel_output_pulse_value_config(TIMER2, TIMER_CH_2, CH2CV_Val);
    /* PWM模式0 */
    timer_channel_output_mode_config(TIMER2,TIMER_CH_2,TIMER_OC_MODE_PWM0);
    /* 不使用輸出比較影子寄存器 */
    timer_channel_output_shadow_config(TIMER2,TIMER_CH_2,TIMER_OC_SHADOW_DISABLE);	

    /* PWM Mode configuration: Channel3 */
    timer_channel_output_config(TIMER2, TIMER_CH_3, &timer_oc_init_struct);

    /* 通道2占空比設(shè)置 */
    timer_channel_output_pulse_value_config(TIMER2, TIMER_CH_3, CH3CV_Val);
    /* PWM模式0 */
    timer_channel_output_mode_config(TIMER2,TIMER_CH_3,TIMER_OC_MODE_PWM0);
    /* 不使用輸出比較影子寄存器 */
    timer_channel_output_shadow_config(TIMER2,TIMER_CH_3,TIMER_OC_SHADOW_DISABLE);	

    /* 自動(dòng)重裝載影子比較器使能 */
    timer_auto_reload_shadow_enable(TIMER2);	

    /* TIMER2 enable */
    timer_enable(TIMER2);
}

3.2 PWM周期、占空比分析

根據(jù)前面的參數(shù)配置,我們可以算出PWM的輸出周期:

PWM=1/(Tclk/(psc+1))*(arr+1)

這里我們 arr=999 psc=0 Tclk=120Mhz ,

PWM=1/(120Mhz/(1))*(999+1)=1/120ms

因此PWM的輸出頻率120KHz,周期是8.3us。

PWM的占空比為:

Dutycycle=(CHxCV/CAR+1)* 100%

PWM自動(dòng)重裝值為999,四個(gè)通道的跳變值分別為500,375,250,125。因此,TIMER2的四個(gè)通道的占空比分別為50%,37.5%,25%,12.5%。

4 PWM輸出的實(shí)驗(yàn)現(xiàn)象

在前面我們輸出了TIMER2的通道0(PA6)、1(PA7)、2(PB0)、3(PB1)不同占空比的 PWM 信號(hào)。接下來就看看PWM的輸出,PWM 信號(hào)可以通過示波器看到,下面筆者就是用邏輯分析儀查看波形。

首先筆者使用的邏輯分析儀是Kingst LA5016,當(dāng)然啦,其他的也可以,關(guān)于邏輯分析儀的相關(guān)使用筆者這里就不介紹了,可以查看官方資料。

首先將通道 0(PA6)、1(PA7)、2(PB0)、3(PB1)分別接到邏輯分析儀的CH0 – CH3,然后下載程序到板子中,打開Kingst VIS,然后進(jìn)行采樣。

1683894464486l2japa0ykw

我們就可以看到不同通道的實(shí)際周期,占空比等信息。

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

從上圖可以看到,實(shí)際測(cè)量的頻率和占空比和理論是相符的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    114

    文章

    5119

    瀏覽量

    213179
  • 定時(shí)器
    +關(guān)注

    關(guān)注

    23

    文章

    3232

    瀏覽量

    114333
  • Cortex-M
    +關(guān)注

    關(guān)注

    2

    文章

    227

    瀏覽量

    29709
  • GD32
    +關(guān)注

    關(guān)注

    7

    文章

    403

    瀏覽量

    24113
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    GD32對(duì)Timer定時(shí)器原理的詳細(xì)講解

    GD32 Timr定時(shí)器看起來比較復(fù)雜啊。一看GD32E10x 的SPEC:一個(gè)高級(jí)定時(shí)器,三個(gè)通用定時(shí)器,還有一個(gè)基本
    的頭像 發(fā)表于 04-22 17:02 ?1.6w次閱讀
    <b class='flag-5'>GD32</b>對(duì)Timer<b class='flag-5'>定時(shí)器</b>原理的詳細(xì)講解

    GD32開發(fā)實(shí)戰(zhàn)指南(基礎(chǔ)) 1 開發(fā)環(huán)境搭建

    設(shè)計(jì)的GD32F207I-EVAL開發(fā)板。 GD32F207I-EVAL開發(fā)板使用 GD32F207IK作為主控制
    的頭像 發(fā)表于 05-07 23:35 ?1.1w次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實(shí)戰(zhàn)</b><b class='flag-5'>指南</b>(基礎(chǔ)<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>1<b class='flag-5'>章</b> <b class='flag-5'>開發(fā)</b>環(huán)境搭建

    GD32開發(fā)實(shí)戰(zhàn)指南(基礎(chǔ)) 7 定時(shí)器

    系統(tǒng)滴答定時(shí)器一般用來提供“心跳”作用,而GD32定時(shí)器最基本功能也是定時(shí),可以設(shè)置不同時(shí)間長(zhǎng)度的定時(shí)。
    的頭像 發(fā)表于 05-11 09:00 ?1.2w次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實(shí)戰(zhàn)</b><b class='flag-5'>指南</b>(基礎(chǔ)<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>7<b class='flag-5'>章</b> <b class='flag-5'>定時(shí)器</b>

    GD32開發(fā)實(shí)戰(zhàn)指南(基礎(chǔ)) 12 ADC

    根據(jù) CPU 引腳的不同通道數(shù)也不同,一般都有8 個(gè)外部通道。各通道的A/D轉(zhuǎn)換可以__單次、連續(xù)、掃描或間斷模式__執(zhí)行。ADC的結(jié)果可以__左對(duì)齊或右對(duì)齊方式__存儲(chǔ)在16位數(shù)據(jù)寄存中。模擬
    的頭像 發(fā)表于 05-16 09:03 ?1.1w次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實(shí)戰(zhàn)</b><b class='flag-5'>指南</b>(基礎(chǔ)<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>12<b class='flag-5'>章</b> ADC

    GD32開發(fā)實(shí)戰(zhàn)指南(基礎(chǔ)) 14 內(nèi)部溫度傳感

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

    GD32開發(fā)實(shí)戰(zhàn)指南(基礎(chǔ)) 15 低功耗

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

    GD32開發(fā)實(shí)戰(zhàn)指南(基礎(chǔ)) 16 RTC

    運(yùn)行的定時(shí)器。從定時(shí)器的角度來說,相對(duì)于通用定時(shí)器 TIMER 外設(shè),它十分簡(jiǎn)單,只有很純粹的計(jì)時(shí)功能(當(dāng)然,可以觸發(fā)中斷);但從掉電還繼續(xù)運(yùn)行的角度來說,它卻是 GD32中唯一一個(gè)具
    的頭像 發(fā)表于 05-18 22:14 ?6972次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實(shí)戰(zhàn)</b><b class='flag-5'>指南</b>(基礎(chǔ)<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>16<b class='flag-5'>章</b> RTC

    GD32開發(fā)實(shí)戰(zhàn)指南(基礎(chǔ)) 17 看門狗

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

    【圖書分享】《STM32庫(kù)開發(fā)實(shí)戰(zhàn)指南

    庫(kù)函數(shù)開發(fā)小結(jié) 10 DMA——為CPU減負(fù) 11 ADC實(shí)驗(yàn)(DMA方式) 12
    發(fā)表于 03-13 17:01

    GD32 MCU原理及固件庫(kù)開發(fā)指南》+讀后感

    。 2介紹GD32 MCU快速入門與開發(fā)平臺(tái)搭建的方法,包括對(duì)軟硬件開發(fā)平臺(tái)、調(diào)試工具、GD32
    發(fā)表于 06-06 21:52

    GD32-Colibri-F207實(shí)驗(yàn)板定時(shí)器1停止

    GD32-Colibri-F207實(shí)驗(yàn)板定時(shí)器1停止,很好的GD32資料,快來學(xué)習(xí)吧。
    發(fā)表于 04-21 14:24 ?11次下載

    GD32E230開發(fā)筆記-GD32E230定時(shí)器控制

    GD32E230開發(fā)筆記-GD32E230定時(shí)器控制1.硬件設(shè)計(jì)2.軟件設(shè)計(jì)定時(shí)器的配置3.設(shè)計(jì)效果4.程序源碼1.硬件設(shè)計(jì)
    發(fā)表于 12-02 14:36 ?28次下載
    <b class='flag-5'>GD</b>32E230<b class='flag-5'>開發(fā)</b>筆記-<b class='flag-5'>GD</b>32E230<b class='flag-5'>定時(shí)器</b>控制

    《嵌入式-STM32開發(fā)指南》第二部分 基礎(chǔ) - 4 定時(shí)器(HAL庫(kù))

    《嵌入式-STM32開發(fā)指南》第二部分 基礎(chǔ) - 4 定時(shí)器(HAL庫(kù))
    發(fā)表于 12-05 14:51 ?15次下載
    《嵌入式-STM32<b class='flag-5'>開發(fā)指南</b>》第二部分 基礎(chǔ)<b class='flag-5'>篇</b> - <b class='flag-5'>第</b>4<b class='flag-5'>章</b>  <b class='flag-5'>定時(shí)器</b>(HAL庫(kù))

    GD32開發(fā)實(shí)戰(zhàn)指南(基礎(chǔ)) 19 程序加密

    GD32通過讀取芯片唯一ID號(hào)來實(shí)現(xiàn)程序的保護(hù),防止被抄襲。96位的產(chǎn)品唯一身份標(biāo)識(shí)所提供的參考號(hào)碼對(duì)任意一個(gè)GD32微控制
    的頭像 發(fā)表于 05-20 09:10 ?4055次閱讀
    <b class='flag-5'>GD32</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>實(shí)戰(zhàn)</b><b class='flag-5'>指南</b>(基礎(chǔ)<b class='flag-5'>篇</b>) <b class='flag-5'>第</b>19<b class='flag-5'>章</b> 程序加密

    GD32 Timer定時(shí)器周期時(shí)間計(jì)算公式

    有小伙伴反饋GD32 Timer定時(shí)器的周期時(shí)間不知如何計(jì)算,今天就來安排。
    的頭像 發(fā)表于 01-22 09:53 ?2501次閱讀
    <b class='flag-5'>GD32</b> Timer<b class='flag-5'>定時(shí)器</b>周期時(shí)間計(jì)算公式