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

📄 main.c

📁 ARM7开发全部源代码经典.rar
💻 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 + -