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

📄 freescale

📁 Freescale 系列单片机常用模块与综合系统设计
💻
字号:
#include <hidef.h> 
#include "derivative.h"
#include "FslTypes.h"
#include "USB_Handle.h"
#include "SPI.h"
#include "SD.h"
#include "SCSI.h"

/* extern Variables */
extern byte vCBWBuf_flag; 

/************************************************************************************/
void main(void) 
{
    SOPT2 = 0x00;                     
  
    _SD_DE = 0;                     // Card detection
    _SD_WR = 0;                     // write portect

    while(SD_DE == kSD_Desert);     // SD Card inserted
	SCSI_Init();                    // Mass Storage Device Initialization      
	EnableInterrupts;
	for(;;) 
    {
        if(vCBWBuf_flag==1)
        {
            SCSI_Process();         // SCSI Process
            vCBWBuf_flag=0;
        }
    }
	 
}








/****************************************************************
*****************************************************************
** Below are Bootloader function code                          **
*****************************************************************
****************************************************************/


const byte NVOPT_INIT  @0x0000FFBF = 0x02;    // vector redirect, flash unsecure
const byte NVPROT_INIT @0x0000FFBD = 0xFA;    // 0xFC00-0xFFFF are protected 

extern void _Startup(void);
extern interrupt void USB_ISR(void); 



interrupt void Dummy_ISR(void) {
   asm nop;
}


void (* volatile const _UserEntry[])()@0xFBBC={
  0x9DCC,             // asm NOP(9D), asm JMP(CC)
  _Startup
};
  
// redirect vector 0xFFC0-0xFFFD to 0xFBC0-0xFBFD
void (* volatile const _Usr_Vector[])()@0xFBC4= {
    Dummy_ISR,        // Int.no.29 RTC                (at FFC4)
    Dummy_ISR,        // Int.no.28 IIC                (at FFC6)
    Dummy_ISR,        // Int.no.27 ACMP               (at FFC8)
    Dummy_ISR,        // Int.no.26 ADC                (at FFCA)
    Dummy_ISR,        // Int.no.25 KBI                (at FFCC)
    Dummy_ISR,        // Int.no.24 SCI2 Transmit      (at FFCE)
    Dummy_ISR,        // Int.no.23 SCI2 Receive       (at FFD0)
    Dummy_ISR,        // Int.no.22 SCI2 Error         (at FFD2)
    Dummy_ISR,        // Int.no.21 SCI1 Transmit      (at FFD4)
    Dummy_ISR,        // Int.no.20 SCI1 Receive       (at FFD6)
    Dummy_ISR,        // Int.no.19 SCI1 error         (at FFD8)
    Dummy_ISR,        // Int.no.18 TPM2 Overflow      (at FFDA)
    Dummy_ISR,        // Int.no.17 TPM2 CH1           (at FFDC)
    Dummy_ISR,        // Int.no.16 TPM2 CH0           (at FFDE)
    Dummy_ISR,        // Int.no.15 TPM1 Overflow      (at FFE0)
    Dummy_ISR,        // Int.no.14 TPM1 CH5           (at FFE2)
    Dummy_ISR,        // Int.no.13 TPM1 CH4           (at FFE4)
    Dummy_ISR,        // Int.no.12 TPM1 CH3           (at FFE6)
    Dummy_ISR,        // Int.no.11 TPM1 CH2           (at FFE8)
    Dummy_ISR,        // Int.no.10 TPM1 CH1           (at FFEA)
    Dummy_ISR,        // Int.no.9  TPM1 CH0           (at FFEC)
    Dummy_ISR,        // Int.no.8  Reserved           (at FFEE)
    USB_ISR,          // Int.no.7  USB Statue         (at FFF0)
    Dummy_ISR,        // Int.no.6  SPI2               (at FFF2)
    Dummy_ISR,        // Int.no.5  SPI1               (at FFF4)
    Dummy_ISR,        // Int.no.4  Loss of lock       (at FFF6)
    Dummy_ISR,        // Int.no.3  LVI                (at FFF8)
    Dummy_ISR,        // Int.no.2  IRQ                (at FFFA)
    Dummy_ISR,        // Int.no.1  SWI                (at FFFC) 
};



#pragma CODE_SEG Bootloader_ROM

void Bootloader_Main(void);

void _Entry(void) 
{
        
  SOPT1 = 0x13;                   // disable COP                 
  
  PTGDD_PTGDD0 = 0;               // PTG0 is input
  PTGPE_PTGPE0 = 1;               // internal pullup for PTG0
  
    
  
  MCGC2 = 0x36;
  while(!(MCGSC & 0x02));		      //wait for the OSC stable
  MCGC1 = 0x98;
  while((MCGSC & 0x1C ) != 0x08); // external clock is selected
	MCGC3 = 0x48;
	while ((MCGSC & 0x48) != 0x48);	//wait for the PLL is locked
	MCGC1 = 0x18;
  while((MCGSC & 0x6C) != 0x6C);
	

  // Mode selection  
  if(PTGD_PTGD0) {
    asm JMP _UserEntry;           // Enter User Mode
  } 
  
  // Enter Bootloader Mode
  else {
                             
    USBCTL0=0x44;
    //USBCTL0=0x00;                 // external Reg & pullup and PHY enable             
    
    Bootloader_Main();            // Enter bootloader code
   }

} // _Entry end













⌨️ 快捷键说明

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