查看: 3359|回复: 0

[分享] [LPC54110开发板测试] 四、PWM实验

[复制链接]
  • TA的每日心情
    开心
    2017-3-31 13:54
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    6

    主题

    12

    帖子

    0

    新手上路

    Rank: 1

    积分
    48
    最后登录
    2017-5-20
    发表于 2017-4-29 06:54:42 | 显示全部楼层 |阅读模式
    [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。

    41

    41

    42

    42

    43

    43

    44

    44
    开心每一天
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-25 08:51 , Processed in 0.079217 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表