NXP MCU 技术论坛
直播中

王越建

8年用户 1530经验值
私信 关注
[问答]

如何更改MCUXpresso上的CTIMER PWM设置?

我正在使用 LPC802 处理器生成 PWM 信号。我将 CtiMER0 (PIO0_9) 设置为 3kHz %50 占空比 PWM,还为 GPIO 切换设置了 600Hz MRT 中断。但是 PWM 从低开始。我怎样才能改变它从高开始?我添加了我的信号图片和我的主要代码。

回帖(1)

王树林

2024-6-3 17:04:04
您可以通过更改 CTIMER 控制寄存器 (CCR) 中的配置来更改 CTIMER PWM 设置。

在MCUXpresso中,您可以使用以下代码更改 PWM 从高开始:

CTIMER0->CCR &= ~(1 << 0);

这将关闭计数器并将其重置为零。然后,您需要在配置寄存器中更改 PWM 设置:

CTIMER0->CR = CTIMER_CR_CEN_MASK;

CTIMER0->MR[0] = 150;

CTIMER0->MR[1] = 75;

CTIMER0->PWMC = CTIMER_PWMC_PWMEN0_MASK | CTIMER_PWMC_PWMEN1_MASK;

这将设置一个 3kHz,50%占空比的 PWM 信号,从高电平开始。 您可以根据需要更改 MR[0] 和 MR[1] 寄存器来更改频率和占空比。

完整的代码应如下所示:

CTIMER0->CCR &= ~(1 << 0);

CTIMER0->CR = CTIMER_CR_CEN_MASK;

CTIMER0->MR[0] = 150;

CTIMER0->MR[1] = 75;

CTIMER0->PWMC = CTIMER_PWMC_PWMEN0_MASK | CTIMER_PWMC_PWMEN1_MASK;

在设置 PWM 之后,您可以使用以下代码配置 MRT 中断:

MRT0->INTVAL0 = 12000000 / 600 - 1;

MRT0->CTRL |= MRT_CTRL_INTEN_MASK;

MRT0->CHANNEL[0].STAT = MRT_CHANNEL_STAT_IRQ_FLAG_MASK;

在此示例中,将产生一个 600Hz 的 MRT 中断,并将 MRT0_CH0_STAT 寄存器的 IRQ_FLAG 位设置为零。

请注意,在更改 CTIMER 和 MRT 寄存器之前,请确保禁用它们的时钟。在此之后,您可以重新启用它们的时钟以开始 PWM 和 MRT 中断。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分