在线时间101 小时
UID3617445
注册时间2020-2-7
NXP金币213

TA的每日心情 | 开心 2025-7-10 13:07 |
---|
签到天数: 43 天 连续签到: 1 天 [LV.5]常住居民I
版主
  
- 积分
- 1524

- 最后登录
- 2025-7-10
|
LPC55S69之PWM
LPC55S69可以使用SC timer(SCT)或者ctimer来产生PWM,官方提供的ctimer例子比较好用,占空比和频率均可调。
但是,LPC55S69的SCT配置PWM在手册上没写清楚的,这里提供个例子,PWM的频率可在10Hz~1kHz之间可调,步进10Hz;占空比在1%~100%之间可调。
一、引脚。
二、外设。
三、代码。
- <font size="3" face="微软雅黑">#include "fsl_debug_console.h"
- #include "board.h"
- #include "fsl_sctimer.h"
- #include "pin_mux.h"
- #include <stdbool.h>
- #include "peripherals.h"
-
- int main(void) {
- uint8_t duty = 30; //1~100
- uint32_t freq = 10; // 10Hz~1kHz,step=10Hz
- CLOCK_AttachClk(BOARD_DEBUG_UART_CLK_ATTACH);
- BOARD_InitPins();
- BOARD_BootClockPLL150M();
- BOARD_InitDebugConsole();
- BOARD_InitBootPeripherals();
-
- SCTIMER_StopTimer(SCT0_PERIPHERAL, kSCTIMER_Counter_L);
- PRINTF("\r\nPWM OUTPUT SCT0_CLOCK_FREQ=%d",SCT0_CLOCK_FREQ);
- SCTIMER_SetupPwm(SCT0_PERIPHERAL, &SCT0_pwmSignalsConfig[0], kSCTIMER_EdgeAlignedPwm, freq, SCT0_CLOCK_FREQ, &SCT0_pwmEvent[0]);
- SCTIMER_UpdatePwmDutycycle(SCT0_PERIPHERAL, SCT0_OUTPUT_2,duty, SCT0_pwmEvent[0]);
- SCTIMER_StartTimer(SCT0_PERIPHERAL, kSCTIMER_Counter_L);
-
- while (1)
- {
- }
- }
- </font>
复制代码
四、说明。
1、使用。
改变freq和duty两个参数,即可输出不同参数的PWM。
2、分频系数。
其中,分频系数要根据需求来设置,如下图所示。
这里输出的频率较低,所以设置的分频系数较大,要输出高频率,可以调小分频系数,这里没有公式,多试几次就好。
3、输出固定低电平。
要想输出低电平(0%占空比或0频率),可以调用以下函数。
SCTIMER_StopTimer(SCT0_PERIPHERAL, kSCTIMER_Counter_L);
文章出处:点击
|
|