- #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仿真都没有任何反应。求大神指教
|