📄 test.c
字号:
/* INT SVC system
* Copyright (c) 2006,南京因泰莱电器股份有限公司开发部
* All rights reserved.
*
* 文件名称:VECTORS.asm
* 摘 要:实现F2812各个功能模块的测试,为以后的开发准备
*
* 当前版本:0.9
* 作 者:洪远洋
* 完成日期:2006年12月29日
*
* 取代版本:0.1
* 原作者 :洪远洋
* 完成日期:2006年12月28日
*
* 注意:本次UCOS移植的IDLE函数优先级为56,其他线程务必优先级高于56!!
********************************************************************/
#include <stdio.h>
#include "F2812reg.h"
#include "include\timer.h"
#include "include\os_globalstack.h"
#pragma DATA_SECTION(TaskStk,"MulStackFile");
volatile OS_STK TaskStk[N_TASKS][TASK_STK_SIZE]; /* Tasks stacks */
//volatile OS_STK TaskStk; /* Tasks stacks */
#pragma DATA_SECTION(TaskStartStk,"MainStackFile");
volatile OS_STK TaskStartStk[TASK_STK_SIZE];
#pragma DATA_SECTION(OSTaskIdleStk,"IdleStackFile");
volatile OS_STK OSTaskIdleStk[OS_TASK_IDLE_STK_SIZE];
extern int vect; //中断向量表首地址,在VECTORS.asm中定义的全局变量
void AppStartTask(void)
{
int i = 0;
i++;
asm(" CLRC INTM"); // 调试使能中断
while(1)
{
i++;
OSTimeDly(3);
}
}
void TaskStk1(void)
{
int i = 0;
i++;
asm(" CLRC INTM"); // 调试使能中断
while(1)
{
i++;
OSTimeDly(10);
}
}
void initcpu()
{
asm(" EALLOW");
WDCR=0x068; //禁止看门狗
// PLLCR=0x0004; //CPU时钟为OSCCLK*4/2 30m
PLLCR=0x000A; //CPU时钟为OSCCLK*10/2 12m
PCLKCR=0x5D0B; //外设时钟使能
HISPCP=0x0000; //配置外设时钟HSPCLK=60M/1=60M
LOSPCP=0x0001; //配置外设时钟LSPCLK=60M/2=30M
asm(" EDIS");
}
void initgpio()
{
asm(" EALLOW");
GPAMUX = 0x0000; //配置GPIOF中的SCI,SPI口为外设模式
GPBMUX = 0x0000; // 配置GPIOG中的SCIB
GPADIR = 0xffff;
GPBDIR = 0xffff;
GPADAT = 0xffff;
GPBDAT = 0xffff;
asm(" EDIS");
// while(1);
}
void initpiectrl()
{
asm(" EALLOW");
PIECTRL=0x0d01; //配置PIE向量表,使PIE VECTOR的地址为0XD00开始
PIEACK=0xffff; //清除所有中断应答,保证可以对新的中断响应
// PIEIFR9=0x0000;
// PIEIER9=0x0004; //使能SCIB 接收中断
asm(" EDIS");
}
/*************************************************************/
void fill_vector()
{
int i = 0;
int * source = 0;
int *dest = 0;
asm(" EALLOW");
dest = (int *)0xd00 ; //指向搬移的目标地址,0XD00
source = &vect; //指向要搬移的中断向量表的首地址
for(i = 0; i < 128;i++)
{
*dest++ = *source++; //连续搬移128个中断向量
}
asm(" EDIS");
}
/***********************************************************/
void time_delay(void)
{
int i = 0;
int j = 0;
int k = 0;
int l = 0;
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
int f = 0;
int g = 0;
int h = 0;
for(; e<30000; e++)
for (; f < 30000; f++)
for(; g < 30000; g++)
for (; h<30000; h++)
{
for(; i<30000; i++)
for(; j<30000; j++)
for(; k<30000; k++)
for(; l<30000; l++)
{
for(; a<30000; a++)
for(; b<30000; b++)
for(; c<30000; c++)
for(; d<30000; d++)
{
asm(" nop ");
}
}
}
}
/******************************************************************************/
interrupt void INT13_ISR(void) // 0x000D1A INT13 - XINT13 (or CPU Timer1, reserved for TI)
{
// Work around Compiler v3.03 bug
// asm(" SPM 0"); // Compiler not properly setting SPM 0 in ISRs
// asm(" CLRC AMODE"); // Compiler not properly setting AMODE=1 in ISRs
// End workaround
GPADAT = 0x0000;
GPBDAT = 0x00f0;
time_delay();
time_delay();
asm(" CLRC INTM"); // 调试使能
PIEACK=0xf00f;
// Next two lines for debug only - remove after inserting your ISR
// asm (" ESTOP0"); // Emulator Halt instruction
}
/************************************************************/
void c_int00()
{
asm(" EALLOW");
asm(" CLRC DBGM"); // 调试使能
asm(" SETC OVM"); // 溢出模式
asm(" SETC SXM"); //符号扩展
asm(" SETC OBJMODE"); //C28x模式
asm(" SETC VMAP"); //使能PIE向量
asm(" EDIS");
DINT;
initcpu(); //
initgpio();
fill_vector(); // 将中断向量放到中断向量表的位置,烧写时使用
initpiectrl();
timer_init();
asm(" EALLOW");
asm(" AND IFR , #0X0000 ");
asm(" OR IER , #0XFFFF "); //使能所有中断中断
// asm(" OR DBGIER , #0XFFFF "); //使能所有中断中断
asm(" mov *sp++ , #0xffff ");
asm(" pop DBGIER"); // 调试使能
asm(" EDIS");
DRTM;
EINT;
OSInit();
OSTaskCreate(AppStartTask, (void *)0, (void *)&TaskStartStk[TASK_STK_SIZE-1], 2);
OSTaskCreate(TaskStk1, (void *)0, (void *)&TaskStk[0][TASK_STK_SIZE-1], 5);
OSStart();
/* i = sizeof(char);
i = sizeof(short);
i = sizeof(int);
i = sizeof(long);*/
// asm(" TRAP #13");
while(1)
{
GPADAT = 0x0000;
GPBDAT = 0x0000;
time_delay();
GPADAT = 0xffff;
GPBDAT = 0x00FF;
time_delay();
// asm(" TRAP #13");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -