[ZLG-ARM] 周工你好,请教lm615开发版的问题

[复制链接]
2460|11
 楼主| CLJ2004000 发表于 2007-10-13 16:12 | 显示全部楼层 |阅读模式
lm, PWM, ARM, ofo, os
<br />2个问题:<br />1:我买了您的开发板LM3S615&nbsp;,&nbsp;我用于做逆变电源项目,需要逐周期更新占空比,您的demo&nbsp;没有带PWM&nbsp;在中断中更新占空值的例程,自己作了pwm的初始化就是不进中断为什么,能给个例程么?<br />2:您给的crossstudio&nbsp;for&nbsp;arm是测试版,期限是一个月我想知道一个月之后我该怎么办?
 楼主| CLJ2004000 发表于 2007-10-13 16:17 | 显示全部楼层

我的初始化程序

&nbsp;&nbsp;HWREG(SYSCTL_RCC)&nbsp;&=&nbsp;(~SYSCTL_RCC_USE_PWMDIV);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;PWM时钟源1分频&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;HWREG(SYSCTL_RCGC2)&nbsp;|=&nbsp;SYSCTL_PERIPH_GPIOD;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能PD口外设&nbsp;<br />&nbsp;&nbsp;HWREG(SYSCTL_RCGC0)&nbsp;|=&nbsp;SYSCTL_PERIPH_PWM;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能PWM外设<br />&nbsp;&nbsp;IntMasterEnable();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;处理器使能。<br />&nbsp;&nbsp;HWREG(GPIO_PORTD_BASE&nbsp;+&nbsp;GPIO_O_DIR)&nbsp;&nbsp;&nbsp;|=&nbsp;0x00000003;&nbsp;&nbsp;//&nbsp;设置PD0,PD1为输出<br />&nbsp;&nbsp;HWREG(GPIO_PORTD_BASE&nbsp;+&nbsp;GPIO_O_AFSEL)&nbsp;|=&nbsp;0x00000003;&nbsp;&nbsp;//&nbsp;选择硬件功能,即PWM<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置PWM发生器0为上下计数方式,两路PWM不同步&nbsp;<br />&nbsp;&nbsp;HWREG(PWM_BASE&nbsp;+&nbsp;PWM_GEN_0_OFFSET&nbsp;+&nbsp;PWM_O_X_CTL&nbsp;)&nbsp;&=&nbsp;(~0x0000003F);<br />&nbsp;&nbsp;HWREG(PWM_BASE&nbsp;+&nbsp;PWM_GEN_0_OFFSET&nbsp;+&nbsp;PWM_O_X_CTL&nbsp;)&nbsp;|=&nbsp;PWM_GEN_MODE_UP_DOWN;<br />&nbsp;&nbsp;HWREG(PWM_BASE&nbsp;+&nbsp;PWM_GEN_0_OFFSET&nbsp;+&nbsp;PWM_O_X_GENA)&nbsp;&=(~0x00000FFF);<br />&nbsp;&nbsp;HWREG(PWM_BASE&nbsp;+&nbsp;PWM_GEN_0_OFFSET&nbsp;+&nbsp;PWM_O_X_GENA)&nbsp;|=((PWM_GEN_ACT_ONE&lt&ltPWM_GEN_ACT_A_UP_SHIFT)|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(PWM_GEN_ACT_ZERO&lt&ltPWM_GEN_ACT_A_DN_SHIFT));<br />&nbsp;&nbsp;HWREG(PWM_BASE&nbsp;+&nbsp;PWM_GEN_0_OFFSET&nbsp;+&nbsp;PWM_O_X_GENB)&nbsp;&=(~0x00000FFF);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;HWREG(PWM_BASE&nbsp;+&nbsp;PWM_GEN_0_OFFSET&nbsp;+&nbsp;PWM_O_X_GENB)&nbsp;|=((PWM_GEN_ACT_ONE&lt&ltPWM_GEN_ACT_B_UP_SHIFT)|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(PWM_GEN_ACT_ZERO&nbsp;&lt&ltPWM_GEN_ACT_B_DN_SHIFT));<br /><br />&nbsp;&nbsp;HWREG(PWM_BASE&nbsp;+&nbsp;PWM_GEN_0_OFFSET&nbsp;+&nbsp;PWM_O_X_LOAD)&nbsp;=&nbsp;84;&nbsp;&nbsp;//&nbsp;设置两路PWM的共同周期&nbsp;&nbsp;<br />&nbsp;&nbsp;HWREG(PWM_BASE&nbsp;+&nbsp;PWM_GEN_0_OFFSET&nbsp;+&nbsp;PWM_O_X_CMPA)&nbsp;=&nbsp;40;&nbsp;&nbsp;//&nbsp;分别设置两路PWM的匹配值<br />&nbsp;&nbsp;HWREG(PWM_BASE&nbsp;+&nbsp;PWM_O_ENABLE)&nbsp;|=&nbsp;0x00000003;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能PWM0和PWM1输出到引脚<br />&nbsp;&nbsp;HWREG(PWM_BASE&nbsp;+&nbsp;PWM_GEN_0_OFFSET+PWM_O_X_DBRISE)&nbsp;=&nbsp;2;&nbsp;&nbsp;//&nbsp;Gen&nbsp;DB&nbsp;Rising&nbsp;Edge&nbsp;Delay&nbsp;Reg<br />&nbsp;&nbsp;HWREG(PWM_BASE&nbsp;+&nbsp;PWM_GEN_0_OFFSET+PWM_O_X_DBFALL)&nbsp;=2;&nbsp;&nbsp;&nbsp;//&nbsp;Gen&nbsp;DB&nbsp;Falling&nbsp;Edge&nbsp;Delay&nbsp;Reg<br />&nbsp;&nbsp;HWREG(PWM_BASE&nbsp;+&nbsp;PWM_GEN_0_OFFSET+PWM_O_X_DBCTL)|=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Gen&nbsp;Dead&nbsp;Band&nbsp;Ctrl&nbsp;Reg&nbsp;<br />&nbsp;<br />&nbsp;&nbsp;//HWREG(PWM_BASE&nbsp;+&nbsp;PWM_GEN_0_OFFSET+PWM_O_X_INTEN)|=&nbsp;1;&nbsp;&nbsp;//清中断标志位<br />&nbsp;&nbsp;HWREG(PWM_BASE&nbsp;+&nbsp;PWM_GEN_0_OFFSET+PWM_O_X_INTEN)|=&nbsp;1;&nbsp;&nbsp;//计数器为零允许产生中断<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;HWREG(PWM_BASE&nbsp;+PWM_O_INTEN)|=1;&nbsp;//PWM控制模块的全局中断允许<br />&nbsp;//PWMGenIntTrigEnable(PWM_BASE,&nbsp;PWM_GEN_0,PWM_INT_CNT_ZERO&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//jihuo&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;HWREG(PWM_BASE&nbsp;+&nbsp;PWM_GEN_0_OFFSET&nbsp;+&nbsp;PWM_O_X_CTL&nbsp;)&nbsp;|=&nbsp;0x00000001;//&nbsp;使能PWM发生器0<br />&nbsp;
 楼主| CLJ2004000 发表于 2007-10-13 16:19 | 显示全部楼层

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

