雪孩爱雪 发表于 2020-11-12 15:59:58

【NXP OKdo E1双核Cortex M33开发板】试用3:LPC55S69之PWM

这次还是点灯吧,换个点法,用PWM波点。
LPC55S69可以使用SC timer(SCT)或者ctimer来产生PWM,官方提供的ctimer例子比较好用,占空比和频率均可调。
但是,LPC55S69的SCT配置PWM在手册上没写清楚的,这里提供个例子,PWM的频率可在10Hz~1kHz之间可调,步进10Hz;占空比在1%~100%之间可调。
一、引脚

二、外设


三、代码。
#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, kSCTIMER_EdgeAlignedPwm, freq, SCT0_CLOCK_FREQ, &SCT0_pwmEvent);
    SCTIMER_UpdatePwmDutycycle(SCT0_PERIPHERAL, SCT0_OUTPUT_2,duty, SCT0_pwmEvent);
    SCTIMER_StartTimer(SCT0_PERIPHERAL, kSCTIMER_Counter_L);

    while (1)
    {
    }
}
四、说明。
1、使用。改变freq和duty两个参数,即可输出不同参数的PWM。2、分频系数。其中,分频系数要根据需求来设置,如下图所示。这里输出的频率较低,所以设置的分频系数较大,要输出高频率,可以调小分频系数,这里没有公式,多试几次就好。3、输出固定低电平。要想输出低电平(0%占空比或0频率),可以调用以下函数。SCTIMER_StopTimer(SCT0_PERIPHERAL, kSCTIMER_Counter_L);
点灯效果大家自行想象吧。因为第一次用NXP的板子,所以还是希望学习下基础内容。


页: [1]
查看完整版本: 【NXP OKdo E1双核Cortex M33开发板】试用3:LPC55S69之PWM

Baidu
map