首页 > 其他分享 >CH573 CH582 CH579外设PWM例程讲解

CH573 CH582 CH579外设PWM例程讲解

时间:2023-05-11 21:13:07浏览次数:48  
标签:CH579 64 例程 CH573 R8 PWMX 占空比 GPIO PWM

WCH官方提供的例程PWMX是8位的PWM,占空比可调,PWM 周期固定可选8 种周期,

int main()
{
    SetSysClock(CLK_SOURCE_PLL_60MHz);               //Fsys

    /* 配置GPIO */
    GPIOA_ModeCfg(GPIO_Pin_12, GPIO_ModeOut_PP_5mA); // PA12 - PWM4
    GPIOA_ModeCfg(GPIO_Pin_13, GPIO_ModeOut_PP_5mA); // PA13 - PWM5
    GPIOB_ModeCfg(GPIO_Pin_0, GPIO_ModeOut_PP_5mA);  // PB0 - PWM6
    GPIOB_ModeCfg(GPIO_Pin_4, GPIO_ModeOut_PP_5mA);  // PB4 - PWM7
    GPIOB_ModeCfg(GPIO_Pin_6, GPIO_ModeOut_PP_5mA);  // PB6 - PWM8
    GPIOB_ModeCfg(GPIO_Pin_7, GPIO_ModeOut_PP_5mA);  // PB7 - PWM9
    GPIOB_ModeCfg(GPIO_Pin_14, GPIO_ModeOut_PP_5mA); // PB14 - PWM10
//    GPIOB_ModeCfg(GPIO_Pin_23, GPIO_ModeOut_PP_5mA); // PB23 - PWM11 此脚复用为外部复位脚,需要关闭此功能才能开启PWM功能
    PWMX_CLKCfg(4);                                   // cycle = 4/Fsys
    PWMX_CycleCfg(PWMX_Cycle_64);                     // 周期 = 64*cycle
    PWMX_ACTOUT(CH_PWM4, 64 / 4, Low_Level, ENABLE);  // 25% 占空比
    PWMX_ACTOUT(CH_PWM5, 64 / 4, Low_Level, ENABLE);  // 25% 占空比
    PWMX_ACTOUT(CH_PWM6, 64 / 4, Low_Level, ENABLE);  // 25% 占空比
    PWMX_ACTOUT(CH_PWM7, 64 / 4, Low_Level, ENABLE);  // 25% 占空比
    PWMX_ACTOUT(CH_PWM8, 64 / 4, Low_Level, ENABLE);  // 25% 占空比
    PWMX_ACTOUT(CH_PWM9, 64 / 4, Low_Level, ENABLE);  // 25% 占空比
    PWMX_ACTOUT(CH_PWM10, 64 / 4, Low_Level, ENABLE); // 25% 占空比

    while(1);
}

代码是比较简单的,

1.设置对应的PWM引脚为输出方向,设置I/O驱动能力,

2.设置寄存器R8_PWM_CLOCK_DIV(范围1-255),配置PWM 的基准时钟频率;

3.设置PWM配置控制寄存器R8_PWM_CONFIG,设置PWM的模式、数据位宽、周期;

4.设置PWM输出极性配置寄存器R8_PWM_POLAR,配置对应PWMx的输出极性;

5.根据需要的占空比计算出数据,写入对应的数据保持寄存器R8_PWMx_DATA;

6.设置PWM输出使能寄存器R8_PWM_OUT_EN,开启对应的PWMx输出使能;

调整R8_PWMx_DATA寄存器可修改输出PWM的占空比,占空比计算公式:
Ncyc = RB_PWM_CYCLE_SEL ? (2^n-1) : (2^n)
(其中n=数据位宽),Ncyc 结果在31~256 之间。
PWMx输出有效电平的占空比 = R8_PWMx_DATA / Ncyc * 100%
PWMx输出频率Fpwmout = Fpwm / Ncyc = Fsys/R8_PWM_CLOCK_DIV / Ncyc

 

如果跑蓝牙功能,Fsys设置为60M最好不要改动,R8_PWM_CLOCK_DIV 范围是1-255,Ncyc为八档可调(31/32,63/64,127/128,255/256),所以频率不可以随意配置。

