主题中讨论的其他器件: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 添加到我的项目中。
有人能解释一下吗?
谢谢
