先附上代码:
//
// 使能M0PWM外设
//
MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);
//
// PWM不分频
//
MAP_SysCtlPWMClockSet(SYSCTL_PWMDIV_1);
//
// Configure the PWM0 to count down without synchronization
// 配置GEN3递减计数模式不同步模式
//
PWMGenConfigure(PWM0_BASE,PWM_GEN_3,PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);
//
// 设置PWM周期
// N=(1/f)*SysClk,f is the desired frequency
//
PWMGenPeriodSet(PWM0_BASE,PWM_GEN_3,100);
//
// 设置PWM占空比
// Default 50%
//
PWMPulseWidthSet(PWM0_BASE,PWM_OUT_7,50);
//
// 使能PWM输出状态
//
PWMOutputState(PWM0_BASE,PWM_OUT_7_BIT,true);
//
// 使能PWM发生器
//
PWMGenEnable(PWM0_BASE,PWM_GEN_3);
这种情况下(SYSCLK:120M):
1、其他都不变,更改占空比,示波器查看正常;
2、其他都不会,修改PWM分频为MAP_SysCtlPWMClockSet(SYSCTL_PWMDIV_64);,示波器查看的周期没变;
3、其他都不变,修改周期100为30000,示波器查看的波形周期正常4K,但是占空比却不是50%,继续更改占空比为80,也没效果,占空比很小;
综上,就是1、修改分频没效果;2、更改了周期100数字之后,占空没有输出预期值。 初次涉及TM4C的芯片,有很多不懂的,不知道我这个问题出在哪了,谢谢
大家指点指点。
user4661451:
回复 Maka Luo:
谢谢大神,完美解决了问题。
就是有一点,PWMGenPeriodGet(PWM0_BASE, PWM_OUT_0) / 4,这个官方历程函数用的有问题,申明函数是这样的:PWMGenPeriodGet(uint32_t u32Base, uint32_t u32Gen)。