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.
大家好、 我正在尝试编写一个简单的程序、该程序将占空比设置为每秒递减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 中找到示例工程。
您好、Elliott、
我刚才按原样运行了示例。 我看不到任何问题。 请参阅下面的终端输出示例窗口的屏幕截图。
您好、Elliott、
另请注意、PB6和 PD0通过 LaunchPad 上的0欧姆电阻器进行连接。 如果您有驱动 PD0和 PB6的东西、则可能看不到正确的 PWM。 但是、我认为它不应挂起在 MAP_PwmGenConfigure 上。
您能否确认电路板上的器件型号?
某些 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 根本不兼容。
我明白了。 谢谢你查尔斯!