由TIMER1地比较模块输出一个PWM波形,.doc

由TIMER1地比较模块输出一个PWM波形,.doc

ID:52546039

大小:32.00 KB

页数:5页

时间:2020-03-28

由TIMER1地比较模块输出一个PWM波形,.doc_第1页
由TIMER1地比较模块输出一个PWM波形,.doc_第2页
由TIMER1地比较模块输出一个PWM波形,.doc_第3页
由TIMER1地比较模块输出一个PWM波形,.doc_第4页
由TIMER1地比较模块输出一个PWM波形,.doc_第5页
资源描述:

《由TIMER1地比较模块输出一个PWM波形,.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、//该程序用于测试DSP的CAPTURE模块,由TIMER1的比较模块输出一个PWM波形,//此波形输入CAP4引脚,待CAP4捕捉该PWM的10次上升沿后,停止捕捉,并把10//次捕捉值存于数组result[10]中#include"register.h"//初始化子程序intresult[10];//定义一个存储结果的数组intk=0;//定义的中断次数值//系统初始化子程序intinitial(){asm("setcINTM");//禁止所有中断asm("setcSXM");//抑制符号位扩展asm("clrcOVM");//累加器中结

2、果正常溢出asm("clrcCNF");//B0被配置为数据存储空间*SCSR1=0x81FE;//CLKIN=6M,CLKOUT=4*CLKIN=24M*WDCR=0x0E8;//不使能看门狗,因为SCSR2中的WDOVERRIDE//即WD保护位复位后的缺省值为1,故可以用//软件禁止看门狗*IMR=0x0000;//禁止所有中断*IFR=0x0FFFF;//清除全部中断标志,"写1清0"}//捕获单元4初始化子程序intCAP4INT(){*T3PER=0X0FFFF;//通用定时器3的周期寄存器为0XFFFF*T3CON=0X1400

3、;//通用定时器3为连续增计数模式*T3CNT=0X00;//计数器清0WSGR=0x0000;//禁止所有等待状态*CAPCONB=0X0A440;//设置捕获单元4为检测上升沿,且选择TIMER3为时钟asm("clrcINTM");//开总中断*IMR=0X08;//允许中断优先级4的中断*EVBIMRC=*EVBIMRC

4、0X0001;//允许CAPTURE4中断*EVBIFRC=*EVBIFRC

5、0X0FFFF;}//定时器1初始化子程序,使其比较单元输出一个PWM波形inttimer1int(){*MCRA=*MCRA

6、0X100

7、0;//配置IOPB4口为定时器1的比较输出*MCRC=*MCRC

8、0X0080;//配置IOPE7口为捕捉功能*GPTCONA=*GPTCONA

9、0X0042;*T1PER=0X1FE;//给定时器1的周期寄存器赋值*T1CON=0X1442;//允许TIMER1比较输出,并且TIMER1为连续增计数//模式,立即启动*T1CNT=0X00;//定时器1的计数器清0*T1CMP=0X0FF;//给定时器1的比较寄存器赋值}//主程序main(){initial();//系统初始化timer1int();//定时器1初始化,使其输出一个PWM

10、波形供捕捉CAP4INT();//捕获单元4初始化*T3CON=*T3CON

11、0X0040;//启动定时器3while(1){if(k==10)break;//k保存中断次数值,是全局变量}asm("setcINTM");//捕捉10次后,禁止再中断}//若是由于干扰引起其它中断,则执行此子程序voidinterruptnothing(){asm("clrcINTM");//返回前开中断return;}//捕捉中断服务程序voidinterruptcapint(){intflag;flag=*EVBIFRC&0X01;//判断是否是CAP4中

12、断if(flag!=0x01){asm("clrcINTM");//返回前开中断return;//如果不是CAP4中断,则直接返回}load();//如果是CAP4中断,则装载捕捉值*EVBIFRC=*EVBIFRC

13、0x01;//写"1"清除CAP4中断标志asm("clrcINTM");//返回前开中断return;//中断返回}//装载捕捉值子程序intload(){result[k]=*CAP4FIFO;//读取捕捉值,存于相应的数组k++;}问题补充:请问CAP4FIFO里面装的是什么东西呢?是捕获脉冲的时间吗?那要是我要计算两个脉

14、冲之间的时间改如何修改呢?#includeintresult[10];//存儲結果的數組intk=0;//中斷次數voidinlinedisable(){ asm("setcINTM");//屏蔽中斷程序}intinitial(){ asm("setcINTM");//禁止所有中斷 asm("setcSXM");//符號位擴展有效 asm("clrcOVM");//累加器中結果正常溢出 asm("clrcCNF");//B0被配置為數據存儲空間  *SCSR1=0x81FE;//CLKIN=6M,CLKOUT=4*CL

15、KIN=24M系統控制和狀態寄存器SCSR1   *WDCR=0x0E8;//禁止看門狗  *IMR=0x0000;//禁止所有中斷        IMR中斷屏蔽寄

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。