📄 main.c
字号:
//*************************************************************/
//***************** Main.c **********************************/
//***************** Data **********************************/
//*************************************************************/
//#include "ML674000.H"
#include "includes.h"
#include "Uart.c"
#include "LED.c"
//#include "Display.c"
#define TASK_STK_SIZE 256
#define NO_TASKS 3
#define DEBUG 0
INT8U poweroff=0;
OS_STK TaskStack[TASK_STK_SIZE];
OS_STK TaskStackLED[TASK_STK_SIZE];
OS_STK TaskStackPrintf[TASK_STK_SIZE];
OS_STK MyTask9Stk[TASK_STK_SIZE];
OS_STK MyTask8Stk[TASK_STK_SIZE];
OS_STK MyTask7Stk[TASK_STK_SIZE];
extern int cpu_sr;
extern void dealy(unsigned int x);
char TaskData7;
char TaskData8;
char TaskData[NO_TASKS]; /* Parameters to pass to each task */
//char TaskData;
char TaskDataLED;
char TaskData9;
/////////////////////////////////////////////////////
#define MHZ (1000000L)
#define CCLK 33MHZ
#define FOSC 33MHZ
/////////////////////////////////////////////////////
#define TMRCYC (1) /* interval of timer interrupt (ms) */
#define CLKTMRI (33000000L) /* clktmri (Hz) */
#define VALUE_OF_TMRLR /* reload value of timer */\
((0x10000L * (16 * 1000) - (TMRCYC * CLKTMRI) + (8 * 1000)) / (16 * 1000))
//////////////////////////////////////////////////////
void Init_cpu()
{
// IRQDISBALE();
TMEN = 0X0;
TMOVFR = 0X00;
TMRLR = VALUE_OF_TMRLR;
TMEN = 0X01;
//IRQENABLE();
}
static void Init_GPIO(void)
{
//set i/O MODE
GPCTL = 0X0025;
GPPMA = 0X07d00;
GPPMB = 0xe3ff;
}
static void Init_SEM(void)
{
//SETUP ROM SRAM AND IO1 width
BWC== 0x068; //16bit
//setup external ROM control register /
ROMAC = 0x02;
//setup external SDRAM control register
RAMAC = 0x00;
//setup external bank I/O contol register
IO0AC = 0X01;
}
/////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////
// Timer
//
static void Init_Timer(void) //init Timer for system
{
// stop Timer T0 and T1
TIMECNTL0 = 0x0;
TIMECNTL1 = 0x0;
//clear timer status register
TIMESTAT0 = 0x01;
TIMESTAT1 = 0x01;
//setup timer contorl register
TIMECNTL0 = 0x0A0;//CLK32, ENABLE IE ,start, interrupt,
TIMECNTL1 = 0x0A0;//SAME
//setup timer Base register
TIMEBASE0 = 0x0;
TIMEBASE1 =0X0;
//setup timer compare register
TIMECMP0 = 0X5901; //(20*33*1000000L/32*1000)
TIMECMP1 = 0X02;
}
static void Init_WDCOT(void)
{
///disable wdtcon
WDTCON = 0X0;
WDTBCON = 0X0;
WDSTAT = 0x0;
}
static void Init_VIC(void)
{
ILC0 = 0x00; //disable all interrupt
ILC1 = 0x00; //disable all interrupt
IRQ = 0X00;
IRQS = 0X0020; //disable all interrupt
FIQ = 0x00;
FIQEN = 0X01;
}
////////////////////////////////////////////
////////////////////////////////////////////
void init_Uart(unsigned int whichuart,unsigned int baud)
{
if(whichuart == 0)
{
UARTLCR = 0X80; //8 data 1 stop no DALB=1
UARTDLL = 0XD7;
UARTDLM = 0x00; // 115200
UARTFCR = 0XC7;
UARTLCR = 0X03;
UARTMCR = 0X02;
UARTIER = 0X07;
}
else if(whichuart == 1)
{
UARTMCR = 0X83;
}
}
/////////////////////////////////////////////////
////////////////////////////////////////////////
void TaskStart (void *data) //first task for arm and ceart other task
{
INT8U i;
char key;
INT8U err;
data = data;
// printf("jqzheng for arm is ready to good ha ha\n\r ");
//printf("2005,07,22 for arm shenzhen yong xin ke ji\n\r");
TIMECNTL0 = 0X08 ;//Start time0 clock
OSStatInit();
//OSTaskCreate(Display_task, (void *)&TaskData9, (void *)&MyTask9Stk[TASK_STK_SIZE-1], 8);
OSTaskCreate(LED_task, (void *)&TaskData8, (void *)&MyTask8Stk[TASK_STK_SIZE-1],4);
OSTaskCreate(Uart_task, (void *)&TaskData7, (void *)&MyTask7Stk[TASK_STK_SIZE-1],5);
while(1)
{
OSCtxSwCtr = 0;
OSTimeDlyHMSM(0, 0, 5, 0);
poweroff++;
if(poweroff>160)
{
GPPMB = 0x0bd00;
dealy(10);
}
}
}
int main(void)
{
int i;
INT8U j;
INT8U err;
Init_cpu();
Init_GPIO();
Init_SEM();
Init_VIC();
//Init_pwm();
Init_Timer();
init_Uart(0, 115200);
// init_uart();
OSInit(); //init ucos-ii system
OSTaskCreate(TaskStart,(void *)0, (void *)&TaskStack[TASK_STK_SIZE -1 ], 0);
OSStart(); //start ucos_ii kernel
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -