主题中讨论的其他器件:TM4C123
工具/软件:Code Composer Studio
我尝试在 TI 板上使用 PWM。 当我在调试模式下使用单步进入时、我发现了这个问题。 我的代码如下所示:
#include "inc/tm4c123ghp6.h" #include #include #include "inc/hw_memmap.h" #include "driverlib/pwm.h" #include "driverlib/gpio.h" #include "inc/hw_gpio.h" #include "driverlib/pin_map.h" #include "driverlib/sysctl.h" void PWMInitTom (void){void SysCtlPeripheralEnable (SYSCTL_Periph_PWM0);//启用 PWM0外设 //while (!SysCtlPeripheralReady (SYSCTL_Periph_PWM0)){//等待 PWM0模块准备就绪。*/} SysCtlPWMClockSet (SYSCTL_PWMDIV_1);//将 PWM 时钟设置为系统时钟 SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);//启用 GPIOB GPIOPinConfigure (GPIO_PB6_M0PWM0);//配置 GPIO 引脚以选择 PWM0功能 GPIOPinTypePWM (GPIO_PORTB_BASE、GPIO_PIN_6);//为此引脚配置 PWM 功能。 //将 PWM 发生器配置为递减计数模式并立即更新参数。 PWMGenConfigure (PWM0_BASE、PWM_GEN_0、PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC); //设置周期。 对于50KHz 频率、周期= 1/50、000或20 //微秒。 对于一个20MHz 时钟、这转换为400个时钟周期。 //使用此值设置周期。 PWMGenPeriodSet (PWM0_BASE、PWM_GEN_0、400); PWMPulseWidthSet (PWM0_BASE、PWM_OUT_0、100);//将 PWM0的脉冲宽度设置为25%占空比。 PWMPulseWidthSet (PWM0_BASE、PWM_OUT_1、300);//将 PWM1的脉冲宽度设置为75%占空比。 PWMGenEnable (PWM0_BASE、PWM_GEN_0);//启动发生器0中的计时器 PWMOutputState (PWM0_BASE、(PWM_OUT_6_BIT | PWM_OUT_7_BIT)、TRUE);//启用模块0上 PWM6和 PWM7的输出 } 无符号长周期频率、宽度、周期、pwmfreq; int main (void){ SysCtlClockSet (SYSCTL_USE_PLL |SYSCTL_SYSDIV_10| SYSCTAL_XTAL_16MHz |SYSCTL_OSC_MAIN);//将时钟设置为20MHz FREQ = SysCtlClockGet (); PWMInitTOM(); pwmfreq = SysCtlPWMClockGet (); 宽度= PWMPulseWidthGet (PWM0_BASE、PWM_OUT_0); 周期= PWMGenPeriodGet (PWM0_BASE、PWM_GEN_0); while (1){ } }
因此、当 CCS 尝试编译 PWMGenConfigure 时、它会跳转到 FaultISR 并一直停留在那里。
当我使用示例文件(inver.c)时、我遇到了同样的问题。 PWMGenConfigure 导致了该问题。
我已将 pwm.c、sysctl.c、gpio.c 添加到我的项目中。
有人能解释一下吗?
谢谢