TA的每日心情 | 无聊 2021-4-7 11:23 |
---|
签到天数: 27 天 连续签到: 1 天 [LV.4]偶尔看看III
|
这次还是点灯吧,换个点法,用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[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)
{
}
}
四、说明。
1、使用。 改变freq和duty两个参数,即可输出不同参数的PWM。 2、分频系数。 其中,分频系数要根据需求来设置,如下图所示。
这里输出的频率较低,所以设置的分频系数较大,要输出高频率,可以调小分频系数,这里没有公式,多试几次就好。 3、输出固定低电平。 要想输出低电平(0%占空比或0频率),可以调用以下函数。 SCTIMER_StopTimer(SCT0_PERIPHERAL, kSCTIMER_Counter_L);
点灯效果大家自行想象吧。因为第一次用NXP的板子,所以还是希望学习下基础内容。
|
|