可以用LM3S的PWM控制led闪吗?

2019-03-24 13:18发布

源程序如下:
#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确不亮了,如果周期设计的小一点,灯是可以亮的,求指导。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
13条回答
dzgcsj_yrj
2019-03-26 04:34
应该是可以的,只要时钟和PWM的频率设置的合适就OK,注意PWM的定时器是16位的递减计数或递增递减计数

一周热门 更多>

相关问题

    相关文章