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 + -
显示快捷键?