在线时间2 小时
UID3363956
注册时间2017-3-19
NXP金币0
TA的每日心情 | 开心 2017-3-31 13:54 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]初来乍到
新手上路

- 积分
- 48
- 最后登录
- 2017-5-20
|
[LPC54110开发板测试] 四、PWM实验
有了前边的基础,在进行PWM实验就简单了许多,增加一个PWM初始化函数,同时打开两路PWM,代码如下:
//PWM Initial
void pwmInit(void){
Chip_SCTPWM_Init(LPC_SCT);
Chip_SCTPWM_SetRate(LPC_SCT,10000);//PWM Clock=10000
Chip_IOCON_PinMuxSet(LPC_IOCON,1,3,IOCON_FUNC3|IOCON_MODE_INACT|IOCON_DIGITAL_EN|IOCON_INPFILT_OFF);
Chip_SCTPWM_SetOutPin(LPC_SCT,3,6);//GPIO1_3 PWM1
Chip_SCTPWM_SetDutyCycle(LPC_SCT,3,Chip_SCTPWM_PercentageToTicks(LPC_SCT,1));//duty=1
Chip_IOCON_PinMuxSet(LPC_IOCON,1,4,IOCON_FUNC3|IOCON_MODE_INACT|IOCON_DIGITAL_EN|IOCON_INPFILT_OFF);
Chip_SCTPWM_SetOutPin(LPC_SCT,4,7);//GPIO1_4 PWM2
Chip_SCTPWM_SetDutyCycle(LPC_SCT,4,Chip_SCTPWM_PercentageToTicks(LPC_SCT,1));//duty=1
Chip_SCTPWM_Start(LPC_SCT);
}
为了改变PWM的脉宽,我们增加几个16位变量:,duty0=1,duty1=1,ddut0=1,ddut1=2;
将改变PWM脉宽的函数添加到中断函数中:
if(duty0<98){ddut0++;}else{ddut0=1;}duty0+=ddut0;
if(duty1<98){ddut1++;}else{ddut1=2;}duty1+=ddut1;
Chip_SCTPWM_SetDutyCycle(LPC_SCT,3,Chip_SCTPWM_PercentageToTicks(LPC_SCT,duty0));
Chip_SCTPWM_SetDutyCycle(LPC_SCT,4,Chip_SCTPWM_PercentageToTicks(LPC_SCT,duty1));
再在main中增加PWM初始化函数:
pwmInit();
编译下载运行结果的虚拟串口采样数据见图41,硬件连接见图42,PWM波形数据见照片43,44。
|
|