⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tms320lf2407program.txt

📁 TMS320LF2407完整C语言测试程序
💻 TXT
📖 第 1 页 / 共 2 页
字号:
/*****************************************
Fucntion: test only  for TMS320LF2407
Description: test only 
Parameter:  none
Author: kassey@126.com
Date:   Nov,11th,2005
*****************************************/

1 主程序
/********************************************
File:main.c
Description: 主文件
Author: kassey@126.com NOV,22th,2005
********************************************/

#i nclude  "../head/LF2407.h"
/*************************************************************************
NOTE:系统初始化
*************************************************************************/

void system_init()
{                  
asm (" SETC INTM ");
asm (" CLRC SXM ");
asm (" CLRC OVM ");
asm (" CLRC CNF ");
*SCSR1=0x06ff;
*WDCR=0x00e8;
*IFR=0xffff;
*IMR=0x0013;
asm (" CLRC INTM ");    
}

/*************************************************************************
NOTE:io 初始化
*************************************************************************/
void io_init()
{
*MCRA=0x00c7;
*MCRB=0x00d4;
*MCRC=0x3000;
/*SCITXD,SCIRXD,XINT1,SPIIMO,SPICLK,CANTX,CANRX,TDIRB,PWM1,PWM2,CLKINB*/
*PADATDIR=0xc7ff;
*PBDATDIR=0xffff;
*PCDATDIR=0x00ff;
*PDDATDIR=0xffff;
*PEDATDIR=0xffff;
*PFDATDIR=0xffff;
}


void main()
{

system_init();
io_init();

while(1)
*PBDATDIR=0xff01;

}


interrupt void c_int1()
{}

interrupt void nothing()
{
return ;
}

 


2 头文件,寄存器定义