主频60M:最低频率为60M/255/256=919.12      约1k

               最高频率为60M/1/31=1935483.87   约2M

标签:CH579,64,例程,CH573,R8,PWMX,占空比,GPIO,PWM
From: https://www.cnblogs.com/risc5-ble/p/17386326.html

相关文章

  • AMD Xilinx AC701 单板运行IIC EEPROM例程
    概述AMDXilinxVitis内部集成了各种外设的例程,为工程师提供了快速上手的代码。AMDXilinx有很多开发板。各种单板的硬件参数不一定完全一致,有时需要根据单板硬件设计、Vivado中的BlockDesign设计,修改外设例程的参数。IICEEPROM例程更改。本文描述在AMDXilinxAC701单板运......
  • 例程练习1
    例程练习4.1代码:CREATEUSERuser1WITHPASSWORD"user1@123";GRANTSELECTONTABLEstudentTOuser1;运行结果:4.2代码:CREATEUSERuser2WITHPASSWORD"user2@123";CREATEUSERuser3WITHPASSWORD"user3@123";GRANTALLP......
  • 例程练习3
    例程练习4.11代码:CREATEROLErole1PASSWORD"role1@123";尝试登录role1,但是登录被拒绝,应该是没有登录权限;创建新角色role2;CREATEROLErole2LOGINPASSWORD'role2@123';此时新角色可以登录,使用新角色在无权限的情况下对student表操作;给角色2授权GRANTSELECT,UPDA......
  • 例程练习2
    例程练习4.8代码:尝试使用user1账户收回\c-user1REVOKEUPDATE(sno)ONTABLEstudentFROMuser4;接着使用管理员账户收回REVOKEUPDATE(sno)ONTABLEstudentFROMuser4;运行结果4.9代码:user4账户尝试收回接着使用管理员账户收回REVOKESELECTONT......
  • OpenCL入门例程
    OpenCL是一个并行计算库。在VisualStudio中的配置类似于OpenCV,只需要把开发包下载下来,里面有include、lib、bin文件夹,在项目设置里添加上就行了。一般Windows系统自己带的就有OpenCL.dll,在Windows/System32/文件夹里。不同于英伟达的CUDA编程自己搞了个编译器集成到VisualStudio......
  • ch583/ch582/ch573/ch571 central(主机)程序
    本程序是在CH582m上运行的,一、主从连接主机这里可以根据从机的MAC地址进行连接。staticuint8_tPeerAddrDef[B_ADDR_LEN]={0x02,0x02,0x03,0xE4,0xC2,0x84};一般从机在使用的时候不做其他配置时使用的是芯片本身的MAC地址,可以通过修改从机端对应的MAC地址和主机进行连......
  • 正的浮点数相加的示例程序 Verilog
    modulefloat_adder( input        clk, input       rst_n, input        en, input   [31:0]  aIn, input   [31:0]  bIn, outputreg     busy, outputreg   out......
  • BLE无线性能粗测-CH582 CH592 CH573
    BLE无线信号好的基础是硬件设计要遵循一定的要求,具体如下:CH582M原理图设计如果没有遵循以上要求,BLE无线信号是没有办法保证的,后面的测试方法可以继续,可能改善,但是可能影响不大(举个例子,身高179cm,随便穿个鞋子就180+了,如果只有150cm,想通过穿鞋子达到180+,你品品)。测试第一步:下载......
  • 数据库3.49到3.68例程
    3.49查询每个学生及其选修课程的情况3.50对[例33]用自然连接完成3.51查询选修2号课程且成绩在90分以上的所有学生的学号和姓名。3.52查询每一门课的间接先修课(即先修课的先修课)3.53改写[3.49查询每个学生及其选修课程的情况3.54查询每个学生的学号、姓名、选修的......
  • [apue] 一图读懂 Unix 时间日期例程相互关系
    概览 开门见山先上图界定一些术语,方便后面说明:GMT:格林威治平均时,太阳每天经过位于英国伦敦郊区的皇家格林威治天文台的时间为中午12点,1972年之前使用的国际标准时间,因地球在它的椭圆轨道里的运动速度不均匀,这个时刻可能和实际的太阳时相差16分钟。UTC:国际标准时间,相当......