myinit.c

来自「mcf5307实验源代码」· C语言 代码 · 共 148 行

C
148
字号
#include  "..\NUCLEUS\mcf5307.h"#include  "..\NUCLEUS\nucleus.h"#include  "myinit.h"//#include "uart.h"extern unsigned char RxData[4096]; extern unsigned char TxData[4096];  extern unsigned char Uart1_TxCompleted;       //0xff means receive okextern unsigned char Uart1_RxCompleted;       //0xff means receive okextern NU_MEMORY_POOL  System_Memory;//Global Variable Used For Uart1extern unsigned char *   Uart1_RxPointer;         //Pointer to Rx Bufextern unsigned long int Uart1_RxRequestLength;   //how many Data to receive MCF5307_IMM *imm;extern NU_TASK Task_3;extern NU_SEMAPHORE    Semaphore_uart_trans;extern NU_SEMAPHORE    Semaphore_uart_receive;//extern void (*NU_old_vect_routine)(INT);NU_HISR HISR_Control;NU_HISR NetControllerHisr;CHAR HISR_Stack[1024];//extern void Net_Lisr();//extern void NetCtlrHisr(void);VOID Example_LISR(INT vector){  asm("  MOVE.L  #$10000248,A0  ");          asm("  MOVE.W	#$FFFF,(A0)   ");	  imm->sim.IPR = ~0;  Interrupt_UART1();	  NU_Activate_HISR(&HISR_Control);  }void RegUartLISR(void){	VOID (*old_lisr)(INT);	/* Register the LISR with vector 10. The previously registered	LISR is returned in old_lisr. */	NU_Register_LISR(0x19, Example_LISR, &old_lisr);	}/*int RegNetLISR(void){	STATUS  status;	status = NU_Register_LISR (0x1a, Net_Lisr, &NU_old_vect_routine);	if(status != NU_SUCCESS)	{		return NU_FALSE;	}	return (NU_SUCCESS);}int RegNetHISR(void){    STATUS  status;    VOID    *pointer;    status = NU_Allocate_Memory (&System_Memory, &pointer, 1024, NU_NO_SUSPEND);    if (status != NU_SUCCESS)    {		return NU_FALSE;    }    status = NU_Create_HISR (&NetControllerHisr, "NetCtlr",                                NetCtlrHisr, 1, pointer, 1024);    if (status != NU_SUCCESS)    {		return NU_FALSE;    }		    return (NU_SUCCESS);}*/VOID Example_HISR(void){ // NU_Resume_Task(&Task_3);  asm("  MOVE.L  #$10000248,A0  ");        asm("  MOVE.W	#$0000,(A0)   "); if(Uart1_TxCompleted==0xff)      NU_Release_Semaphore(&Semaphore_uart_trans);            //notify the Printf function if(Uart1_RxCompleted==0xff)      NU_Release_Semaphore(&Semaphore_uart_receive);     asm("  MOVE.L  #$10000248,A0  "); asm("  MOVE.W	#$FFFF,(A0)   "); }void RegUartHISR(void){  	  	STATUS status;  	void (*old_lisr)(INT);  	  	status=NU_Create_HISR(&HISR_Control, "EXMPHISR",Example_HISR, 2, HISR_Stack, 500);}void SystemInit(){  imm= (MCF5307_IMM *)0x10000000;    Uart1_ReInit(imm);                           //re init uart as 9600  imm->sim.AVCR=0xFE;   //0xd4;                //enable ext. int. auto vect. imm->sim.IRQPAR=0x20;   //ext.irq 5-3-1 -> 5-3-2  //0x80;              // ext. IRQ  5-3-1 mapped to IRQ   4/6/2                         //中断向量0x1a imm->sim.IMR=(0x0000                |MCF5307_SIM_IMR_DMA3 	        |MCF5307_SIM_IMR_DMA2 		|MCF5307_SIM_IMR_DMA1 		|MCF5307_SIM_IMR_DMA0 		|MCF5307_SIM_IMR_UART2// 		|MCF5307_SIM_IMR_UART1 		|MCF5307_SIM_IMR_MBUS 		|MCF5307_SIM_IMR_TIMER2// 		|MCF5307_SIM_IMR_TIMER1 		|MCF5307_SIM_IMR_SWT 		|MCF5307_SIM_IMR_EINT7 		|MCF5307_SIM_IMR_EINT6 		|MCF5307_SIM_IMR_EINT5 		|MCF5307_SIM_IMR_EINT4 		|MCF5307_SIM_IMR_EINT3//		|MCF5307_SIM_IMR_EINT2                  //enable net card 		|MCF5307_SIM_IMR_EINT1  	       );   		 asm("		move.w		#0x2000,SR      ");    //enable interrupt   Uart1_RxPointer=RxData;  Uart1_RxRequestLength=0x01;  Uart1_ReadyToReceive();//  InitMbus(); RegUartHISR(); RegUartLISR();// RegNetHISR();// RegNetLISR();  cpu_cache_disable(); EnableCache();}

⌨️ 快捷键说明

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