This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C123GH6PM:如何为48位 PWM?配置通用定时器

Guru**** 2487425 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/737385/tm4c123gh6pm-how-to-configure-universal-timer-for-48bit-pwm

器件型号:TM4C123GH6PM

大家好、:

我使用 tm4c130hpm 是因为没有 PWM 模块、所以我使用通用计时器来生成 PWM。  数据手册说、它可以配置为24/48BIT PWM 模块。   

“GPTM 支持简单的 PWM 生成模式。 在 PWM 模式中,定时器被配置为24位或48位递减计数器,其初值由 GPTMTnILR 和 GPTMTnPR 寄存器定义。”

但官方参考代码是16位计时器 PWM。   我参考官方代码编写了自己的应用代码、但遗憾的是、它未成功配置为24/48位计时器 PWM。

代码如下所示。 是否有办法解决这个问题? 非常感谢。

uint32_t clk;

ROM_GPIOPinTypeGPIOInput (GPIO_PORTB_BASE、GPIO_PIN_4);

ROM_SysCtlPeripheralEnable (SYSCTL_Periph_Timer1);

ROM_GPIOPinConfigure (GPIO_PB4_T1CCP0);

ROM_GPIOPINTypeTimer (GPIO_PORTB_BASE、 GPIO_PIN_4);

TimerConfigure (Timer1_base、timer_CFG_A_PWM);

TimerLoadSet (Timer1_base、timer_A、 16000000);

CLK = TimerLoadGet (Timer1_base、timer_A);

TimerMatchSet (Timer1_base、timer_A、clk/2);

TimerEnable (Timer1_base、timer_A); 

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Alex、您好!

    额外的位来自预分频器、因此您还需要使用 TimerPrescaleSet 来加载24位的高8位。 因此、高8位进入预分频、剩余16位进入主加载寄存器。