精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

【GD32F303紅楓派開發板使用手冊】第七講 TIMER-蜂鳴器PWM

聚沃科技 ? 2024-06-03 10:23 ? 次閱讀
wKgaomZVdiiAfR9BAB3mDFhHnZc972.png

7.1實驗內容

通過本實驗主要學習以下內容:

  • PWM輸出功能實現;
  • 定時器基本原理;
  • 蜂鳴器驅動原理;

7.2實驗原理

7.2.1蜂鳴器驅動原理

蜂鳴器是一種一體化結構的電子訊響器,采用直流電壓供電,廣泛應用于計算機、打印機、復印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產品中作發聲器件。比如臺式電腦的主機開機會"滴"一聲、洗衣機按下按鍵及洗衣完成都會有聲響,以上這些聲音都是通過蜂鳴器來發出的。蜂鳴器的驅動方式可分為:有源蜂鳴器(內有驅動線路)和無源蜂鳴器(使用外部驅動)。這里的“源”不是指電源。而是指震蕩源。 也就是說,有源蜂鳴器內部帶震蕩源,所以只要一通電就會叫。而無源內部不帶震蕩源,所以如果用直流信號無法令其鳴叫。必須用2K~5K的方波去驅動它。

有源蜂鳴器不需要外部的激勵源,只需要接入直流電源,即可自動發出聲音(聲音頻率相對固定),它的工作發聲原理是:直流電源輸入經過振蕩系統的放大取樣電路在諧振裝置作用下產生聲音信號。

7.2.2定時器基本原理

GD32F30X系列MCUtimer主要有以下五類,主要包括高級定時器/通用定時器L0/通用定時器L1/通用定時器L2/基本定時器。各個定時器支持的功能可在該表中查閱,其中黑點代表改類型的定時器支持該功能,X代表改類型的定時器不支持該功能。

wKgaomZdKCiATzEiAAI4Np1-WVk808.png

定時器可支持主從模式,可實現多個定時器級聯,相關定時器的級聯信號說明如下表所示。以TIMER0為例,其觸發信號可以選擇TIMER4_TRGO/TIMER1_TRGO/TIMER2_TRGO/TIMER3_TRGO。

wKgZomZdKDKAEAt2AAE1g22x0uY977.png

以TIMER1為例,其主要特性如下:

?總通道數:4;
?計數器寬度:16位;
?時鐘源可選:內部時鐘,內部觸發,外部輸入,外部觸發;
?多種計數模式:向上計數,向下計數和中央計數;
?正交編碼器接口:被用來追蹤運動和分辨旋轉方向和位置;
?霍爾傳感器接口:用來做三相電機控制
?可編程的預分頻器:16位,運行時可以被改變;
?每個通道可配置:輸入捕獲模式,輸出比較模式,可編程的PWM模式,單脈沖模式;
?自動重裝載功能;
?中斷輸出和DMA請求:更新事件,觸發事件,比較/捕獲事件;
?多個定時器的菊鏈使得一個定時器可以同時啟動多個定時器;
?定時器的同步允許被選擇的定時器在同一個時鐘周期開始計數;
?定時器主-從管理。

本例程主要使用TIMER1 PWM模式對蜂鳴器進行驅動,在此簡單介紹PWM輸出功能。

PWM輸出有兩種模式:PWM模式0和PWM模式1,其配置在CHxCOMCTL寄存器中,具體說明如下。

wKgaomZdKD6AZ9r2AAVxktrKl_k534.png

根據計數模式,PWM輸出分為兩種波形:

  • EAPWM(邊沿對齊PWM)

EAPWM 的周期由TIMERx_CAR寄存器值決定,占空比由TIMERx_CHxCV寄存器值決定。下圖顯示了EAPWM的輸出波形和中斷。

wKgZomZdKE2AaqW6AACo-OogD9E482.png
  • CAPWM(中央對齊PWM)

CAPWM 的周期由(2*TIMERx_CAR寄存器值)決定,占空比由(2*TIMERx_CHxCV寄存器值)決定。 下圖顯示了CAPWM的輸出波形和中斷。

wKgaomZdKGeADIKWAAFMBAnE220384.png

7.3硬件設計

蜂鳴器驅動電路如下圖所示,在本例程中,通過BEEP_PWM(PA15)引腳驅動三極管實現蜂鳴器的驅動,當BEEP_PWM輸出高電平時,三極管導通,蜂鳴器鳴叫;當BEEP_PWM輸出低電平時,三極管截斷,蜂鳴器停止鳴叫。

wKgaomZdKHSAWCkJAADCdUQydfg719.png

當我們通直流電到有源蜂鳴器的時候,它會發送預設的聲音,通常是連續的蜂鳴聲或間歇的蜂鳴聲等。 工作電壓不變,改變通斷時間,獲得不同的長音,如連續聲,快短聲,慢長聲等。

