|
首先需要在工程中加入sct_pwm_5410x.c与stc_541x.c两个文件都在lpc_chip/chip_5410x中。然后全部代码如下: - #define SCT_PWM LPC_SCT
- #define TICKRATE_HZ 100
- int cnt1=0;
- int32_t main(void)
- {
- SystemCoreClockUpdate();
- SysTick_Config(SystemCoreClock/1000);
- Board_SetupMuxing();
- Chip_SCTPWM_Init(SCT_PWM);//初始化STC
- Chip_SCTPWM_SetRate(SCT_PWM, 10000);//波特率为10K
- //四个引脚的功能设定为SCT0_OUT0
- Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 7, IOCON_FUNC2 | IOCON_MODE_INACT | IOCON_DIGITAL_EN | IOCON_INPFILT_OFF);
- Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 8, IOCON_FUNC2 | IOCON_MODE_INACT | IOCON_DIGITAL_EN | IOCON_INPFILT_OFF);
- Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 29, IOCON_FUNC2 | IOCON_MODE_INACT | IOCON_DIGITAL_EN | IOCON_INPFILT_OFF);
- Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 30, IOCON_FUNC2 | IOCON_MODE_INACT | IOCON_DIGITAL_EN | IOCON_INPFILT_OFF);
- Chip_SCTPWM_SetOutPin(SCT_PWM, 1, 0);//P0_7引脚,设置标号为1
- Chip_SCTPWM_SetOutPin(SCT_PWM, 2, 1);//P0_8引脚,设置标号为2
- Chip_SCTPWM_SetOutPin(SCT_PWM, 3, 2);//P0_29引脚,设置标号为3
- Chip_SCTPWM_SetOutPin(SCT_PWM, 4, 3);//P0_30引脚,设置标号为4
- Chip_SCTPWM_Start(SCT_PWM);//启动PWM信号
- SysTick_Config(SystemCoreClock / TICKRATE_HZ);
- while(1){
- cnt1++;
- if(cnt1>100){
- cnt1=0;}
- Chip_SCTPWM_SetDutyCycle(SCT_PWM, 1, Chip_SCTPWM_PercentageToTicks(LPC_SCT, cnt1));
- Chip_SCTPWM_SetDutyCycle(SCT_PWM, 2,Chip_SCTPWM_PercentageToTicks(LPC_SCT, cnt1));
- Chip_SCTPWM_SetDutyCycle(SCT_PWM,3 , Chip_SCTPWM_PercentageToTicks(LPC_SCT, cnt1));
- Chip_SCTPWM_SetDutyCycle(SCT_PWM, 4,Chip_SCTPWM_PercentageToTicks(LPC_SCT, cnt1));
- __WFI();
- }
- }
复制代码解释其中关键代码, - Chip_SCTPWM_Init(SCT_PWM);//初始化STC
- Chip_SCTPWM_SetRate(SCT_PWM, 10000);//波特率为10K
复制代码这两个是相关设置,一个初始化一个设置波特率。 引脚设置这里以设置P0_29为例。 - Chip_IOCON_PinMuxSet(LPC_IOCON, 0, 29, IOCON_FUNC2 | IOCON_MODE_INACT | IOCON_DIGITAL_EN | IOCON_INPFILT_OFF);
复制代码
四个引脚功能的设定参见数据手册,如下图: 可看到引脚从上往下的第三个功能为SCT0_OUT2功能,所以功能选择为IOCON_FUNC2。 - Chip_SCTPWM_SetOutPin(SCT_PWM, 3, 2); //P0_29引脚,设置标号为3
复制代码这里见数据手册155页。如下图: 可见PIO0_29脚是与SCT0_OUT2相连的,这也就是函数中最后一个参数2的原因,然后倒数第二个命名为3是给它的一个标号,随便什么数字都行。下面会用到。 - Chip_SCTPWM_SetDutyCycle(SCT_PWM,3 , Chip_SCTPWM_PercentageToTicks(SCT_PWM, cnt1));
复制代码这个函数设置P0_29脚的占空比,其中的3是因为之前将P0_29脚的SCT0_OUT2编号为3了,然后后面函数是设置占空比。 循环函数中是每经过一个__WFI()之后占空比加1,到100后变为0;
下面是效果图:
|
|