#include<lm3sxxx.h>
#include<timer.h>
unsigned long TheSysClock;
void clockInit()
{
SysCtlLDOSet(SYSCTL_LDO_2_50V); // 设置LDO输出电压
SysCtlClockSet(SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |SYSCTL_XTAL_6MHZ | SYSCTL_SYSDIV_1);
TheSysClock = SysCtlClockGet();
}
void timerInitPWM()
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1); // 使能Timer模块
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); // 使能CCP2所在的GPIO端口
GPIOPinTypeTimer(GPIO_PORTB_BASE, GPIO_PIN_1); //配置定时器管脚供外设使用
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC); // 使能CCP3所在的GPIO端口
GPIOPinTypeTimer(GPIO_PORTC_BASE, GPIO_PIN_6); //配置定时器管脚供外设使用
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM); //使能PWM
SysCtlPWMClockSet(SYSCTL_PWMDIV_1 ); //设置PWM时钟
TimerConfigure(TIMER1_BASE, TIMER_CFG_16_BIT_PAIR | // 配置Timer为双16位PWM
TIMER_CFG_A_PWM |
TIMER_CFG_B_PWM);
TimerControlLevel(TIMER1_BASE, TIMER_BOTH, true); // 控制PWM输出反相
TimerLoadSet(TIMER1_BASE, TIMER_BOTH, 6000); // 设置TimerBoth初值
TimerMatchSet(TIMER1_BASE, TIMER_A, 3000); // 设置TimerA的PWM匹配值
TimerMatchSet(TIMER1_BASE, TIMER_B, 2000); // 设置TimerB的PWM匹配值
TimerEnable(TIMER1_BASE, TIMER_BOTH); // 使能Timer计数,PWM开始输出
}
int main()
{
clockInit(); // 时钟初始化:晶振,6MHz
timerInitPWM(); // Timer的PWM功能初始化
while(1);
}
这是关于LM3S328的PWM输出实验,找不出任何问题,为什么软件仿真和protues仿真都没有任何反应。求大神指教
|