7.4代碼解析

本例程實現通過調整PWM的周期占空比以及對應PWM輸出的時間,實現不同音調的蜂鳴器播放,進而實現模擬音樂播放的效果,例程中模擬的是孤勇者的音樂。

7.4.1主函數代碼解析

主函數如下所示,主要包括串口/LED初始化,蜂鳴器PWM初始化,TIMER初始化(該timer僅實現基本定時的功能,通過該timer控制蜂鳴器PWM輸出時間),以及啟動蜂鳴器等。

C int main(void) { uint16_t t=0; driver_init(); bsp_uart_init(&BOARD_UART); bsp_led_group_init(); bsp_led_on(&LED0); bsp_led_off(&LED1); bsp_beep_init(1000000,50); TIMER_INT.timer_updata_callback=Music_switch; bsp_timer_init(10000,5000); buzzer_on(); printf("\r\n Bepp music play\r\n"); while(1) { if(int_flag==1) { int_flag=0; t++; bsp_led_toggle(&LED0); printf("\r\n Bepp music play loop %d\r\n",t); } } }

7.4.2蜂鳴器PWM配置函數

蜂鳴器PWM配置函數如下所示,通過調用driver_timer_channel_init底層驅動函數實現對對應TIMER周期和占空比的配置。

C void bsp_beep_init(uint32_t counter_frequency,uint16_t period) { driver_timer_channel_init(&PWM_BEEP,counter_frequency,period); }

PWM_BEEP的定義如下,采用TIMER1的CH0通道進行輸出,引腳為PA15,通過該定義可實現對蜂鳴器相關參數的一站式定義。

C TIMER_CH_DEF(PWM_BEEP,TIMER1,0,TIMER_CH_PWM_HIGH,A,15,AF_PP,GPIO_TIMER1_PARTIAL_REMAP0);

7.4.3基本定時器初始化函數

基本定時器初始化函數如下,啟動了TIMER5作為中斷功能,定時周期為10000個定時器時鐘,其回調函數為Music_switch。

C TIMER_INT.timer_updata_callback=Music_switch; bsp_timer_init(10000,5000); void bsp_timer_init(uint32_t counter_frequency,uint16_t period) { driver_timer_base_int_init(&TIMER_INT,counter_frequency,period); nvic_irq_enable(TIMER5_IRQn,0,0); } TIMER_BASE_DEF(TIMER_INT,TIMER5);

Music_switch的定義如下,該函數在TIMER5的中斷中調用,該函數實現的功能主要為配置修改TIMER5的周期以及蜂鳴器PWM輸出的周期占空比,進而實現對不同音調的播放。

C void Music_switch(void) { static uint16_t i=0; buzzer_set(music[i],12); i++; bsp_timer_init(10000,music[i]*50); i++; if( i==(sizeof(music)/sizeof(music[0])) ) { i=0; bsp_led_toggle(&LED1); int_flag=1; } }

音樂的相關數據定義在music數組中,其參數含義如下:M6代表蜂鳴器PWM的周期,下一個50代表該PWM輸出的時間(對應TIEMR5的周期),以上兩個數據一組,后面的數據類似。

