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:无法初始化 PWM 模块0通道0

Guru**** 657980 points
Other Parts Discussed in Thread: EK-TM4C123GXL, TM4C123GH6PM
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1063611/tm4c123gh6pm-cannot-initialize-pwm-module-0-channel-0

器件型号:TM4C123GH6PM
主题中讨论的其他器件:EK-TM4C123GXLTM4C123EK-LM4F120XL

大家好、 我正在尝试编写一个简单的程序、该程序将占空比设置为每秒递减10、因此引脚 B0将以其淡出的方式驱动 LED、然后在达到0%占空比后返回100%占空比。 首先、我只是尝试驱动输出引脚以实现恒定(40%)占空比。 但是,每次我调用 PWMGenConfigure()时,我都会得到一个 HardFault。 这是使用通道0初始化 PWM 模块的代码。  

void initPWM()
{
	SysCtlPWMClockSet(SYSCTL_PWMDIV_1);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
	GPIOPinConfigure(GPIO_PB6_M0PWM0);
	GPIOPinTypePWM(GPIO_PORTB_BASE,GPIO_PIN_6);
	
	PWMGenConfigure(PWM0_BASE,PWM_GEN_0,PWM_GEN_MODE_DOWN);
	//set 1 lkHZ PWM frequency (16,000 / 16,000,0000) = 1 kHZ
	PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, 160000);
	//set duty cycle to 40 % by loading in 6400 to PWM0CMPA. Every time we have had 6400 positive pulses in a frequency of 16,000, we will reset, meaning we were driving the pin high for 40% of the PWM period 
	PWMPulseWidthSet(PWM0_BASE,PWM_OUT_0,6400 - 1);
	
}

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

    还应注意以下呼吁:

    while !(SysCtlPeripheralReady(SYSCTL_PERIPH_PWM0)){}


    永远挂起

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

    您好!

     对于代码片段,我不会发现 initPWM()函数有什么问题。 不确定导致挂起的原因。  

     我将建议您运行 TivaWare 示例 PWM_INvert。 该示例使用完全相同的引脚在 PB6引脚上输出 PWM。  您只需针对所需的占空比进行修改即可。 您可以在 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c123gxl\wm_invert 中找到示例工程。

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

    您好、Charles、对回复缓慢表示歉意。 我尝试了该示例,奇怪的是,它也在该函数的 map_PwmGenConfigure()上挂起。

    这是否只是电路板问题? 我可以尝试不同的 PWM 外设、看看会发生什么情况

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

    您好、Elliott、

     我刚才按原样运行了示例。 我看不到任何问题。 请参阅下面的终端输出示例窗口的屏幕截图。  

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

    您好、Elliott、

     另请注意、PB6和 PD0通过 LaunchPad 上的0欧姆电阻器进行连接。 如果您有驱动 PD0和 PB6的东西、则可能看不到正确的 PWM。 但是、我认为它不应挂起在  MAP_PwmGenConfigure 上。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="504098" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1063611/tm4c123gh6pm-cannot-initialize-pwm-module-0-channel-0/3937782 #3937782"]是否只是电路板问题?

    您能否确认电路板上的器件型号?

    某些 TM4C123器件不包含 PWM 模块、这可能会解释尝试访问 PMW0时的挂起/硬故障。

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

    已在 MOPWM6上尝试 PWMGenConfigure、但它也挂起。 我的电路板看起来可能不包含 PWM 模块?

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

    电路板编号为 EK-LM4F120XL

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

    您好、Elliott、

       我一开始感到困惑、因为您的主题标题为"TM4C123GH6PM:无法初始化 PWM 模块0通道0"。 TM4C123GH6PM 是 EK-TM4C123GXL LaunchPad 上具有两个 PWM 模块的 MCU。  EK-LM4F120XL 是用于上一代 MCU 的电路板、我们不再支持它、它没有 PWM 模块。 您可以 从 TI store https://www.ti.com/tool/EK-TM4C123GXL 以12.99美元的价格购买 EK-TM4C123GXL。  

     另外一件事是、  您无法在 EK-LM4F120XL 上使用 TivaWare、因为 MCU 根本不兼容。  

     

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

    我明白了。 谢谢你查尔斯!