主题中讨论的其他器件: TM4C123、LM4120、 TM4C123GH6PM
我正在尝试使用端口 PF0使 PWM 在 EK-TM4C123GXL Launchchapd 上正常工作。 我知道这是用于 NMI 目的的锁定引脚、并已将所需代码放入其中以解锁引脚。 然而、我滞留在等待 SysCtlPeripheralReady (SYSCTL_Periph_PWM1)变为真。 我会卡在突出显示的环路中。 我已经尝试了一切、甚至将其复制并粘贴到另一个项目、然后重新编译。 我只是不知道代码哪里出了问题。 这段代码基于使用 PF1的 TM4C1294代码、此代码非常有效。 我改变了处理器 和端口、但它应该能正常工作!
TM4C123G 的 PF0 PWM 详细信息如下:
下面是完整的代码:
#包含
#包含
#包含
#包含
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_GPIO.h"
#include "inc/hw_types.h"
#include "driverlib/pwm.h"
#include "driverlib/interrupt.h"
#include "driverlib/gpio.h"
#include "driverlib/sysctl.h"
#include "driverlib/timer.h"
#include "utils/ustdlib.h"
#include "driverlib/pin_map.h"
#include "driverlib/SysTick。h"
int main (空)
{
//将系统时钟设置为以 PLL 的80 MHz 频率运行,以外部晶体作为参考。
SysCtlClockSet (SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHz | SYSCTL_OSC_MAIN);
//启用所有 GPIO 外设。
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);
while (!SysCtlPeripheralReady (SYSCTL_Periph_GPIOF)
{
}
//解锁 PF0,它是一个锁定引脚(NMI)
HWREG (GPIO_PORTF_BASE + GPIO_O_LOCK)= GPIO_LOCK_KEY;
HWREG (GPIO_PORTF_BASE + GPIO_O_CR)|= GPIO_PIN_0;
HWREG (GPIO_PORTF_BASE + GPIO_O_LOCK)= 0;//重新锁定以防止进一步更改
//配置 PWM 时钟
SysCtlPWMClockSet (SYSCTL_PWMDIV_1);//配置 PWM 时钟
SysCtlPeripheralEnable (SYSCTL_Periph_PWM1);//启用 PWM 模块1
while (!SysCtlPeripheralReady (SYSCTL_Periph_PWM1))
{
}
GPIOPinTypePWM (GPIO_PORTF_BASE、GPIO_PIN_0);
GPIOPinConfigure (GPIO_PF0_M1PWM4);
PWMGenConfigure (PWM1_BASE、PWM_GEN_2、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);
PWMGenPeriodSet (PWM1_BASE、PWM_GEN_2、SysCtlClockGet ()/ 10);//设置默认周期以提供10Hz
PWMPulseWidthSet (PWM1_BASE、PWM_OUT_4、SysCtlClockGet ()/ 20);//设置默认脉冲宽度以提供50%占空比
PWMOutputState (PWM1_BASE、PWM_OUT_4_BIT、false);//需要时启用
PWMGenEnable (PWM1_base、PWM_GEN_2);//启动发生器2中的计时器
while (1)
{
}
}