7687|13

5

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

可以用LM3S的PWM控制led闪吗? [复制链接]

源程序如下:
#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确不亮了,如果周期设计的小一点,灯是可以亮的,求指导。

最新回复

应该是可以的,只要时钟和PWM的频率设置的合适就OK,注意PWM的定时器是16位的递减计数或递增\递减计数  详情 回复 发表于 2012-10-26 21:46
 
点赞 关注

回复
举报

1万

帖子

16

TA的资源

版主

沙发
 

可以地

 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 

回复

4138

帖子

0

TA的资源

五彩晶圆(中级)

板凳
 
当然可以了呵呵呵,而且效果会很漂亮
 
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

4
 

原帖由 jayce123 于 2011-6-2 21:37 发表 源程序如下: #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 "dr ...

 

PWMGenPeriodSet(PWM_BASE,PWM_GEN_1, SysCtlClockGet());//方波周期为1s
PWMPulseWidthSet(PWM_BASE, PWM_OUT_3, SysCtlClockGet()/2);//占空比为0.5

建议楼主审核一下上述函数的上限值,没记错的话,最大是到2^16的。

 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 4楼 David_Lee 的帖子

还是解决不了,似乎只有两种状态,要么亮要么不亮,就是不闪
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 板凳 鑫海宝贝 的帖子

我用的是LM3S9B92的开发板,就是不闪,我按照4楼的说法,将始终改为
SysCtlClockSet(SYSCTL_SYSDIV_2 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |SYSCTL_XTAL_1MHZ);


PWMGenPeriodSet(PWM_BASE,PWM_GEN_1,50000);//方波周期为1s
PWMPulseWidthSet(PWM_BASE, PWM_OUT_3,25000);//占空比为0.5

结果灯还是一直亮着
 
 
 

回复

7219

帖子

192

TA的资源

五彩晶圆(高级)

7
 
可以使可以 不过没玩过
 
 
 

回复

2751

帖子

0

TA的资源

裸片初长成(初级)

8
 

原帖由 jayce123 于 2011-6-2 22:45 发表 我用的是LM3S9B92的开发板,就是不闪,我按照4楼的说法,将始终改为 SysCtlClockSet(SYSCTL_SYSDIV_2 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |SYSCTL_XTAL_1MHZ); PWMGenPeriodSet(PWM_BASE,PWM_GEN_1,50000);// ...

 

50000个PWM时钟,生成1S周期的PWM波,意味着你的PWM时钟需为50KHz。

且问,你的PWM时钟是50KHz么?

楼主可以用软仿,Keil MDK的Logic Analyzer观察一下PWM输出的波形。

下图是基于EK-LM3S811的PWM软仿波形,输出3路1KHz的PWM。

 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

9
 

回复 8楼 David_Lee 的帖子

谢谢8楼,我现在有点明白了还有下面几个问题想请教一下
SysCtlClockSet(SYSCTL_SYSDIV_32 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ);
这个函数里时钟频率的选择,可以随便写的吗,还是板子上带的晶振是多少兆就得写多少兆
经过这样分频之后,是不是每500000个系统时钟节拍是1s?

SysCtlPWMClockSet(SYSCTL_PWMDIV_16);
这个函数中的时钟分频是对16M进行分频呢还是对16M经过32分频之后得到的时钟进行分频。

PWMGenPeriodSet(PWM_BASE,PWM_GEN_1,50000);
PWMPulseWidthSet(PWM_BASE, PWM_OUT_3,25000);
最后一个参数指的是哪个时钟节拍?
 
 
 

回复

2万

帖子

74

TA的资源

管理员

10
 

回复 9楼 jayce123 的帖子

楼主新发了一个帖 这是回复:https://bbs.eeworld.com.cn/viewthread.php?tid=292706
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

1万

帖子

16

TA的资源

版主

11
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

146

帖子

0

TA的资源

一粒金砂(高级)

12
 

回复 楼主 jayce123 的帖子

可能是溢出了,,pwm是16位的
 
 
 

回复

21

帖子

0

TA的资源

一粒金砂(中级)

13
 
可以
 
 
 

回复

22

帖子

0

TA的资源

一粒金砂(中级)

14
 
应该是可以的,只要时钟和PWM的频率设置的合适就OK,注意PWM的定时器是16位的递减计数或递增\递减计数
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表