|
楼主 |
发表于 2015-1-13 14:25:18
|
显示全部楼层
学妹真是个细心的人, 如法泡制,贴个苏大的库改编的设置涵数,算是抛砖引玉
- //=========================================================================
- //函数名称:pwm_duty
- //功能概要:pwm模块占空比调置
- //参数说明:tpmModule:模块号:0、1、2
- // channel: 通道号:0-6
- //period :周期 单位微秒(比如0.1ms为100,1ms为1000)
- //duty :占空比 1-100
- //函数返回:无
- //=========================================================================
- void pwm_duty(uint_8 tpmModule,uint_8 channel,uint_32 period,uint_8 duty)
- {
- //与TPM的计算方法一致:PLL/2时钟48000Khz/1000*0.1(ms), 0.1ms中断一次,0.2ms为一个周期
- period=48000*period/1000;
- TPM_ARR[tpmModule]->MOD = period;
- TPM_ARR[tpmModule]->SC = TPM_SC_TOIE_MASK|TPM_SC_CMOD(1);
- //设置TPM为边沿对齐pwm
- TPM_CnSC_REG(TPM_ARR[tpmModule],channel)=TPM_CnSC_MSB_MASK|TPM_CnSC_ELSA_MASK;
- TPM_CnV_REG(TPM_ARR[tpmModule],channel)=period*duty/100;
- }
复制代码 |
|