智能车制作
标题:
求助一段PWM程序
[打印本页]
作者:
__oO
时间:
2014-3-14 23:48
标题:
求助一段PWM程序
void pwm_set( uchar_t channel, /*通道选择*/
uchar_t aligned, /*对齐方式,0,左对齐,1中间对齐*/
uchar_t ppol, /*极性选择----0,开始低电平;1,开始高电平*/
uint16_t T, /*0,1---500k/T;2,3-----500k/T;*/
uint16_t duty){ /*4,5---2M/T;6,7-----2M/T*/
switch(channel)
{
case 0 : PWME_PWME0=0; /* Enable PWM 使能 */
PWMPOL_PPOL0=ppol; /* Duty=High Time 极性设置 */
PWMCAE_CAE0=aligned; /* Left-aligned 对齐方式设置 */
PWMPER0=(uchar_t)T; /* Frequency=SB/100=1K 周期寄存器设置 */
PWMDTY0=(uchar_t)duty; /* Duty cycle = 50% 占空比寄存器设置 */
PWME_PWME0=1; /* Enable PWM 使能 */
break;
case 1 : PWME_PWME1=0; /* Enable PWM 使能 */
PWMPOL_PPOL1=ppol; /* Duty=High Time 极性设置 */
PWMCAE_CAE1=aligned; /* Left-aligned 对齐方式设置 */
PWMPER1=(uchar_t)T; /* Frequency=SB/100=1K 周期寄存器设置 */
PWMDTY1=(uchar_t)duty; /* Duty cycle = 50% 占空比寄存器设置 */
PWME_PWME1=1; /* Enable PWM 使能 */
break;
case 2 : PWME_PWME2=0; /* Enable PWM 使能 */
PWMPOL_PPOL2=ppol; /* Duty=High Time 极性设置 */
PWMCAE_CAE2=aligned; /* Left-aligned 对齐方式设置 */
PWMPER2=(uchar_t)T; /* Frequency=SB/100=1K 周期寄存器设置 */
PWMDTY2=(uchar_t)duty; /* Duty cycle = 50% 占空比寄存器设置 */
PWME_PWME2=1; /* Enable PWM 使能 */
break;
case 3 : PWME_PWME3=0; /* Enable PWM 使能 */
PWMPOL_PPOL3=ppol; /* Duty=High Time 极性设置 */
PWMCAE_CAE3=aligned; /* Left-aligned 对齐方式设置 */
PWMPER3=(uchar_t)T; /* Frequency=SB/100=1K 周期寄存器设置 */
PWMDTY3=(uchar_t)duty; /* Duty cycle = 50% 占空比寄存器设置 */
PWME_PWME3=1; /* Enable PWM 使能 */
break;
case 4 : PWME_PWME4=0; /* Enable PWM 使能 */
PWMPOL_PPOL4=ppol; /* Duty=High Time 极性设置 */
PWMCAE_CAE4=aligned; /* Left-aligned 对齐方式设置 */
PWMPER4=(uchar_t)T; /* Frequency=SB/100=1K 周期寄存器设置 */
PWMDTY4=(uchar_t)duty; /* Duty cycle = 50% 占空比寄存器设置 */
PWME_PWME4=1; /* Enable PWM 使能 */
break;
case 5 : PWME_PWME5=0; /* Enable PWM 使能 */
PWMPOL_PPOL5=ppol; /* Duty=High Time 极性设置 */
PWMCAE_CAE5=aligned; /* Left-aligned 对齐方式设置 */
if(PWMCTL_CON45 == 1) //是否将通道45串为同一个输出通道
{
PWMPER45=T; /* Frequency=SB/100=1K 周期寄存器设置 */
PWMDTY45=duty; /* Duty cycle = 50% 占空比寄存器设置 */
}
else
{
PWMPER5=(uchar_t)T; /* Frequency=SB/100=1K 周期寄存器设置 */
PWMDTY5=(uchar_t)duty; /* Duty cycle = 50% 占空比寄存器设置 */
}
PWME_PWME5=1; /* Enable PWM 使能 */
break;
case 6 : PWME_PWME6=0; /* Enable PWM 使能 */
PWMPOL_PPOL6=ppol; /* Duty=High Time 极性设置 */
PWMCAE_CAE6=aligned; /* Left-aligned 对齐方式设置 */
PWMPER6=(uchar_t)T; /* Frequency=SB/100=1K 周期寄存器设置 */
PWMDTY6=(uchar_t)duty; /* Duty cycle = 50% 占空比寄存器设置 */
PWME_PWME6=1; /* Enable PWM 使能 */
break;
case 7 : PWME_PWME7=0; /* Enable PWM 使能 */
PWMPOL_PPOL7=ppol; /* Duty=High Time 极性设置 */
PWMCAE_CAE7=aligned; /* Left-aligned 对齐方式设置 */
PWMPER7=(uchar_t)T; /* Frequency=SB/100=1K 周期寄存器设置 */
PWMDTY7=(uchar_t)duty; /* Duty cycle = 50% 占空比寄存器设置 */
PWME_PWME7=1; /* Enable PWM 使能 */
break;
default: break;
}
}
对于swith里面case1,2,3,4等等不大了解,只是发现通道口不一样而已,其他赋值好像差不多额= =
而且这段函数是干嘛的?
(小白求大大指导)
作者:
tobeabh
时间:
2014-3-15 15:25
相当于把PWM——set这个函数封装起来了,可以用来初始化不用的通道
作者:
天边不够远
时间:
2014-3-16 16:29
是不是得把整个程序都贴出来啊, 看不懂这些。。。
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2