|
|
| | -文章搜索 - 最新文章 - | |
C2000例程连载7 |
| 发布时间:2006年7月24日 点击次数:1314 |
| 来源: 作者: |
作者不详
//****************************** // 定时器1中断测试程序 // 问题:在中断服务程序里设置断点,全速运行后不能进入断点????? // 晶振:16M,程序是装载到外部RAM运行,USB仿真器测试 请高手指点一下:为什么不能进入定时器1中断里面设定的断点??? ############################################################################## ############################################################################## 1.主程序如下: #include "lf2407regs.h" unsigned int TimeCount,LedBuf; void initial(void); void Timer1Init(void); //****************************************** // 定时器1 中断服务程序 void interrupt T1INT() { asm(" setc INTM "); // 关 if(*PVIR != 0x27) // 0x27,timer 1mfad周期中断 { asm(" CLRC INTM "); // 开所有未屏蔽中断,为1时禁止中断 return; } T1CNT=0; TimeCount++; if(TimeCount == 500) { TimeCount = 0; LedBuf = *PBDATDIR; LedBuf = ~LedBuf 0xFF00; *PBDATDIR = LedBuf; } *EVAIFRA = 0x80; asm(" CLRC INTM "); // 开 } //************************************************* // 主程序 main() { int led; // 定义一个局部变量 int i,k; // 定义其它一些临时变量 i = 0; i = 0; LedBuf = 65535; LedBuf = ~LedBuf; initial(); // 系统初始化 Timer1Init(); while(1) { for(led=0x0080,i=0; i<8; led=led>>1,i++) { *PBDATDIR = *PBDATDIR & 0x0FF00; // 首先屏蔽IOPB的各位 *PBDATDIR = *PBDATDIR led; // 把需要显示的值赋给IOPB端口 *PFDATDIR = *PFDATDIR 0x0404; // IOPF2 设置为输出方式,且IOPF2=1 *PFDATDIR = *PFDATDIR & 0x0FFFB; // IOPF2=0,这两句语句给一个脉冲, // 使LED上显示IOPB端口的值 for(k=0;k<0x0ffff;k++) k = k; // 为了保证显示时间,给一定时间的延时 //*PBDATDIR = *PBDATDIR & 0x0FF00; // 熄灭全部的LED灯 } } } // 直接返回中断服务程序 void interrupt nothing( ) { return; } //**************************************************** // 初始化子程序 void initial(void) { asm(" setc SXM"); // 抑制符号位扩展 asm(" clrc OVM"); // 累加器中结果正常溢出 asm(" clrc CNF"); // B0被配置为数据存储空间 asm(" setc INTM"); // 禁止所有中断 *SCSR1=0x83FE; // CLKIN=16M,CLKOUT=2*CLKIN=32M *WDCR=0x0E8; // 不使能看门狗,因为SCSR2中的WDOVERRIDE // 即WD保护位复位后的缺省值为1,故可以用 // 软件禁止看门狗 *IMR=0x0002; // 禁止所有中断 *IFR=0x0FFFF; // 清除全部中断标志,"写1清0" WSGR = 0x00; // 禁止所有等待状态 *MCRA=*MCRA & 0x0000; // IOPB端口配置为一般的I/O功能,LF240x的端口 // 均为8位,MCRA为16位因此控制了IOPA,和IOPB的设置 *PBDATDIR=*PBDATDIR 0x0FF00; // IOPB端口设置为输出方式 *MCRC=*MCRC & 0X0FBFF; // 把IOPF2端口配置为一般I/O端口 *PBDATDIR=*PBDATDIR & 0x0FF00; // 熄灭全部的LED灯 //*PBDATDIR=*PBDATDIR 0x0FFFF; // 开全部的LED灯 *PFDATDIR=*PFDATDIR 0x0404; // IOPF2 设置为输出方式,且IOPF2=1 *PFDATDIR=*PFDATDIR & 0x0FFFB; // IOPF2=0 // 以上的操作产生一个脉冲,使LED全部熄灭 } //********************************************** // 定时器1初始化 void Timer1Init(void) { *EVAIMRA = *EVAIMRA 0x0080; //定时器1周期中断使能 *EVAIFRA = *EVAIFRA & 0x0080; //清除中断标志 *T1CON = 0x160c; *T1PER = 0x0177; *T1CNT = 0x00; *T1CON = *T1CON 0x0040; asm(" clrc INTM"); //*GPTCONA = 0x0000; //*T1PER = 2000; //定时器1初值,定时0.5us*2000=1ms //*T1CNT = 0; //*T1CON = 0x144E; //增模式, TPS系数32M/16=2M,T1使能 //*IMR = 0x0002; } ############################################################################## ############################################################################## 2.cmd文件如下 -stack 160 MEMORY { PAGE 0: VECS: origin = 0x8000, length 0x040 PAGE 0: PROG: origin = 0x8860, length 0x759E /* 代码区:30,111 word */ PAGE 1: B2 : origin = 0x060, length 0x020 PAGE 1: B0 : origin = 0x200, length 0x100 PAGE 1: B1 : origin = 0x300, length 0x100 PAGE 1: DATA: origin = 0x0800, length 0x07FF /* 内部2K RAM */ } SECTIONS { .vectors : {} >VECS PAGE 0 /* 中断向量表 */ .text : {} >PROG PAGE 0 /* 可执行代码和字符串 */ .cinit : {} >PROG PAGE 0 /* 已经初始化的全局变量和静态变量*/ .switch : {} >PROG PAGE 0 /* 包含.switch语句建立的表格 */ .data : {} >DATA PAGE 1 /* 初始化变量和常数表 */ .bss : {} >DATA PAGE 1 /* 保留全局变量和静态变量空间 */ .const : {} >DATA PAGE 1 /* 字符串和switch表 */ .stack : {} >DATA PAGE 1 /* 为系统堆栈分配存储器 */ .system : {} >DATA PAGE 1 /* 为动态存储器函数分配存储器空间 */ } ############################################################################## ############################################################################## 3. vectors.asm ; 所需的复位和中断向量定义文件"vectors.asm" .title "vectors.asm" .ref _c_int0,_nothing,_T1INT; .sect ".vectors" RSVECT B _c_int0 INT1 B _nothing INT2 B _T1INT INT3 B _nothing INT4 B _nothing INT5 B _nothing INT6 B _nothing |
|||
|
|
|
[DSP数字信号处理] 相关文章: C2000例程连载4简介:
一个关于TMS320LF2407异步串行例子 作者不详 这里有一个关于TMS320LF2407异步串行例子:(也适用于F240) ;=========================================================== * File Name: SCI.asm * Description: PROGRAM TO PERFORM A LOOPBACK IN THE SCI MODULE * This program is capable of doing either an internal loopback or an e...... C2000例程连载3
C2000例程连载2
C2000例程连载1
C/C++中多维数组指针作为函数参数传递!
如何用C语言开发DSP嵌入式系统(肖宛昂 曾为民)
德州仪器以3.25 美元的最低售价推出业界最低成本 32 位数字信号控制器
基于DSP和CPLD的宽带信号源的设计
2000系列dsp的MP/MC管脚[YC]
基于DSP与双目CMOS摄像头的数字图像处理系统 |
|
|
|