DSP 课件PWM波形产生举例

所需积分/C币:50 2012-04-30 11:56:19 1.16MB PDF

DSP 课件PWM波形产生举例,里面有主程序,捕获单元程序,正交编码程序,非常好的一个例子
int result[10 ∥定义一个存储结果的数组 Int k=0 ∥定义的中断次数值 ∥系统初始化子程序 int initial asm( setc INTM) ∥禁止所有中断 asm("setc SXM") ∥抑制符号位扩展 asm("cIrc OVM); ∥累加器中结果正常溢出 asm("cIrc CNF"): ∥B0被配置为数据存储空间 SCSRI=OX8IFE: // CLKIN=6M, CLKOUT=4 CLKIN=24M MWDCR=OXOE8 ∥不使能看门狗,因为SCSR2中的WDOⅤ ERRIDE ∥即wWD保护位复位后的缺省值为1,故可以用 ∥软件禁止看门狗 MR=0x0000; ∥禁止所有中断 FIFR=OXOFFFF ∥清除全部中断标志,"写1清0 ∥捕获单元4初始化子程序 int CAP4INTO *T3PER=OXOFFFF ∥通用定时器3的周期寄存器为0 XFFFF *T3CON=0X1400 ∥通用定时器3为连续增计数模式 FT3CNT=0XOO ∥计数器清0 WSGR=OxO000 ∥禁止所有等待状态 *CAPCONB=OXOA440: ∥设置捕获单元4为检测上升沿,且选择TMER3为时钟 asm("cIrc INTM") ∥开总中断 FIMR=OXO ∥允许中断优先级4的中断 EⅤ BIMRO=+ EVBIMRCIOX0001:∥允许 CAPTURE4中断 *EVBIFRC=*EVBIFRCIOXOFFFF ∥定时器1初始化子程序,使其比较单元输出一个PWM波形 nt timerlinto MCRA=MCRAIOX 1000 ∥配置IOPB4口为定时器1的比较输出 本MCRC=* MCRCIOX0080; ∥配置IOPE7口为捕捉功能 *GPTCONA=*GPTCONAIOX0042 TIPER-OXIFE ∥给定时器1的周期寄存器赋值 T1CON=0X1442:; ∥允许 TIMER1比较输出,并且 TIMER I为连续增计数 ∥模式,立即启动 FTICNT=OXO0 ∥定时器1的计数器清0 MFTICMP=OXOFF ∥给定时器1的比较寄存器赋值 ∥主程序 maino 127 initial: ∥系统初始化 timerlint(: ∥定时器1初始化,使其输出一个PWM波形供捕捉 CAP4INTO ∥捕获单元4初始化 *T3CON=*T3CONI0X0040 ∥/启动定时器3 while(l) if(k==10) break: ∥k保存中断次数值,是全局变量 asm("setc INTM): ∥捕捉10次后,禁止再中断 ∥若是由于干扰引起其它中断,则执行此子程序 d interrupt nothing asm("cIrc INTM") ∥返回前开中断 return ∥捕捉中断服务程序 void interrupt capito int flag: flag=*EVBIFRC&0XOl: ∥判断是否是CAP4中断 if(flag=OxOn) asm("cIrc INTM) ∥返回前开中断 return ∥如果不是CAP4中断,则直接返回 load0: ∥如果是CAP4中断,则装载捕捉值 EVBIFRO=EⅤ BIFRC0x01:∥写"1"清除CAP4中断标志 asm("cIrc INTM); ∥返回前开中断 return ∥中断返回 ∥装载捕捉值子程序 int load result[k=CAP4FIFO: ∥读取捕捉值,存于相应的数组 k++ 7.6正交编码脉冲(0EP)电路 源程序代码: (1)所需的复位和中断向量定义文件“ vectors.asm ∥该文件利用汇编语言代码定义了复位和中断向量 vectors. asm ref c intO, nothing 128 vectors reset c intO intl nothing int2 nothin g int3: bbbbbbb nothin g nothing int6: nothing (2)主程序 ∥该程序用于测试TMS320LF240X的EVB模块的QEP电路, #include"register h" ∥初始化子程序 initial asm("setc INTM) ∥禁止所有中断 asm(" setc SXM"): ∥抑制符号位扩展 asm("clrc OVM") ∥累加器中结果正常溢出 asm("cIrc CNF ): ∥B0被配置为数据存储空间 本 SCSRI=0x81FE; / CLKIN=6M, CLKOUT=4CLKIN=24M 本wDCR=0xOE8; ∥不使能看门狗,因为SCSR2中的WDOⅤ ERRIDE ∥即wD保护位复位后的缺省值为1,故可以用 ∥软件禁止看门狗 本MR=0x0000 ∥禁止所有中断 本IFR=0 XOFFFF; ∥清除全部中断标志,"写1清0 ∥QEP电路初始化子程序 int QEPINTO T4PER-OXOFFFF ∥通用定时器4的周期寄存器为0 XFFFF T4CON=0X1870; ∥通用定时器4为定向增减计数模式,并且以正交编码脉冲 ∥/电路作为时钟源 FT4CNT=OXOO ∥计数器清0 WSGR=OXO000: ∥不使能所有的等待状态 本 CAPCONB=0X0E000 ∥使能EVB的QEP电路 ∥I/O端口初始化子程序 int IOINTO 本MCRC=* MCRCIOX0180 ∥设置相应的通用引脚的IO功能 PEDATDIR=* PEDATDIR0X0606:∥设置 OPEL、IOPE2为输出引脚且都为高电平 ∥延时子程序 int DELAY( 129 tk for(k=0;k<30000:k++) ∥主程序 maino initial: ∥系统初始化 IOINTO: ∥O端口初始化 QEPINTO: ∥QEP电路初始化 while(l) * PEDATDIR=* PEDATDIR& OxFFFB:∥使IOPE2引脚变低 DELAYO ∥延时子程序 PEDATDIR= PEDATDIR&0 xFFFD;∥使IOPE1引脚变低 DELAYO ∥延时子程序 * PEDATDIR=* PEDATDIRIOX0004;∥使IOPE2引脚变高 DELAYO ∥延时子程序 PEDATDIR=* PEDATDIRIOX0002:∥使IOPE1引脚变高 DELAYO ∥延时子程序 ∥若由于干扰引起中断请求,则执行此中断服务程序,此中断程序相当于汇编中的假中断程序,即什么事 ∥情也不作,以保证中断系统的完整性,防止程序跑飞 void interrupt nothing() return 130

...展开详情
img
johnsonfck

关注 私信 TA的资源

上传资源赚积分,得勋章
最新资源