[评测分享]
【RISC-V 沁恒微-CH585M-R1开发板试用体验】+呼吸灯效
#板卡评测
620 人阅读
|
0 人回复
|
2025-06-24
TA的每日心情 | 奋斗 昨天 22:17 |
|---|
签到天数: 2643 天 连续签到: 35 天 [LV.Master]伴坛终老
司徒
- 积分
- 40462
|
承接上期的点灯贴,今天来分享一下,输出两路PWM,让板上的LED0、LED1实现呼吸灯效果。
因为CH585集成定时器Timer和脉宽调制PWM资源:
① - 4组26位定时器,16MHz主频定时可达4.2S
② - 4路捕捉/采样,支持上升沿/下降沿/双边沿
③ - 4路26位PWM输出
④ - 8路8位PWM输出或前6路16位PWM输出
例程中的PWMX工程也列举出7路PWM,另外的一路PWM,即PWM11复用管脚PB23,该管脚从电路原理图上看是RST#复位按键,如果需要该路PWM输出,需要关闭RST#复位按键功能,将PB23复用成PWM11。今天笔者只驱动PWM4、PWM5两路通道,用来连接到板上LED0、LED1管脚上,实现呼吸灯效果,并将当前的PWM占空比值通过串口输出打印。
实验代码:
- #include "CH58x_common.h"
- #include "ch58x_drv_ledc.h"
- uint8_t dutyCycle = 0;
- uint8_t direction = 0;
- /*********************************************************************
- * @fn DebugInit
- *
- * @brief 调试初始化
- *
- * @return none
- */
- void DebugInit(void)
- {
- GPIOA_SetBits(GPIO_Pin_14);
- GPIOPinRemap(ENABLE, RB_PIN_UART0);
- GPIOA_ModeCfg(GPIO_Pin_15, GPIO_ModeIN_PU);
- GPIOA_ModeCfg(GPIO_Pin_14, GPIO_ModeOut_PP_5mA);
- UART0_DefInit();
- }
- /*********************************************************************
- * @fn main
- *
- * @brief 主函数
- *
- * @return none
- */
- int main()
- {
- HSECFG_Capacitance(HSECap_18p);
- SetSysClock(CLK_SOURCE_HSE_PLL_62_4MHz);
- GPIOA_ModeCfg(GPIO_Pin_12, GPIO_ModeOut_PP_5mA); // PA12 - PWM4
- GPIOA_ModeCfg(GPIO_Pin_13, GPIO_ModeOut_PP_5mA); // PA13 - PWM5
- PWMX_CLKCfg(4); // cycle = 4/Fsys
- PWMX_CycleCfg(PWMX_Cycle_64); // 周期 = 64*cycle
- PWMX_ACTOUT(CH_PWM4, 64 / 100, Low_Level, ENABLE); // 1% 占空比
- PWMX_ACTOUT(CH_PWM5, 64 / 100, Low_Level, ENABLE); // 1% 占空比
- /* 配置串口调试 */
- DebugInit();
- while(1)
- {
- if(direction == 0)
- {
- dutyCycle+=10;
- }
- else if(direction == 1)
- {
- dutyCycle-=10;
- }
- DelayMs(80);
- PWMX_ACTOUT(CH_PWM4, (64 * dutyCycle)/ 100, Low_Level, ENABLE); // PWM4占空比更改
- PWMX_ACTOUT(CH_PWM5, (64 * dutyCycle)/ 100, Low_Level, ENABLE); // PWM5占空比更改
- if(dutyCycle > 90)
- direction = 1;
- else if(dutyCycle < 10)
- direction = 0;
- printf("dutyCycle = %d\r\n",dutyCycle);
- }
- }
复制代码 硬件连接:
正如上图所示,PA14连接串口调试工具的RX,PA15连接串口调试工具的TX,PA12连接LED0,PA13连接LED1。工程编译完成后,使用“WCHISPStudio”工具下载,关于下载这里不再详细赘述,断电后杜邦线短接PB22,然后再上电下载。
串口输出:
LED0、LED1“同呼吸共命运,步调一致”,效果如下:
|
|
|
|
|
|
|
|
|