SysCtlPWMClockSet(SYSCTL_PWMDIV_1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;PWM时钟源1分频&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能PD口外设&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能PWM外设<br />&nbsp;&nbsp;&nbsp;IntMasterEnable();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;处理器使能。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;GPIOPinTypePWM(GPIO_PORTD_BASE,&nbsp;GPIO_PIN_0&nbsp;|&nbsp;GPIO_PIN_1&nbsp;);//&nbsp;设置PD0,PD1为PWM0和PWM1<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMGenConfigure(PWM_BASE,&nbsp;PWM_GEN_0,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置PWM发生器0为上下计数方式,两路PWM不同步&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PWM_GEN_MODE_UP_DOWN&nbsp;|&nbsp;PWM_GEN_MODE_NO_SYNC);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMGenPeriodSet(PWM_BASE,&nbsp;PWM_GEN_0,&nbsp;84);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;设置两路PWM的共同周期&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;PWMPulseWidthSet(PWM_BASE,&nbsp;PWM_OUT_0,30);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;分别设置两路PWM的匹配值<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMOutputState(PWM_BASE,&nbsp;PWM_OUT_0_BIT&nbsp;|&nbsp;PWM_OUT_1_BIT,&nbsp;true);//&nbsp;使能PWM0和PWM1<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMDeadBandEnable(PWM_BASE,PWM_GEN_0,5,5);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//使能死区<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PWMIntEnable(PWM_BASE,PWM_INT_GEN_0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能中断PWM_GEN_0/////???<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;PWMGenEnable(PWM_BASE,&nbsp;PWM_GEN_0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能PWM发生器0<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PWMGenIntRegister(PWM_BASE,PWM_GEN_0&nbsp;,PWM_Generator_0_ISR);//PWM_GEN_0,PWM_Generator_0_ISR());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//chulihanshu<br /><br />&nbsp;&nbsp;&nbsp;PWMGenIntTrigEnable(PWM_BASE,&nbsp;PWM_GEN_0,PWM_INT_CNT_ZERO);&nbsp;//|&nbsp;PWM_INT_CNT_LOAD);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//jihuo&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;IntEnable(INT_PWM0&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能中断<br />&nbsp;&nbsp;&nbsp;IntEnable(PWM_GEN_0);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;使能中断
逐风 发表于 2007-10-14 00:32 | 显示全部楼层

CLJ2004000

如果你是用CROSSWORKS的话可能会进不了中断,进行脱机运行就可以,而且你的中断函数需要和CROSS里面的启动代码名称一样,否则也无法进入中断。
clj2004000 发表于 2007-10-14 07:31 | 显示全部楼层

激活中断处理函数的用法

我用的是CROSSWORKS,进行脱机运行也不可以,而且中断函数和CROSS里面的启动代码名称一样,也无法进入中断。<br />顺便请教一下这个激活中断处理函数的用法<br /><br />PWMGenIntRegister(PWM_BASE,PWM_GEN_0&nbsp;,PWM_Generator_0_ISR);&nbsp;&nbsp;&nbsp;&nbsp;//chulihanshu<br /><br />
clj2004000 发表于 2007-10-14 16:53 | 显示全部楼层

急求技术支持

  
逐风 发表于 2007-10-14 22:30 | 显示全部楼层

打电话

如果实在不行你就打ZLG的电话吧,明天周一应该有人,我也是一个新手。。不太懂得怎么用!
clj2004000 发表于 2007-10-15 08:26 | 显示全部楼层

急求技术支持

  
ZLGARM 发表于 2007-10-15 09:18 | 显示全部楼层

请致电ZLG技术支持

如果您有什么问题或者需要我们为您解决什么问题,请您致电020-22644252或者发e-mail:lm3@zlgmcu.com.另您需要的demo,我们已经写好了.如果需要的话请给我们打电话!
clj2004000 发表于 2007-10-15 09:56 | 显示全部楼层

我的邮箱是:clj2004001@163.com

  
ZLGARM 发表于 2007-10-15 10:03 | 显示全部楼层

PWM中断改占空比例程

&nbsp;&nbsp;&nbsp;我们刚写好了一段PWM中断改占空比的例程,有需要的用户请把你的EasyARM615的产品编号、公司资料、你的产品应用和联系方式等,发到lm3@zlgmcu.com邮箱,经确认后,我们会马上发给你。
clj2004000 发表于 2007-10-15 10:07 | 显示全部楼层

产品编号是060520708040136

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

本版积分规则

3

主题

15

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部