2408|3

3

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

刚入手了lm4f120,调PWM波的时候遇到了总是跑死在莫名其妙的地方 [复制链接]

开发环境是keil realview mdk,源代码附在后面。主要问题有两个:
1.配置GPIO时使用GPIOPinConfigure函数,而GPIO_PXX_M0PWM0在Pin_map.h里LM4F120部分没有找到。故使用自己查到的地址,但下载后无方波输出。
2.debug时发现跑死在PWMGenConfigure()一句,追踪发现跑死在其中的
  1.     //
  2.     HWREG(ulGen + PWM_O_X_CTL) = ((HWREG(ulGen + PWM_O_X_CTL) &
  3.                                    ~(PWM_X_CTL_MODE | PWM_X_CTL_DEBUG |
  4.                                      PWM_X_CTL_LATCH | PWM_X_CTL_MINFLTPER |
  5.                                      PWM_X_CTL_FLTSRC | PWM_X_CTL_DBFALLUPD_M |
  6.                                      PWM_X_CTL_DBRISEUPD_M |
  7.                                      PWM_X_CTL_DBCTLUPD_M |
  8.                                      PWM_X_CTL_GENBUPD_M |
  9.                                      PWM_X_CTL_GENAUPD_M |
  10.                                      PWM_X_CTL_LOADUPD | PWM_X_CTL_CMPAUPD |
  11.                                      PWM_X_CTL_CMPBUPD)) | ulConfig);
复制代码
处,进入FaultISR中断。不知何故,虚心求教。
  1. int main (void)
  2. {

  3.         //设置系统时钟为80MHz
  4.         SysCtlClockSet(SYSCTL_SYSDIV_2_5 |SYSCTL_USE_PLL|SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ);
  5.         SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);//使能PWM0模块
  6.         SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);//使能PWM0和PWM1输出所在GPIO
  7.         GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_6);
  8.         GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_7);//配置PWM功能
  9.         GPIOPinConfigure(GPIO_PB6_M0PWM0);   
  10.         GPIOPinConfigure(GPIO_PB7_M0PWM1);   
  11.         SysCtlPWMClockSet(SYSCTL_PWMDIV_1);     // PWM时钟配置:不分频
  12.         //配置PWM发生器0:加减计数,不同步
  13.          PWMGenConfigure(PWM0_BASE,PWM_GEN_0,PWM_GEN_MODE_UP_DOWN| PWM_GEN_MODE_NO_SYNC);
  14.         //设置PWM发生器1的频率,时钟频率/PWM分频数/n,80M/1/800=100KHZ
  15.          PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, 800);
  16.         //设置PWM0/PWM1输出的脉冲宽度
  17.         PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, 400);//50%占空比
  18.         PWMPulseWidthSet(PWM0_BASE, PWM_OUT_1, 200);//25%占空比
  19.         //使能PWM0和PWM1的输出
  20.         PWMOutputState(PWM0_BASE, (PWM_OUT_0_BIT |PWM_OUT_1_BIT), true);
  21.         //使能PWM发生器
  22.         PWMGenEnable(PWM0_BASE, PWM_GEN_0);
  23.         while(1)
  24.                                 {
  25.                                 };
  26. }
复制代码

最新回复

这个是这样的,你可以使用多个定时器已达到多路pwm输出的目的。   详情 回复 发表于 2014-8-5 17:04
 
点赞 关注

回复
举报

1944

帖子

32

TA的资源

纯净的硅(高级)

沙发
 
代码看起来没有什么问题,估计是pin脚配置问题。对照一下datasheet看看这两句配置是否正确。GPIOPinConfigure(GPIO_PB6_M0PWM0);             GPIOPinConfigure(GPIO_PB7_M0PWM1);

点评

嗯 我改成直接用定时器配置PWM了,没有用PWM.C的库,发现可以用。但是一个定时器只能输出两路  详情 回复 发表于 2014-8-5 16:13
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
azhiking 发表于 2014-8-5 10:47
代码看起来没有什么问题,估计是pin脚配置问题。对照一下datasheet看看这两句配置是否正确。GPIOPinConfigu ...

嗯 我改成直接用定时器配置PWM了,没有用PWM.C的库,发现可以用。但是一个定时器只能输出两路

点评

这个是这样的,你可以使用多个定时器已达到多路pwm输出的目的。  详情 回复 发表于 2014-8-5 17:04
 
 
 

回复

1944

帖子

32

TA的资源

纯净的硅(高级)

4
 
火书 发表于 2014-8-5 16:13
嗯 我改成直接用定时器配置PWM了,没有用PWM.C的库,发现可以用。但是一个定时器只能输出两路

这个是这样的,你可以使用多个定时器已达到多路pwm输出的目的。

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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