C uint16_t music[]= { // //這一路上走走停停 順著少年漂流的痕跡 // M2,50,M2,50,M1,25,M2,50,M2,50,M1,25,M2,50,M3,50,M5,50,M3,50, M2,50,M2,50,M1,25,M2,50,M2,50,M1,25,M2,25,M3,25,M2,25,M1,25,L6,100,Z0,10, // //邁出車站的前一刻 竟有些猶豫 // M2,50,M2,50,M1,25,M2,50,M2,50,M1,25,M2,50,M3,50,M5,50,M3,50, M2,50,M2,50,M3,25,M2,50,M1,50,M2,100,Z0,50, // //不僅笑著這近鄉情怯 仍無法避免 // M2,50,M2,50,M1,25,M2,50,M2,50,M1,25,M2,50,M3,50,M5,50,M3,50, M2,50,M2,50,M3,25,M2,50,M1,50,L6,100,Z0,10, // //而長野的天 依舊那么暖 風吹起了從前 // M3,25,M2,25,M1,25,M2,25,M1,100, M3,25,M2,25,M1,25,M2,25,M1,50,M1,50, M5,25,M3,25,M2,25,M1,25,M2,25,M1,100,M1,150,Z0,30, // //從前初識這世間 萬般留戀 看著天邊似在眼前 也甘愿赴湯蹈火去走它一遍 // M1,50,M2,50,M3,50,M1,50,M6,50,M5,25,M6,25,M6,50,M6,50, M1,25,M7,50,M6,25,M7,25,M7,100,Z0,5, M7,50,M6,25,M7,25,M7,50,M3,50,H1,25,H2,25,H1,25,M7,25,M6,50,M5,50, M6,50,M5,25,M6,25,M6,25,M5,25,M6,25,M5,25,M6,50,M5,25,M2,25,M2,25,M5,50,M5,50,M3,100,M3,100,Z0,25, // //如今走過這世間 萬般留戀 翻過歲月不同側臉 措不及防闖入你的笑顏 // M1,50,M2,50,M3,50,M1,50,M6,50,M5,25,M6,25,M6,50,M6,50, M1,25,M7,50,M6,25,M7,25,M7,100,Z0,5, M7,50,M6,25,M7,25,M7,50,M3,50,H1,25,H2,25,H1,25,M7,25,M6,50,M5,50, M6,50,H3,25,H3,25,H3,50,M5,50,M6,50,H3,25,H3,25,H3,25,M5,50,M6,25,M6,100,M6,100,M6,100,Z0,25, // //我曾難自拔與世界之大 也沉溺于其中夢話 // H1,50,H2,50,H3,50,H6,25,H5,25,H5,50,H6,25,H5,25,H5,50,H6,25,H5,25,H5,50,H2,25,H3,25,H3,50, H6,25,H5,25,H5,50,H6,25,H5,25,H5,50,H6,25,H5,25,H5,25,H3,50,H3,50, // //不得真假 不做掙扎 不懼笑話 // H2,50,H1,25,M6,25,M6,25,H1,50, M6,25,H2,25,H1,25,M6,50,M6,25,H1,50,H1,50, H3,100,H3,25,H4,25,H3,50,H3,25,H2,50,H2,50,Z0,25, // //我曾將青春翻涌成她 也曾指尖彈出盛夏 心之所動且就隨緣去吧 // H1,50,H2,50,H3,50,H6,25,H5,25,H5,50,H6,25,H5,25,H5,50,H6,25,H5,25,H5,50,H2,50, H3,50,H6,25,H5,25,H5,50,H6,25,H5,25,H5,50,H6,25,H5,25,H5,50,H3,50,H3,50, H2,50,H1,25,M6,25,M6,25,H3,50,H3,50, H2,50,H1,25,M6,25,M6,25,H1,50,H1,50,H1,100,H1,100,Z0,10, // //逆著光行走任風吹雨打吧 // M6,25,H3,50,H3,50,H2,50,H1,25,M6,25,M6,25,H3,50,H2,50,H1,25,M6,25,M6,25,H1,50,H1,50,H1,50,H1,100,Z0,10, M6,50,M7,50,H1,50,H2,50,M7,50,H1,50,H1,100,Z0,10, //愛你孤身走暗巷 H1,50,M7,50,H1,50,H2,50,M7,50,H1,50,H1,100,Z0,10, //愛你不跪的模樣 H1,50,H2,50,H3,50,H2,50,H3,50,H2,50,H3,100,H3,50,H3,50,H2,50,H3,100,H5,100,H3,100,Z0,10 //愛你對峙過絕望不肯哭一場 };

7.5實驗結果

將本例程燒錄到紅楓派開發板中,運行后將會通過蜂鳴器聽到相關音樂

教程GD32 MCU方案商聚沃科技原創發布,了解更多GD32 MCU教程,關注聚沃科技官網

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

    關注

    6022

    文章

    44375

    瀏覽量

    628253
  • PWM
    PWM
    +關注

    關注

    114

    文章

    5055

    瀏覽量

    212165
  • 蜂鳴器
    +關注

    關注

    12

    文章

    887

    瀏覽量

    45680
  • Timer
    +關注

    關注

    1

    文章

    63

    瀏覽量

    12738
  • GD32
    +關注

    關注

    7

    文章

    400

    瀏覽量

    23970
收藏 人收藏

    評論

    相關推薦

    GD32F303】星空介紹

    一、開發板介紹星空GD開發板是由旗點科技推出的一款GD32開發板,板載
    發表于 09-11 17:55

    【星空GD32F303開發板試用體驗】開發記錄匯總

    本帖最后由 申小林一號 于 2021-10-15 14:47 編輯 開貼日期:2021年10月11日該貼主要是用于記錄星空開發板使用記錄以及學習GD32F303芯片的一個過程,將所有的
    發表于 10-11 16:09

    【星空GD32F303開發板試用體驗】開箱+環境搭建

    本帖最后由 lustao 于 2021-10-19 09:29 編輯 感謝 發燒友學院以及廣州旗點智能科技有限公司為我和孩子提供此產品星空GD32F303開發板。收到了星空
    發表于 10-18 14:15

    【星空GD32F303開發板試用體驗】開箱+環境搭建

    https://bbs.elecfans.com/jishu_2179209_1_1.html感謝 發燒友學院以及廣州旗點智能科技有限公司為我和孩子提供此產品星空gd32F303開發板。收到了星空
    發表于 11-02 15:36

    【星空GD32F303開發板試用體驗】+板卡概覽

    本帖最后由 cooldog123pp 于 2021-11-6 21:07 編輯 星空GD開發板是由旗點科技推出的一款GD32開發板
    發表于 11-06 21:05

    星空GD32F303開發板的相關資料下載

    一、開發板介紹星空GD開發板是由旗點科技推出的一款GD32開發板,板載
    發表于 12-10 08:27

    STM32CUBEMX開發GD32F303(12)----輸出PWM及修改PWM頻率與占空比

    本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發,同時通過開發板內進行驗證。 本章主要配置定時器輸出PWM
    的頭像 發表于 11-30 14:40 ?3600次閱讀
    STM32CUBEMX<b class='flag-5'>開發</b><b class='flag-5'>GD32F303</b>(12)----輸出<b class='flag-5'>PWM</b>及修改<b class='flag-5'>PWM</b>頻率與占空比

    GD32F303固件庫開發(12)----輸出PWM及修改PWM頻率與占空比

    本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發,同時通過開發板內進行驗證。 本章主要配置定時器輸出PWM
    的頭像 發表于 11-30 15:36 ?8772次閱讀
    <b class='flag-5'>GD32F303</b>固件庫<b class='flag-5'>開發</b>(12)----輸出<b class='flag-5'>PWM</b>及修改<b class='flag-5'>PWM</b>頻率與占空比

    STM32CUBEMX開發GD32F303(14)----IIC之配置OLED

    本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發,同時通過開發板內進行驗證。
    的頭像 發表于 07-26 13:52 ?1743次閱讀
    STM32CUBEMX<b class='flag-5'>開發</b><b class='flag-5'>GD32F303</b>(14)----IIC之配置OLED

    GD32F303固件庫開發

    的可以加群申請:615061293 。 GD32F303固件庫開發(1)----前期準備與燒錄 使用GDLINK、jlink、串口下載程序到GD芯片。 [https://blog.csdn.net
    的頭像 發表于 07-27 09:27 ?954次閱讀
    <b class='flag-5'>GD32F303</b>固件庫<b class='flag-5'>開發</b>

    GD32F303紅楓開發板使用手冊】第二 GPIO-流水燈實驗

    GD32F303系列MCU最多可支持?112?個通用I/O?引腳(GPIO),分別為?PA0 ~ PA15,?PB0 ~ PB15,?PC0 ~ PC15,PD0 ~ PD15,?PE0
    的頭像 發表于 05-29 10:02 ?1208次閱讀
    【<b class='flag-5'>GD32F303</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> GPIO-流水燈實驗

    GD32F303紅楓開發板使用手冊】第三 GPIO-按鍵查詢檢測實驗

    GD32F303系列MCU GPIO輸入配置結構如下圖所示,輸入可配置上下拉電阻,通過施密特觸發器后可通過備用功能輸入或者通過輸入狀態寄存器進行讀取。
    的頭像 發表于 05-30 10:02 ?610次閱讀
    【<b class='flag-5'>GD32F303</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> GPIO-按鍵查詢檢測實驗

    GD32F303紅楓開發板使用手冊】第五 FMC-片內Flash擦寫讀實驗

    MC即Flash控制器,其提供了片上Flash操作所需要的所有功能,在GD32F303系列MCU中,Flash前256K字節空間內,?CPU執行指令零等待,具有相同主頻下最快的代碼執行效率。FMC也
    的頭像 發表于 06-02 10:05 ?487次閱讀
    【<b class='flag-5'>GD32F303</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> FMC-片內Flash擦寫讀實驗

    GD32F303紅楓開發板使用手冊】第十六 USART-DMA串口收發實驗

    在前面ADC章節中,我們介紹了DMA的工作原理,這里就不多做介紹。從GD32F303用戶手冊中可以查到,各串口的TX和RX分別對應DMA的不同通道,比如USART0的TX對應DMA0的通道3,而RX對應DMA0的通道4。
    的頭像 發表于 06-15 09:54 ?693次閱讀
    【<b class='flag-5'>GD32F303</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> USART-DMA串口收發實驗

    GD32F303紅楓開發板使用手冊】第二十 SPI-SPI NAND FLASH讀寫實驗

    通過本實驗主要學習以下內容: ?SPI通信協議,參考19.2.1東方紅開發板使用手冊 ?GD32F303 SPI操作方式,參考19.2.2東方紅開發板
    的頭像 發表于 06-20 09:50 ?521次閱讀
    【<b class='flag-5'>GD32F303</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> SPI-SPI NAND FLASH讀寫實驗