![wKgaomYwSqiAY_PQAAnl063z3JE116.png](https://file1.elecfans.com/web2/M00/DF/57/wKgaomYwSqiAY_PQAAnl063z3JE116.png)
6.1實驗內(nèi)容
通過本實驗主要學(xué)習(xí)以下內(nèi)容:
- TIMER PWM輸出原理
- TIMER 定時中斷
6.2實驗原理
本例程中,采用TIMER5進行定時中斷,在中斷中改變TIMER0前三個通道的占空比,使用示波器或邏輯分析儀,可以測量TIMER0前三個通道PA8、PA9和PA10的波形。也可以通過飛線的方式將三個IO口分別接到紅綠藍三種不同顏色燈珠上,實現(xiàn)RGB彩燈的效果。
6.3硬件設(shè)計
TIMER0的前三個通道分別為PA8、PA9和PA10,讀者直接對開發(fā)板上引出的排針進行測試即可。
![wKgZomY60oGANyKQAAFrLJs6s4Y480.png](https://file1.elecfans.com/web2/M00/E2/14/wKgZomY60oGANyKQAAFrLJs6s4Y480.png)
6.4代碼解析
本例程使用了兩個TIMER,其中TIMER5用來產(chǎn)生30ms的周期性中斷,在TIMER5的中斷中,對TIMER0的三個通道占空比進行調(diào)整,從而實現(xiàn)占空比可變的效果。
6.4.1主函數(shù)代碼解析
主函數(shù)代碼如下所示,主要包括串口初始化、LED初始化、RGB燈珠初始化(即timer0的三個通道初始化)、timer驅(qū)動初始化(該timer用于調(diào)整RGB燈珠PWM驅(qū)動時間)。
C++ int main(void) { //延時和公共驅(qū)動部分初始化 driver_init(); //打印串口初始化 bsp_uart_init(&BOARD_UART); //初始化LED組 bsp_led_group_init(); bsp_led_on(&LED2); bsp_led_off(&LED1); //TIMER0設(shè)置1M頻率,重載值設(shè)置100,PWM頻率為10K bsp_rgb_init(1000000,100);// //注冊rgb_switch函數(shù)到timer定時中斷的回調(diào)函數(shù) TIMER_INT.timer_updata_callback=rgb_switch; //初始化定時器,默認計數(shù)器頻率100K,周期值3000,中斷頻率100K/3000= 33HZ(30ms) bsp_timer_init(100000,3000); printf_log("\r\n RGB breathing lamp\r\n"); while(1) { } } |
6.4.2RGB燈珠初始化函數(shù)解析
RGB燈珠初始化函數(shù)如下,在此定義了RGB_TIMER_R、RGB_TIMER_G、RGB_TIMER_B三個燈的控制結(jié)構(gòu)體,并通過timer驅(qū)動進行配置。
6.4.3基礎(chǔ)定時器初始化及中斷處理函數(shù)
基礎(chǔ)定時器初始化配置代碼如下,在此用一個定時器TIMER5,并使能了其溢出中斷。該定時器用于控制RGB PWM輸出時間。
C 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_DAC_IRQn,0,0); } |
其中斷回調(diào)函數(shù)如下,通過該函數(shù)定時調(diào)整RGB三路PWM的占空比。
6.5實驗結(jié)果
將本例程代碼下載到紫藤派開發(fā)板中,使用示波器測量PA8、PA9、PA10上,可以看大三個通道占空比的變化。
本教程由GD32 MCU方案商聚沃科技原創(chuàng)發(fā)布,了解更多GD32 MCU教程,關(guān)注聚沃科技官網(wǎng)
-
PWM
+關(guān)注
關(guān)注
114文章
5199瀏覽量
214946 -
RGB
+關(guān)注
關(guān)注
4文章
801瀏覽量
58731 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5125瀏覽量
98292 -
Timer
+關(guān)注
關(guān)注
1文章
64瀏覽量
12824 -
GD32
+關(guān)注
關(guān)注
7文章
416瀏覽量
24496
發(fā)布評論請先 登錄
相關(guān)推薦
【GD32F470紫藤派開發(fā)板使用手冊】第九講 USART-printf打印實驗
![【<b class='flag-5'>GD32F470</b><b class='flag-5'>紫藤</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第九<b class='flag-5'>講</b> USART-printf打印<b class='flag-5'>實驗</b>](https://file1.elecfans.com/web2/M00/E5/D2/wKgaomZBd4yALE4KAAAvGTwv8Y8126.png)
【GD32F470紫藤派開發(fā)板使用手冊】第十一講 SPI-SPI NOR FLASH讀寫實驗
![【<b class='flag-5'>GD32F470</b><b class='flag-5'>紫藤</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第十一講 SPI-SPI NOR FLASH讀寫<b class='flag-5'>實驗</b>](https://file1.elecfans.com/web2/M00/E6/51/wKgZomZGuYCAbqxgAAAj5ISjOEU463.png)
GD32-Colibri-F207實驗板TIMER3_Input
GD32-Colibri-F207實驗板TIMER3_PWMIn
APT32F102 開發(fā)板使用手冊
【GD32F470紫藤派開發(fā)板使用手冊】第八講 ADC-規(guī)則組多通道采樣實驗
![【<b class='flag-5'>GD32F470</b><b class='flag-5'>紫藤</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第八<b class='flag-5'>講</b> ADC-規(guī)則組多通道采樣<b class='flag-5'>實驗</b>](https://file1.elecfans.com/web2/M00/E4/94/wKgZomZAItOAZWmeAAAqAQp_IEg785.png)
【GD32F470紫藤派開發(fā)板使用手冊】第十三講 USB_虛擬鍵盤實驗
![【<b class='flag-5'>GD32F470</b><b class='flag-5'>紫藤</b><b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第十三講 USB_虛擬鍵盤<b class='flag-5'>實驗</b>](https://file1.elecfans.com/web2/M00/E6/E6/wKgZomZJXQ-AfXsgAABAaZrUO3I092.png)
【GD32F303紅楓派開發(fā)板使用手冊】第二十講 SPI-SPI NAND FLASH讀寫實驗
![【<b class='flag-5'>GD32F</b>303紅楓<b class='flag-5'>派</b><b class='flag-5'>開發(fā)板</b><b class='flag-5'>使用手冊</b>】第二十<b class='flag-5'>講</b> SPI-SPI NAND FLASH讀寫<b class='flag-5'>實驗</b>](https://file1.elecfans.com/web2/M00/F1/AD/wKgaomZzisiAamI-AABGtAQwDgo073.png)
評論