4041|0

655

帖子

29

TA的资源

版主

楼主
 

【Lpc54100】 四通道PWM详解 [复制链接]

    首先需要在工程中加入sct_pwm_5410x.cstc_541x.c两个文件都在lpc_chip/chip_5410x中。然后全部代码如下:
  1. #define SCT_PWM            LPC_SCT
  2. #define TICKRATE_HZ     100
  3. int cnt1=0;
  4. int32_t main(void)
  5. {
  6.         SystemCoreClockUpdate();
  7.         SysTick_Config(SystemCoreClock/1000);
  8.         Board_SetupMuxing();
  9.         Chip_SCTPWM_Init(SCT_PWM);//初始化STC
  10.         Chip_SCTPWM_SetRate(SCT_PWM, 10000);//波特率为10K
  11.         //四个引脚的功能设定为SCT0_OUT0
  12.         Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 7, IOCON_FUNC2 | IOCON_MODE_INACT | IOCON_DIGITAL_EN | IOCON_INPFILT_OFF);
  13.         Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 8, IOCON_FUNC2 | IOCON_MODE_INACT | IOCON_DIGITAL_EN | IOCON_INPFILT_OFF);
  14.         Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 29, IOCON_FUNC2 | IOCON_MODE_INACT | IOCON_DIGITAL_EN | IOCON_INPFILT_OFF);       
  15.         Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 30, IOCON_FUNC2 | IOCON_MODE_INACT | IOCON_DIGITAL_EN | IOCON_INPFILT_OFF);

  16.         Chip_SCTPWM_SetOutPin(SCT_PWM, 1, 0);//P0_7引脚,设置标号为1
  17.         Chip_SCTPWM_SetOutPin(SCT_PWM, 2, 1);//P0_8引脚,设置标号为2
  18.         Chip_SCTPWM_SetOutPin(SCT_PWM, 3, 2);//P0_29引脚,设置标号为3
  19.         Chip_SCTPWM_SetOutPin(SCT_PWM, 4, 3);//P0_30引脚,设置标号为4
  20.         Chip_SCTPWM_Start(SCT_PWM);//启动PWM信号
  21.         SysTick_Config(SystemCoreClock / TICKRATE_HZ);
  22.    while(1){
  23.           cnt1++;
  24.           if(cnt1>100){
  25.             cnt1=0;}
  26.       Chip_SCTPWM_SetDutyCycle(SCT_PWM, 1, Chip_SCTPWM_PercentageToTicks(LPC_SCT, cnt1));
  27.                 Chip_SCTPWM_SetDutyCycle(SCT_PWM, 2,Chip_SCTPWM_PercentageToTicks(LPC_SCT, cnt1));
  28.         Chip_SCTPWM_SetDutyCycle(SCT_PWM,3 , Chip_SCTPWM_PercentageToTicks(LPC_SCT, cnt1));
  29.                 Chip_SCTPWM_SetDutyCycle(SCT_PWM, 4,Chip_SCTPWM_PercentageToTicks(LPC_SCT, cnt1));       
  30.           __WFI();        
  31.         }
  32. }
复制代码
解释其中关键代码,
  1. Chip_SCTPWM_Init(SCT_PWM);//初始化STC
  2.          Chip_SCTPWM_SetRate(SCT_PWM, 10000);//波特率为10K
复制代码
这两个是相关设置,一个初始化一个设置波特率。
引脚设置这里以设置P0_29为例。
  1. Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 29, IOCON_FUNC2 | IOCON_MODE_INACT | IOCON_DIGITAL_EN | IOCON_INPFILT_OFF);
复制代码

四个引脚功能的设定参见数据手册,如下图:
可看到引脚从上往下的第三个功能为SCT0_OUT2功能,所以功能选择为IOCON_FUNC2
  1. Chip_SCTPWM_SetOutPin(SCT_PWM, 3, 2); //P0_29引脚,设置标号为3
复制代码
这里见数据手册155页。如下图:
可见PIO0_29脚是与SCT0_OUT2相连的,这也就是函数中最后一个参数2的原因,然后倒数第二个命名为3是给它的一个标号,随便什么数字都行。下面会用到。
  1. Chip_SCTPWM_SetDutyCycle(SCT_PWM,3 , Chip_SCTPWM_PercentageToTicks(SCT_PWM, cnt1));
复制代码
这个函数设置P0_29脚的占空比,其中的3是因为之前将P0_29脚的SCT0_OUT2编号为3了,然后后面函数是设置占空比。
循环函数中是每经过一个__WFI()之后占空比加1,到100后变为0

下面是效果图:

此帖出自NXP MCU论坛
点赞 关注
个人签名QQ:252669569
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表