ImageVerifierCode 换一换
格式:DOCX , 页数:85 ,大小:3.19MB ,
资源ID:18371070      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18371070.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(哈工大威海大四通信课设Word格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

哈工大威海大四通信课设Word格式.docx

1、 每个GPIO端口可通过软件分别配置成输入或输出。5509芯片提供了8个通用输入/输出引脚,即GPIO0GPIO7。每个引脚可以通过IODIR寄存器被独立的设置为输入或输出引脚。IODATA寄存器用来监控输入引脚的状态,控制输出引脚的状态。(二) 相关寄存器1) IODIR寄存器IOXDIR为输入/输出控制位。当IOXDIR=0,IOX引脚为输入引脚,当IOXDIR=1,IOX引脚为输出引脚。1) IODATA寄存器第0到7位IOXD为IOX数据位。当IOX为输入引脚,IOXD=0说明在IOX引脚上的信号为低电平,IOXD=1说明在IOX引脚上的信号为高电平。当IOX为输出引脚,IOXD=0说

2、明驱动IOX引脚上的信号为低电平,IOXD=1说明驱动IOX引脚上的信号为高电平。(三) PLL锁相环输出频率的计算输出频率计算公式:将输入时钟频率乘以CLKMD中PLL_MULT的值,再除以PLL_DIV的值。PLL_MULT的取值范围是2-31。PLL_DIV是从0(除以1)到3(除以4)。输出频率=(PLL_MULT/(PLL_DIV+1)*输入时钟频率例如:(24/(1+1)*12M=144M(四) 源码及注释#include csl_pll.hcsl_chip.hcsl_gpio.hvoid delay();/*锁相环的设置*/PLL_Config myConfig = 0, /IA

3、I: the PLL locks using the same process that was underway /before the idle mode was entered 1, /IOB: If the PLL indicates a break in the phase lock, /it switches to its bypass mode and restarts the PLL phase-locking /sequence 24, /PLL multiply value; multiply 24 times 1 /Divide by 2 PLL divide value

4、; it can be either PLL divide value /(when PLL is enabled), or Bypass-mode divide value /(PLL in bypass mode, if PLL multiply value is set to 1);/*输出频率= (PLL_MULT/(PLL_DIV+1)*输入时钟频率 =12M*24/(1+1)=144M*/main()int i = 0; /*初始化CSL库*/ CSL_init(); /*设置系统的运行速度为144MHz*/ PLL_config(&myConfig); /*时钟配置/ /*确定方

5、向为输出*/ GPIO_RSET(IODIR,0xFF); /每个端口通过软件配置为输入或输出,1为输出*/ for(i = 0;i0x0a;i+) /*全亮*/ GPIO_RSET(IODATA,0xff);/设置IODATA寄存器 delay();/延时 /*全灭*/ GPIO_RSET(IODATA,0x0); /*循环闪烁*/ for(;) GPIO_RSET(IODATA,0x1); GPIO_RSET(IODATA,0x2); GPIO_RSET(IODATA,0x4); GPIO_RSET(IODATA,0x8); GPIO_RSET(IODATA,0x10); GPIO_RSE

6、T(IODATA,0x40); GPIO_RSET(IODATA,0x80); void delay() Uint32 j = 0,k = 0; for(j = 0;j0x0c;j+) for(k= 0;kcsl_emif.hstdio.hCSLBool b;Uint16 eventId0;int old_intm;interrupt void int1(void);/-Function prototypes-/* Reference start of interrupt vector table */* This symbol is defined in file, vectors_IP.s

7、55 */ extern void VECSTART(void); /it switches to its bypass mode and restarts the PLL phase-locking 12, /PLL multiply value; multiply 12 times it can be either PLL divide value /*5509A终端设置,使能INT1中断*/*参考资料 TMS320C55x Chip Support Library API Reference Guide (Rev. J) TMS320VC5509A Data Sheet HX-5509A

8、 开发板使用手册 */void INTconfig() /* Temporarily disable all maskable interrupts */ IRQ_setVecs(Uint32)(&VECSTART); old_intm = IRQ_globalDisable(); /* Get Event Id associated with External INT1(8019), for use with */ eventId0 = IRQ_EVT_INT0; /* Clear any pending INT1 interrupts */ IRQ_clear(eventId0); /*

9、Place interrupt service routine address at */ /* associated vector location */ IRQ_plug(eventId0,&int1); /* Enable INT1(8019) interrupt */ IRQ_enable(eventId0); /* Enable all maskable interrupts */ IRQ_globalEnable(); /*EMIF为全EMIF接口*/ CHIP_RSET(XBSR,0x0a01); /*设置系统的运行速度144MHz*/ /设置并使能5509A芯片的INT0中断(

10、EXINT中断) INTconfig(); while(1);/External INT0(EXINT)中断处理函数interrupt void int1() int i,j; printf(EXINT occursn); for(i=0; i0xfff; i+) for(j=0; jcsl_chiphal.h#define TIMER_CTRL TIMER_TCR_RMK( TIMER_TCR_IDLEEN_DEFAULT, /* IDLEEN = 0 */ TIMER_TCR_FUNC_OF(0), /* FUNC = 0 */ TIMER_TCR_TLB_RESET, /* TLB =

11、1 */ TIMER_TCR_SOFT_BRKPTNOW, /* SOFT = 0 */ TIMER_TCR_FREE_WITHSOFT, /* FREE = 0 */ TIMER_TCR_PWID_OF(0), /* PWID = 0 */ TIMER_TCR_ARB_RESET, /* ARB = 1 */ TIMER_TCR_TSS_START, /* TSS = 0 */ TIMER_TCR_CP_PULSE, /* CP = 0 */ TIMER_TCR_POLAR_LOW, /* POLAR = 0 */ TIMER_TCR_DATOUT_0 /* DATOUT = 0 */ )

12、/*Timer寄存器配置,信号输出频率1Khz左右*/TIMER_Config timCfg0 = TIMER_CTRL, /* TCR0 */ 0x3400u, /* PRD0 */ 0x0000 /* PRSC */* Create a TIMER_Handle object for use with TIMER_open */TIMER_Handle mhTimer0;volatile Uint16 timer0_cnt = 0;/* Function/ISR prototypes */interrupt void timer0Isr(void);void taskFxn(void);U

13、int16 tim_val;Uint16 xfchange = 0; /控制输出方向/void main(void) /*CLS库的初始化,这是必需的*/ /*修改寄存器IVPH,IVPD重新定义中断向量表*/ /*禁止所有可屏蔽的中断源*/ /*打开定时器0,设置其为上电的默认值,并返回其句柄*/ mhTimer0 = TIMER_open(TIMER_DEV0, TIMER_OPEN_RESET); /* CSL interrupt enable functions. */ /*获得定时器0的中断ID号*/ eventId0 = TIMER_getEventId(mhTimer0); /*

14、清除定时器0的中断状态位*/ /*为定时器0设置中断服务程序*/timer0Isr); /*设置定时器0的控制与周期寄存器*/ TIMER_config(mhTimer0, &timCfg0); /*使能定时器的中断*/ /*设置寄存器ST1的INTM位,使能所有的中断*/ /*启动定时器0*/ TIMER_start(mhTimer0); /* Wait for at least 10 timer periods */ /*等待10个定时周期*/ if(xfchange = 0) /*点亮XF的LED*/ CHIP_FSET(ST1_55,XF,1); else /*关掉XF的LED*/ C

15、HIP_FSET(ST1_55,XF,0); /*XF输出01010101*/ /* Restore old value of INTM */ /*恢复INTM旧的值*/ IRQ_globalRestore(old_intm); /* We are through with timer, so close it */ /*关掉定时器0*/ TIMER_close(mhTimer0);/*定时器0的中断程序*/interrupt void timer0Isr(void) +timer0_cnt; if(timer0_cnt = 1000) xfchange = 1; if(timer0_cnt

16、= 2000) timer0_cnt = 0; xfchange = 0;(二) 实验现象板上LED灯闪亮,间隔时间约1s。四、 通用计时器的使用看门狗wdt实验(一) 看门狗简介1. 概念硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位如果出现死循环,或者说PC指针不能回来。那么定时时间到后就会使单片机复位。常用的WDT芯片MAX813 ,5045, IMP 813等。软件看门狗技术的原理和这差不多,只不过是用软件的方法实现,用DSP的片上外设资源定时器timer来对主程序的运行进行监控。2. 作用监控主程序的运行,也就是

17、说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位如果出现死循环,或者说PC指针不能回来。那么定时时间到后就会使DSP复位。 即:防止因为软件死循环而造成的系统死锁。3. HX-5509看门狗的结构Watchdog Timer包括一个16bit的预定标计数器和一个16bit的主计数器 ,从而提供一个32bit动态范围的计数器 当预定标计数器达到0时,就会被重新加载,并重新开始计数。 装入的值由WDTCR中TDDR位+ WDTCR2中的预定标模式PREMD位来决定。当PREMD位为0时,4位TDDR域的值直接加载到预定标计数器上,提供20位动态范围;当PREMD位为1时,预定标计数器

18、通过非直接的方式加载16位的TDDR,这种模式提供32位动态范围的看门狗计时器。当主计时器减为0时,产生超时事件,引发以下的可编程事件: 00b,一个看门狗定时器中断 10b,DSP复位 01b,一个非屏蔽中断(NMI) 11b,不发生任何事件 所产生的超时事件,通过编程控制寄存器WDTCR中的WDOUT域来控制 WDTIM 计数器寄存器 WDPRD 周期寄存器 WDTCR 控制寄存器 WDTCR2 控制寄存器21.WDTCR:看门狗控制寄存器WDOUT:用来控制超时引发的可编程事件PSC:当PREMD=0时,用来存放预定标计数器的值。TDDR:当PREMD=0时,若预定标计数器的值减为0,则将TDDR加载到预定标计数器中。当PREMD=1时,若预定标计数器的值减为0,则通过TDDR中的值选择加载到预定标计数器中的数。1. WDTCR2:PREMD:预定标寄存器模式选择位,0为直接模式,1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1