1. 程式人生 > 其它 >RISC-V MCU應用教程之PWM輸出

RISC-V MCU應用教程之PWM輸出

簡介

CH32V103系列是以青稞V3A處理器為核心的32位通用MCU,該處理器是基於RISC-V開源指令集設計。片上集成了時鐘安全機制、多級電源管理、通用DMA控制器。此係列具有1路USB2.0主機/裝置介面、多通道12位ADC轉換模組、多通道TouchKey、多組定時器、多路IIC/USART/SPI介面等豐富的外設資源。

 

本章教程使用定時器1通道1PA8),通過PA8引腳產生PWM控制LEDLED1的亮度。

 

1PWM簡介及相關函式介紹

脈衝寬度調製(PWM)是一種模擬控制方式,其是利用微處理器的數字輸出對類比電路進行控制的一種非常有效的技術,廣泛應用在從測量、通訊到功率控制與變換的許多領域中。

CH32V103的高階定時器TIM1和通用定時器TIM2/3/4均可產生PWM輸出。

 

PWM輸出模式是定時器的基本功能之一。PWM輸出模式最常見的是使用重灌值確定PWM頻率,使用捕獲比較暫存器確定佔空比的方法。將OCxM域(比較捕獲通道x模式設定域)中置110b或者111b使用PWM模式1或者模式2,置OCxPE位(比較捕獲暫存器x預裝載使能位)使能預裝載暫存器,最後置ARPE 位(自動重灌預裝使能位)使能預裝載暫存器的自動重灌載。在發生一個更新事件時,預裝載暫存器的值才能被送到影子暫存器,所以在核心計數器開始計數之前,需要置UG位(更新事件產生位)來初始化所有暫存器。在PWM模式下,核心計數器和比較捕獲暫存器一直在進行比較,根據

CMS(中央對齊模式選擇)位,定時器能夠輸出邊沿對齊或者中央對齊的PWM訊號

 

邊沿對齊:使用邊沿對齊時,核心計數器增計數或者減計數,在PWM模式1的情景下,在核心計數器的值大於比較捕獲暫存器時,OCxREF上升為高;當核心計數器的值小於比較捕獲暫存器時,OCxREF下降為低。

中央對齊:使用中央對齊模式時,核心計數器執行在增計數和減計數交替進行的模式下,OCxREF在核心計數器和比較捕獲暫存器的值一致時進行上升和下降的跳變。但比較標誌在三種中央對齊模式下,置位的時機有所不同。在使用中央對齊模式時,最好在啟動核心計數器之前產生一個軟體更新標誌 (置UG位)。

 

關於PWM輸出具體資訊,可參考

CH32V103應用手冊。本章教程通過定時器1通道1產生PWM控制LED,其程式所用庫函式在定時器中斷教程中均已介紹,在此不再贅述。

 

2、硬體設計

本章教程通過定時器1通道1PA8)產生PWM控制LED燈,其中,定時器為CH32V103內部資源,無需進行硬體設計,只需進行LED連線即可,LEDGPIO引腳連線方式如下:

LED1PA8連線。

 

3、軟體設計

本章教程主要通過定時器產生PWM輸出控制LED燈,其中,led.c檔案與led.h檔案前面GPIO教程中已講解,在此不再介紹,本章主要介紹pwm.h檔案、pwm.c檔案以及main.c檔案,具體程式如下:

pwm.h檔案

 

pwm.c檔案

 

main.c檔案

 

main.c檔案主要包含相關函式的初始化以及while迴圈函式,在while迴圈中,將pwmval這個值設定為PWM比較值,也就是通過pwmval來控制PWM的佔空比,然後控制 pwmval的值從0變到300,然後又從300變到0,如此迴圈,因此 LED0 的亮度也會跟著從暗變到亮,然後又從亮變到暗。TIM_SetCompare1用於修改佔空比。

 

4、下載驗證

將編譯好的程式下載到開發板並復位,可以看到開發板LED1開始不停由暗變亮,再由亮變暗。