PWM:Pulse Width Modulation,脈沖寬度調制。
單片機實現PWM輸出的方式有很多種,有通過IO延時翻轉實現的,比如:
左右滑動查看完整內容
while(1) { IO口高電平 Delay延時 IO口低電平 Delay延時 }
也有通過定時器中斷控制IO高低電平輸出實現的。
定時器中斷配置——>啟動定時器——>響應中斷,控制IO高低電平
當然,本文通過,瑞薩RA8D1單片機通用PWM定時器(GPT,General PWM Timer)輸出PWM波形,這樣既避免了占用CPU資源,又避免了誤差(精度相對很高)。
下面手把手教大家基于e2studio環境下,實現RA8單片機輸出PWM的方法。
準備工作
01下載并安裝e2studio工具
下載地址,推薦瑞薩官方的GitHub:
e2studio工具
https://github.com/renesas/fsp/releases
我們這里基于Windows環境,安裝exe文件,基本根據提示信息一路next即可。這里不再詳述。
02準備RA8D1開發板
我們這里以瑞薩RA8D1單片機為例:
(當然,其實RA系列單片機也類似)
RA8單片機PWM輸出方法
本文就瑞薩官方集成開發工具e2studio,它是瑞薩單片機一站式編程工具,只需要動動鼠標點一點就能創建一個單片機工程。
01打開e2studio創建PWM項目
我們命名項目名稱為:RA8D1_PWM
選擇對應芯片型號:R7FA8D1BEC
只需要動動鼠標“點一點”,一個完整的工程就創建好了。
02配置工程
我們使用RA8D1單片機通用PWM定時器(General PWM Timer)GPT4,引腳P301輸出PWM。
這里配置時鐘、添加GPT模塊以相關配置。
配置時鐘:
GPT4使用PCLKD分頻作為時鐘源
配置引腳:
我們使用GPT4的P301作為PWM輸出引腳。
新建定時器模塊:
我們添加定時器模塊并配置相關屬性(配置常用參數,其實默認即可)。
03添加源代碼
我們這里簡單添加一個gpt4模塊(源代碼文件),如圖:
bsp_gpt_pwm_output.c源代碼:
左右滑動查看完整內容
#include"bsp_gpt_pwm_output.h" /* GPT初始化函數 */ voidGPT_PWM_Init(void) { /* 初始化 GPT 模塊 */ R_GPT_Open(&g_timer_gpt4_ctrl, &g_timer_gpt4_cfg); /* 啟動 GPT 定時器 */ R_GPT_Start(&g_timer_gpt4_ctrl); } /** 設置PWM占空比 @param duty 占空比范圍:0~100 % */ voidGPT_PWM_SetDuty(uint8_tduty) { timer_info_tinfo; uint32_tcurrent_period_counts; uint32_tduty_cycle_counts; if(duty >100) duty =100;//限制占空比范圍:0~100 /* 獲得GPT的信息 */ R_GPT_InfoGet(&g_timer_gpt4_ctrl, &info); /* 獲得計時器一個周期需要的計數次數 */ current_period_counts = info.period_counts; /* 根據占空比和一個周期的計數次數計算GTCCR寄存器的值 */ duty_cycle_counts = (uint32_t)(((uint64_t) current_period_counts * duty) /100); /* 最后調用FSP庫函數設置占空比 */ R_GPT_DutyCycleSet(&g_timer_gpt4_ctrl, duty_cycle_counts, GPT_IO_PIN_GTIOCB); }
bsp_gpt_pwm_output.h頭代碼:
左右滑動查看完整內容
#ifndef__BSP_GPT_PWM_OUTPUT_H #define__BSP_GPT_PWM_OUTPUT_H #include"hal_data.h" voidGPT_PWM_Init(void); voidGPT_PWM_SetDuty(uint8_tduty); #endif
我們這里只有兩個簡單函數,在我們代碼中添加GPT_PWM_Init即可實現(配置中的)200KHz,占空比80%的PWM波形輸出。
04演示效果
下圖是我們配置200KHz,占空比80%的PWM波形:
根據源碼,你能發現,我們只需要初始化(配置好)PWM輸出,后面就不會占用CPU資源。
我們提供了一個簡單的接口,修改占空比,如果需要根據需求修改占空比,我們調用一下接口即可。比如我們修改占空比為60%:
當然,更多參數,我們可以根據自己情況封裝函數接口。
-
單片機
+關注
關注
6055文章
44788瀏覽量
643362 -
PWM
+關注
關注
115文章
5277瀏覽量
216872 -
瑞薩
+關注
關注
36文章
22343瀏覽量
87451 -
中斷
+關注
關注
5文章
902瀏覽量
42273 -
定時器
+關注
關注
23文章
3266瀏覽量
116381
原文標題:瑞薩RA8系列教程 | RA8輸出PWM實現方法
文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
瑞薩RA8D1 CEU介紹與使用說明

評論