/**************************************************************
; File Name  : LF2407regs.h
; Originator : Texas Instrument 
; Description: LF2407 Peripheral Registers + other useful definitions
; Author     :  kassey@126.com  
;**************************************************************/
/*--------------------------------------------------------------
; 片内外围寄存器定义
;--------------------------------------------------------------*/
/*C2xx 内核寄存器
;~~~~~~~~~~~~~~~~~~~~*/
volatile unsigned int *IMR  = (volatile unsigned int *)0x0004;
/*中断屏蔽寄存器*/
volatile unsigned int *GREG = (volatile unsigned int *)0x0005;
/*全局变量定位寄存器*/ 
volatile unsigned int* IFR  = (volatile unsigned int *) 0x0006;
/*中断标志寄存器*/
volatile unsigned int* ABRPT = (volatile unsigned int *) 0x01f;
/* 分析断点*/
ioport   unsigned portFFFF;  
#define  WSGR   portFFFF
/*系统模块寄存器      
;~~~~~~~~~~~~~~~~~~~~~~~*/      
volatile unsigned int   * PIRQR0  = (volatile unsigned int *) 0x7010; 
/* 外围中断请求寄存器0*/
volatile unsigned int   * PIRQR1  = (volatile unsigned int *) 0x7011;
/* 外围中断请求寄存器1*/
volatile unsigned int   * PIRQR2  = (volatile unsigned int *) 0x7012;
/* 外围中断请求寄存器2*/
volatile unsigned int   * PIACKR0  = (volatile unsigned int *) 0x7014; 
/* 外围中断应答寄存器0*/
volatile unsigned int  * PIACKR1  = (volatile unsigned int *) 0x7015; 
/* 外围中断应答寄存器1*/
volatile unsigned int  * PIACKR2  = (volatile unsigned int *) 0x7016; 
/* 外围中断应答寄存器2*/
volatile unsigned int  * SCSR1  = (volatile unsigned int *) 0x7018;
/* 系统控制和状态寄存器1*/
volatile unsigned int  * SCSR2  = (volatile unsigned int *) 0x7019;
/* 系统控制和状态寄存器2*/
volatile unsigned int   * DIN  = (volatile unsigned int *) 0x701C; 
/*期间识别寄存器*/
volatile unsigned int   * PVIR  = (volatile unsigned int *) 0x701E; 
/* 外围中断向量寄存器*/
/*看门狗/ 实时中断(RTI) / 锁相环 (PLL) 寄存器
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
volatile unsigned int  * WDCNTR  = (volatile unsigned int *) 0x7023;
/*看门狗计数寄存器*/
volatile unsigned int  * WDKEY  = (volatile unsigned int *) 0x7025; 
/* 看门狗 Key 寄存器*/
volatile unsigned int  * WDCR  = (volatile unsigned int *) 0x7029;
/* 看门狗控制寄存器*/ 
/*外围串行接口(SPI)寄存器
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
volatile unsigned int  * SPICCR  = (volatile unsigned int *) 0x7040;
/* SPI配置控制寄存器1 */
volatile unsigned int  * SPICTL  = (volatile unsigned int *) 0x7041;
/* SPI 运行控制寄存器2 */
volatile unsigned int  * SPISTS  = (volatile unsigned int *) 0x7042;
/* SPI 状态寄存器 */
volatile unsigned int  * SPIBRR  = (volatile unsigned int *) 0x7044;
/* SPI 波特率控制寄存器 */
volatile unsigned int  * SPIEMU  = (volatile unsigned int *) 0x7046; 
/* SPI 仿真缓冲寄存器 */
volatile unsigned int  * SPIRXBUF = (volatile unsigned int *) 0x7047;
/* SPI 串行输入缓冲寄存器 */
volatile unsigned int  * SPITXBUF = (volatile unsigned int *) 0x7048;
/* SPI 串行输出缓冲寄存器 */
volatile unsigned int  * SPIDAT  = (volatile unsigned int *) 0x7049; 
/* SPI 串行数据寄存器 */
volatile unsigned int  * SPIPC1  = (volatile unsigned int *) 0x704D; 
/* SPI 端口控制寄存器1 */
volatile unsigned int  * SPIPC2  = (volatile unsigned int *) 0x704E; 
/* SPI端口控制寄存器2 */
volatile unsigned int  * SPIPRI  = (volatile unsigned int *) 0x7023; 
/* SPI 优先级控制寄存器 */
/* 串行通信接口寄存器
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
volatile unsigned int  * SCICCR  = (volatile unsigned int *) 0x7050; 
/* SCI 通讯控制寄存器*/
volatile unsigned int  * SCICTL1  = (volatile unsigned int *) 0x7051; 
/* SCI 控制寄存器1*/
volatile unsigned int  * SCIHBAUD = (volatile unsigned int *) 0x7052; 
/* SCI 波特率控制寄存器高位*/
volatile unsigned int  * SCILBAUD = (volatile unsigned int *) 0x7053; 
/* SCI 波特率控制寄存器低位*/
volatile unsigned int  * SCICTL2  = (volatile unsigned int *) 0x7054; 
/* SCI 控制寄存器2*/
volatile unsigned int  * SCIRXST  = (volatile unsigned int *) 0x7055; 
/* SCI 接收状态寄存器*/
volatile unsigned int  * SCIRXEMU = (volatile unsigned int *) 0x7056; 
/* SCI EMU 数据缓冲寄存器*/
volatile unsigned int  * SCIRXBUF = (volatile unsigned int *) 0x7057; 
/* SCI 接收数据缓冲寄存器 */
volatile unsigned int  * SCITXBUF = (volatile unsigned int *) 0x7059; 
/* SCI发送数据缓冲寄存器 */
volatile unsigned int  * SCIPRI  = (volatile unsigned int *) 0x705F; 
/* SCI 优先级控制寄存器 */
/* 外围中断配置寄存器
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
volatile unsigned int  * XINT1CR  = (volatile unsigned int *) 0x7070;
/* Int1 配置寄存器*/
volatile unsigned int  * XINT2CR  = (volatile unsigned int *) 0x7071; 
/* Int2 配置寄存器*/
/* 数字 I/O 控制寄存器。
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
volatile unsigned int  * MCRA  = (volatile unsigned int *) 0x7090; 
/* I/O 复用控制寄存器A*/ 
volatile unsigned int  * MCRB  = (volatile unsigned int *) 0x7092; 
/* I/O 复用控制寄存器B*/
volatile unsigned int  * MCRC  = (volatile unsigned int *) 0x7094; 
/* I/O 复用控制寄存器C*/
volatile unsigned int  * IPSRA  = (volatile unsigned int *) 0x7094;
/*输入状态寄存器A*/
volatile unsigned int  * IPSRB  = (volatile unsigned int *) 0x7096; 
/*输入状态寄存器B*/
volatile unsigned int  * PADATDIR   = (volatile unsigned int *) 0x7098; 
/* I/O 端口 A 数据和方向控制寄存器*/ 
volatile unsigned int  * PBDATDIR = (volatile unsigned int *) 0x709A; 
/* I/O 端口 B 数据和方向控制寄存器*/
volatile unsigned int  * PCDATDIR = (volatile unsigned int *) 0x709C; 
/* I/O 端口 C 数据和方向控制寄存器*/
volatile unsigned int  * PDDATDIR = (volatile unsigned int *) 0x709E;
/* I/O 端口 D 数据和方向控制寄存器*/
volatile unsigned int  * PEDATDIR = (volatile unsigned int *) 0x7095; 
/* I/O 端口 E 数据和方向控制寄存器*/ 
volatile unsigned int  * PFDATDIR = (volatile unsigned int *) 0x7096;
/* I/O 端口 F 数据和方向控制寄存器*/  
/*ADC 寄存器定义
;--------------------------------------------------------------*/
volatile unsigned int   * ADCTRL1  = (volatile unsigned int *) 0x70A0; 
/* ADC控制寄存器1*/
volatile unsigned int   * ADCTRL2  = (volatile unsigned int *) 0x70A1; 
/* ADC控制寄存器2*/ 
volatile unsigned int   * MAXCONV  = (volatile unsigned int *) 0x70A2; 
/*最大转换通道寄存器*/ 
volatile unsigned int   * CHSELSEQ1  = (volatile unsigned int *) 0x70A3; 
/*通道选择域 :结果 3,2,1,0*/ 
volatile unsigned int   * CHSELSEQ2  = (volatile unsigned int *) 0x70A4; 
/*通道选择域 :结果 7,6,5,4*/
volatile unsigned int   * CHSELSEQ3  = (volatile unsigned int *) 0x70A5; 
/*通道选择域 :结果 11,10,9,8*/
volatile unsigned int   * CHSELSEQ4   = (volatile unsigned int *) 0x70A6; 
/*通道选择域 :结果 15,14,13,12*/ 
volatile unsigned int  * AUTO_SEQ_SR  = (volatile unsigned int *) 0x70A7;
/* 自动排序状态寄存器 */ 
volatile unsigned int  * RESULT0     = (volatile unsigned int *) 0x70A8; 
/* 转换结果寄存器 0*/ 
volatile unsigned int  * RESULT1  = (volatile unsigned int *) 0x70A9; 
/* 转换结果寄存器 1*/ 
volatile unsigned int  * RESULT2  = (volatile unsigned int *) 0x70AA; 
/* 转换结果寄存器 2*/  
volatile unsigned int  * RESULT3  = (volatile unsigned int *) 0x70AB; 
/* 转换结果寄存器 3*/ 
volatile unsigned int  * RESULT4  = (volatile unsigned int *) 0x70AC; 
/* 转换结果寄存器 4*/
volatile unsigned int  * RESULT5  = (volatile unsigned int *) 0x70AD; 
/* 转换结果寄存器 5*/ 
volatile unsigned int * RESULT6  = (volatile unsigned int *) 0x70AE;
/* 转换结果寄存器 6*/ 
volatile unsigned int * RESULT7  = (volatile unsigned int *) 0x70AF; 
/* 转换结果寄存器 7*/ 
volatile unsigned int * RESULT8  = (volatile unsigned int *) 0x70B0; 
/* 转换结果寄存器 8*/
volatile unsigned int * RESULT9  = (volatile unsigned int *) 0x70B1;
/* 转换结果寄存器 9*/ 
volatile unsigned int * RESULT10    = (volatile unsigned int *) 0x70B2;
/* 转换结果寄存器 10*/
volatile unsigned int * RESULT11 = (volatile unsigned int *) 0x70B3; 
/* 转换结果寄存器 11*/ 
volatile unsigned int * RESULT12 = (volatile unsigned int *) 0x70B4; 
/* 转换结果寄存器 12*/ 
volatile unsigned int * RESULT13 = (volatile unsigned int *) 0x70B5;
/* 转换结果寄存器 13*/ 
volatile unsigned int * RESULT14 = (volatile unsigned int *) 0x70B6; 
/* 转换结果寄存器 14*/ 
volatile unsigned int * RESULT15 = (volatile unsigned int *) 0x70B7;
/* 转换结果寄存器 15*/
volatile unsigned int * CALIBRATION = (volatile unsigned int *) 0x70B8; 
/* 校准寄存器*/
/*局部控制网络(CAN) 寄存器 
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
volatile unsigned int  * CANMDER  = (volatile unsigned int *) 0x7100;
/* 邮包方向/使能寄存器*/ 
volatile unsigned int   * CANTCR  = (volatile unsigned int *) 0x7101; 
/* 发送控制寄存器*/ 
volatile unsigned int   * CANRCR  = (volatile unsigned int *) 0x7102; 
/* 接收控制寄存器*/  
volatile unsigned int   * CANMCR  = (volatile unsigned int *) 0x7103; 
/* 主动控制寄存器*/
volatile unsigned int   * CANBCR2  = (volatile unsigned int *) 0x7104; 
/* 位配置寄存器2*/ 
volatile unsigned int   * CANBCR1  = (volatile unsigned int *) 0x7105;
/* 位配置寄存器1*/ 
volatile unsigned int   * CANESR  = (volatile unsigned int *) 0x7106;
/* 错误状态寄存器*/ 
volatile unsigned int   * CANGSR  = (volatile unsigned int *) 0x7107; 
/* 全局状态寄存器 */
volatile unsigned int   * CANCEC  = (volatile unsigned int *) 0x7108;
/* CAN 错误计数寄存器*/
volatile unsigned int   * CANIFR  = (volatile unsigned int *) 0x7109; 
/* CAN 中断标志寄存器*/
volatile unsigned int   * CANIMR = (volatile unsigned int *) 0x710A; 
/* CAN 中断屏蔽寄存器 */ 
volatile unsigned int   * CANLAM0H = (volatile unsigned int *) 0x710B; 
/* 局部接收屏蔽寄存器0  高位*/
volatile unsigned int  * CANLAM0L = (volatile unsigned int *) 0x710C;
/* 局部接收屏蔽寄存器0  低位*/
volatile unsigned int  * CANLAM1H = (volatile unsigned int *) 0x710D; 
/* 局部接收屏蔽寄存器1  高位*/ 
volatile unsigned int  * CANLAM1L = (volatile unsigned int *) 0x710E; 
/* 局部接收屏蔽寄存器1  低位*/
volatile unsigned int  * CANMSGID0L = (volatile unsigned int *) 0x7200; 
/* 对于邮包0的信息标志符 低位 */ 
volatile unsigned int  * CANMSGID0H = (volatile unsigned int *) 0x7201; 
/* 对于邮包0的信息标志符 高位 */ 
volatile unsigned int  * CANMSGCTRL0= (volatile unsigned int *) 0x7202; 
/*对于邮包0的信息控制域*/
volatile unsigned int  * CANMBX0A   = (volatile unsigned int *) 0x7204; 
/* 邮包0 A*/
volatile unsigned int  * CANMBX0B =(volatile unsigned int *) 0x7205; 
/* 邮包0 B*/
volatile unsigned int  * CANMBX0C = (volatile unsigned int *) 0x7206; 
/* 邮包 0 C*/
volatile unsigned int  * CANMBX0D = (volatile unsigned int *) 0x7207; 
/* 邮包 0 D*/
volatile unsigned int  * CANMSGID1L = (volatile unsigned int *) 0x7208; 
/* 对于邮包1的信息标志符 低位 */ 
volatile unsigned int  * CANMSGID1H = (volatile unsigned int *) 0x7209; 
/* 对于邮包1的信息标志符 高位 */
volatile unsigned int  * CANMSGCTRL1= (volatile unsigned int *) 0x720A; 
/*对于邮包1的信息控制域*/
volatile unsigned int  * CANMBX1A = (volatile unsigned int *) 0x720C; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -