打印
[ZLG-ARM]

周工你好,请教lm615开发版的问题

[复制链接]
1575|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CLJ2004000|  楼主 | 2007-10-13 16:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
lm, PWM, ARM, ofo, os

2个问题:
1:我买了您的开发板LM3S615 , 我用于做逆变电源项目,需要逐周期更新占空比,您的demo 没有带PWM 在中断中更新占空值的例程,自己作了pwm的初始化就是不进中断为什么,能给个例程么?
2:您给的crossstudio for arm是测试版,期限是一个月我想知道一个月之后我该怎么办?

相关帖子

沙发
CLJ2004000|  楼主 | 2007-10-13 16:17 | 只看该作者

我的初始化程序

  HWREG(SYSCTL_RCC) &= (~SYSCTL_RCC_USE_PWMDIV);       // PWM时钟源1分频                                                            
  HWREG(SYSCTL_RCGC2) |= SYSCTL_PERIPH_GPIOD;           // 使能PD口外设 
  HWREG(SYSCTL_RCGC0) |= SYSCTL_PERIPH_PWM;          // 使能PWM外设
  IntMasterEnable();                                   // 处理器使能。
  HWREG(GPIO_PORTD_BASE + GPIO_O_DIR)   |= 0x00000003;  // 设置PD0,PD1为输出
  HWREG(GPIO_PORTD_BASE + GPIO_O_AFSEL) |= 0x00000003;  // 选择硬件功能,即PWM
    // 设置PWM发生器0为上下计数方式,两路PWM不同步 
  HWREG(PWM_BASE + PWM_GEN_0_OFFSET + PWM_O_X_CTL ) &= (~0x0000003F);
  HWREG(PWM_BASE + PWM_GEN_0_OFFSET + PWM_O_X_CTL ) |= PWM_GEN_MODE_UP_DOWN;
  HWREG(PWM_BASE + PWM_GEN_0_OFFSET + PWM_O_X_GENA) &=(~0x00000FFF);
  HWREG(PWM_BASE + PWM_GEN_0_OFFSET + PWM_O_X_GENA) |=((PWM_GEN_ACT_ONE<<PWM_GEN_ACT_A_UP_SHIFT)|
                                                         (PWM_GEN_ACT_ZERO<<PWM_GEN_ACT_A_DN_SHIFT));
  HWREG(PWM_BASE + PWM_GEN_0_OFFSET + PWM_O_X_GENB) &=(~0x00000FFF);    
  HWREG(PWM_BASE + PWM_GEN_0_OFFSET + PWM_O_X_GENB) |=((PWM_GEN_ACT_ONE<<PWM_GEN_ACT_B_UP_SHIFT)|
                                                        (PWM_GEN_ACT_ZERO <<PWM_GEN_ACT_B_DN_SHIFT));

  HWREG(PWM_BASE + PWM_GEN_0_OFFSET + PWM_O_X_LOAD) = 84;  // 设置两路PWM的共同周期  
  HWREG(PWM_BASE + PWM_GEN_0_OFFSET + PWM_O_X_CMPA) = 40;  // 分别设置两路PWM的匹配值
  HWREG(PWM_BASE + PWM_O_ENABLE) |= 0x00000003;          // 使能PWM0和PWM1输出到引脚
  HWREG(PWM_BASE + PWM_GEN_0_OFFSET+PWM_O_X_DBRISE) = 2;  // Gen DB Rising Edge Delay Reg
  HWREG(PWM_BASE + PWM_GEN_0_OFFSET+PWM_O_X_DBFALL) =2;   // Gen DB Falling Edge Delay Reg
  HWREG(PWM_BASE + PWM_GEN_0_OFFSET+PWM_O_X_DBCTL)|= 1;     // Gen Dead Band Ctrl Reg 
 
  //HWREG(PWM_BASE + PWM_GEN_0_OFFSET+PWM_O_X_INTEN)|= 1;  //清中断标志位
  HWREG(PWM_BASE + PWM_GEN_0_OFFSET+PWM_O_X_INTEN)|= 1;  //计数器为零允许产生中断
  
  HWREG(PWM_BASE +PWM_O_INTEN)|=1; //PWM控制模块的全局中断允许
 //PWMGenIntTrigEnable(PWM_BASE, PWM_GEN_0,PWM_INT_CNT_ZERO );      //jihuo  
  
  HWREG(PWM_BASE + PWM_GEN_0_OFFSET + PWM_O_X_CTL ) |= 0x00000001;// 使能PWM发生器0
 

