源程序如下:
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/sysctl.h"
#include "driverlib/pwm.h"
int
main(void)
{
//设置时钟频率
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |SYSCTL_XTAL_8MHZ);
// 使能GPIO的F端口和PWM
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM);
// 将PF3的引脚功能配置为PWM3,设置PWM的时钟
GPIOPinConfigure(GPIO_PF3_PWM3);
SysCtlPWMClockSet(SYSCTL_PWMDIV_1);
GPIOPinTypePWM(GPIO_PORTF_BASE, GPIO_PIN_3);
// 配置PWM的相关参数
PWMGenConfigure(PWM_BASE, PWM_GEN_1, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);
PWMGenPeriodSet(PWM_BASE,PWM_GEN_1, SysCtlClockGet());//方波周期为1s
PWMPulseWidthSet(PWM_BASE, PWM_OUT_3, SysCtlClockGet()/2);//占空比为0.5
// 使能PWM3,并开始输出
PWMOutputState(PWM_BASE, PWM_OUT_3_BIT, true);
PWMGenEnable(PWM_BASE, PWM_GEN_1);
while(1)
{
}
}
菜鸟初学,pwm信号周期如果是1s,占空比如果是0.5的话,频率足够让灯闪了,但LED确不亮了,如果周期设计的小一点,灯是可以亮的,求指导。
此帖出自
小平头技术问答
50000个PWM时钟,生成1S周期的PWM波,意味着你的PWM时钟需为50KHz。
且问,你的PWM时钟是50KHz么?
楼主可以用软仿,Keil MDK的Logic Analyzer观察一下PWM输出的波形。
下图是基于EK-LM3S811的PWM软仿波形,输出3路1KHz的PWM。
一周热门 更多>