使用特权

评论回复
板凳
CLJ2004000|  楼主 | 2007-10-13 16:19 | 只看该作者

我的初始化程序第2种方法

SysCtlPWMClockSet(SYSCTL_PWMDIV_1);                      // PWM时钟源1分频    
    
     SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);             // 使能PD口外设  
    
    
    SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM);               // 使能PWM外设
   IntMasterEnable();                                   // 处理器使能。
    
    GPIOPinTypePWM(GPIO_PORTD_BASE, GPIO_PIN_0 | GPIO_PIN_1 );// 设置PD0,PD1为PWM0和PWM1
  
    PWMGenConfigure(PWM_BASE, PWM_GEN_0,                     // 设置PWM发生器0为上下计数方式,两路PWM不同步 
                    PWM_GEN_MODE_UP_DOWN | PWM_GEN_MODE_NO_SYNC);
                    
    PWMGenPeriodSet(PWM_BASE, PWM_GEN_0, 84);             // 设置两路PWM的共同周期 

    PWMPulseWidthSet(PWM_BASE, PWM_OUT_0,30);            // 分别设置两路PWM的匹配值
  
    
    PWMOutputState(PWM_BASE, PWM_OUT_0_BIT | PWM_OUT_1_BIT, true);// 使能PWM0和PWM1
   
    PWMDeadBandEnable(PWM_BASE,PWM_GEN_0,5,5);                //使能死区
    

 
   
     //PWMIntEnable(PWM_BASE,PWM_INT_GEN_0);        // 使能中断PWM_GEN_0/////???
    
    PWMGenEnable(PWM_BASE, PWM_GEN_0);                       // 使能PWM发生器0
   
    
       //PWMGenIntRegister(PWM_BASE,PWM_GEN_0 ,PWM_Generator_0_ISR);//PWM_GEN_0,PWM_Generator_0_ISR());      //chulihanshu

   PWMGenIntTrigEnable(PWM_BASE, PWM_GEN_0,PWM_INT_CNT_ZERO); //| PWM_INT_CNT_LOAD);      //jihuo  
    
  
   IntEnable(INT_PWM0 );                    // 使能中断
   IntEnable(PWM_GEN_0);                    // 使能中断

使用特权

评论回复
地板
逐风| | 2007-10-14 00:32 | 只看该作者

CLJ2004000

如果你是用CROSSWORKS的话可能会进不了中断,进行脱机运行就可以,而且你的中断函数需要和CROSS里面的启动代码名称一样,否则也无法进入中断。

使用特权

评论回复
5
clj2004000| | 2007-10-14 07:31 | 只看该作者

激活中断处理函数的用法

我用的是CROSSWORKS,进行脱机运行也不可以,而且中断函数和CROSS里面的启动代码名称一样,也无法进入中断。
顺便请教一下这个激活中断处理函数的用法

PWMGenIntRegister(PWM_BASE,PWM_GEN_0 ,PWM_Generator_0_ISR);    //chulihanshu

使用特权

评论回复
6
clj2004000| | 2007-10-14 16:53 | 只看该作者

急求技术支持

使用特权

评论回复
7
逐风| | 2007-10-14 22:30 | 只看该作者

打电话

如果实在不行你就打ZLG的电话吧,明天周一应该有人,我也是一个新手。。不太懂得怎么用!

使用特权

评论回复
8
clj2004000| | 2007-10-15 08:26 | 只看该作者

急求技术支持

使用特权

评论回复
9
ZLGARM| | 2007-10-15 09:18 | 只看该作者

请致电ZLG技术支持

如果您有什么问题或者需要我们为您解决什么问题,请您致电020-22644252或者发e-mail:lm3@zlgmcu.com.另您需要的demo,我们已经写好了.如果需要的话请给我们打电话!

使用特权

评论回复
10
clj2004000| | 2007-10-15 09:56 | 只看该作者

我的邮箱是:clj2004001@163.com

使用特权

评论回复
11
ZLGARM| | 2007-10-15 10:03 | 只看该作者

PWM中断改占空比例程

   我们刚写好了一段PWM中断改占空比的例程,有需要的用户请把你的EasyARM615的产品编号、公司资料、你的产品应用和联系方式等,发到lm3@zlgmcu.com邮箱,经确认后,我们会马上发给你。

使用特权

评论回复
12
clj2004000| | 2007-10-15 10:07 | 只看该作者

产品编号是060520708040136

060520708040136

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

15

帖子

0

粉丝