亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? target.c

?? LPC2366低功耗測試代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			target.c
** Last modified Date:	2004-09-17
** Last Version:		1.0
** Descriptions:		header file of the specific codes for LPC2200 target boards
**						Every project should include a copy of this file, user may modify it as needed
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-02-02
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:			Chenmingji
** Modified date:		2004-09-17
** Version:				1.01
** Descriptions:		Renewed the template, added more compiler supports 
**
**------------------------------------------------------------------------------------------------------
** Modified by: 
** Modified date:
** Version:	
** Descriptions: 
**
********************************************************************************************************/

#define IN_TARGET
#include "config.h"
#include "delay.h"


void  PLL_Init (void);
/*
*********************************************************************************************************
*                                            PLL_Init()
*
* Description : Set up and activate the PLL.
*
* Argument(s) : none.
*
* Return(s)   : none.
*
* Note(s)     : (1) The PLL output frequency is calculated by:
*
*                           Fcco = 2 * Fin * m / n
*
*                   where
*
*                           Fin is the PLL input clock (here, the main oscillator)
*                           M   is the PLL clock multiplier. The value (M - 1) is programmed in PLLCFG.
*                           N   is the PLL clock divider.    The value (N - 1) is programmed in PLLCFG.
*
*               (2) Fcco must be between 250 and 550 MHz. The ARM Core clock must never exceed 72 MHz.
*                   Set clk_div to divide Fcco accordingly.
*
*               (3) When using the USB device, you must choose Fcco as a multiple of 96 MHz, and then
*                   set clk_div_usb to divide Fcco to exactly 48 MHz.
*
*               (4) In this example
*
*                         Fin         = 12MHz,
*                         M           = 12,
*                         N           =  1,
*                         clk_div     =  6, and
*                         clk_div_usb =  6.
*
*                 Therefore, Fcco        = 2 * Fin * M / N      = (2 * 12 * 12 / 1) = 288MHz.
*                 The processor clock    = (Fcco / clk_div)     = (288MHz / 6)      =  48MHz.
*                 Finally, the USB clock = (Fcco / clk_div_usb) = (288MHz / 6)      =  48MHz.
*
*               (5) A PLL errata on early revisions of the part prevent Fcco from being greater than 288MHz.
*
*               (6) For later revisions, M = 20, clk_div = 8, and clk_div_usb = 10 will yield 60MHz for
*                   the processor clock and 48MHz for the USB clock.


                modified:	Fin=10MHz,M=15,N=1,clk_div=6,Fcco = 2 * Fin * M / N =(2*10*15)/1 = 300MHz,
			                Fcclk = Fcco / clk_div=50Mhz,pclk根據實際來設置。
*********************************************************************************************************
*/

void  PLL_Init (void)
{


    uint32  m;
    uint32  n;
    uint32  clk_div;
    
    //沒有用到內部USB,可以關掉片內USB
    //INT32U  clk_div_usb;


    m           = 14;                                           /* PLL Multiplier = 15, MSEL bits = 15 - 1 = 14             */
    n           =  0;                                           /* PLL Divider    =  1, NSEL bits =  1 - 1 =  0             */
    clk_div     =  5;                                           /* Configure the  ARM Core clock div to 6. CCLKSEL =  6 - 1 */
  //  clk_div_usb =  5;                                         /* Configure the USB clock divider to 6, USBSEL  = 6 - 1    */

    if ((PLLSTAT & DEF_BIT_25) > 0) {                           /* If the PLL is already running                            */
        
        PLLCON  &= ~DEF_BIT_01;                                 /* Disconnect the PLL                                       */
        PLLFEED  =  0xAA;                                       /* PLL register update sequence, 0xAA, 0x55                 */
        PLLFEED  =  0x55;
        
    }

    
    PLLCON   &= ~DEF_BIT_00;                                    /* Disable the PLL                                          */
    PLLFEED   =  0xAA;                                          /* PLL register update sequence, 0xAA, 0x55                 */
    PLLFEED   =  0x55;
    

    SCS      &= ~DEF_BIT_04;                                    /* OSCRANGE = 0, Main OSC is between 1 and 20 Mhz           */
    SCS      |=  DEF_BIT_05;                                    /* OSCEN = 1, Enable the main oscillator                    */

    while ((SCS &  DEF_BIT_06) == 0)
    {                          									/* Wait until OSCSTAT is set (Main OSC ready to be used)    */
        ;
    }

    CLKSRCSEL = DEF_BIT_00;                                     /* Select main OSC, 10MHz, as the PLL clock source          */

    
    PLLCFG    = (m << 0) | (n << 16);                           /* Configure the PLL multiplier and divider                 */
    PLLFEED   = 0xAA;                                           /* PLL register update sequence, 0xAA, 0x55                 */
    PLLFEED   = 0x55;
   
    PLLCON   |= DEF_BIT_00;                                     /* Enable the PLL                                           */
    PLLFEED   = 0xAA;                                           /* PLL register update sequence, 0xAA, 0x55                 */
    PLLFEED   = 0x55;
    

    CCLKCFG   = clk_div;                                        /* Configure the ARM Core Processor clock divider           */
    //USBCLKCFG = clk_div_usb;                                  /* Configure the USB clock divider                          */

    while ((PLLSTAT & DEF_BIT_26) == 0) 
    {                       									/* Wait for PLOCK to become set                             */
        ;
    }

    PCLKSEL0  = 0xAAAAAAAA;                                     /* Set peripheral clocks to be half of main clock           */
    PCLKSEL1  = 0x22AAA8AA;

    
    PLLCON   |= DEF_BIT_01;                                     /* Connect the PLL. The PLL is now the active clock source  */
    PLLFEED   = 0xAA;                                           /* PLL register update sequence, 0xAA, 0x55                 */
    PLLFEED   = 0x55;
   

    while ((PLLSTAT & DEF_BIT_25) == 0) 
    {                       									/* Wait PLLC, the PLL connect status bit to become set      */
        ;
    }
}


/*
*********************************************************************************************************
*                                            BSP_CPU_ClkFreq()
*
* Description : Get the CPU clock frequency.
*
* Argument(s) : none.
*
* Return(s)   : The CPU clock frequency, in Hz.
*********************************************************************************************************
*/

uint32  BSP_CPU_ClkFreq (void)
{
    uint32  msel;
    uint32  nsel;
    uint32  fin;
    uint32  pll_clk_feq;                                    /* When the PLL is enabled, this is Fcco                    */
    uint32  clk_div;
    uint32  clk_freq;


    switch (CLKSRCSEL & 0x03) {                                 /* Determine the current clock source                       */
        case 0:
             fin = IRC_OSC_FRQ;
             break;

        case 1:
             fin = MAIN_OSC_FRQ;
             break;

        case 2:
             fin = RTC_OSC_FRQ;
             break;

        default:
             fin = IRC_OSC_FRQ;
             break;
    }

    if ((PLLSTAT & (1 << 25)) > 0) {                                /* If the PLL is currently enabled and connected        */
        msel        = (uint32)(PLLSTAT & 0x3FFF) + 1;           /* Obtain the PLL multiplier                            */
        nsel        = (uint32)((PLLSTAT >>   16) & 0x0F) + 1;   /* Obtain the PLL divider                               */
        pll_clk_feq = (2 * msel * (fin / nsel));                    /* Compute the PLL output frequency                     */
    } else {
        pll_clk_feq = (fin);                                        /* The PLL is bypassed                                  */
    }

    clk_div         = (uint32)(CCLKCFG & 0xFF) + 1;             /* Obtain the CPU core clock divider                    */
    clk_freq        = (uint32)(pll_clk_feq / clk_div);          /* Compute the ARM Core clock frequency                 */

    return (clk_freq);
}

/*
*********************************************************************************************************
*                                            BSP_CPU_PclkFreq()
*
* Description : Get the peripheral clock frequency for a specific peripheral.
*
* Argument(s) : pclk        The peripheral clock ID, one of PCLK_??? defined in bsp.h.
*
* Return(s)   : The peripheral's clock in Hz
*********************************************************************************************************
*/


uint32  BSP_CPU_PclkFreq (uint8  pclk)
{
    uint32  clk_freq;
    uint32  selection;


    clk_freq = BSP_CPU_ClkFreq();

    switch (pclk) {
        case PCLK_WDT:
        case PCLK_TIMER0:
        case PCLK_TIMER1:
        case PCLK_UART0:
        case PCLK_UART1:
        case PCLK_PWM0:
        case PCLK_PWM1:
        case PCLK_I2C0:
        case PCLK_SPI:
        case PCLK_RTC:
        case PCLK_SSP1:
        case PCLK_DAC:
        case PCLK_ADC:
        case PCLK_CAN1:
        case PCLK_CAN2:
        case PCLK_ACF:
             selection = ((PCLKSEL0 >> (pclk * 2)) & 0x03);
             if (selection == 0) {
                 return (clk_freq / 4);
             } else if (selection == 1) {
                 return (clk_freq);
             } else if (selection == 2) {
                 return (clk_freq / 2);
             } else {
                 return (clk_freq / 8);
             }

        case PCLK_BAT_RAM:
        case PCLK_GPIO:
        case PCLK_PCB:
        case PCLK_I2C1:
        case PCLK_SSP0:
        case PCLK_TIMER2:
        case PCLK_TIMER3:
        case PCLK_UART2:
        case PCLK_UART3:
        case PCLK_I2C2:
        case PCLK_MCI:
        case PCLK_SYSCON:
             selection = ((PCLKSEL1 >> ((pclk - 16) * 2)) & 0x03);
             if (selection == 0) {
                 return (clk_freq / 4);
             } else if (selection == 1) {
                 return (clk_freq);
             } else if (selection == 2) {
                 return (clk_freq / 2);
             } else {
                 return (clk_freq / 8);
             }

        default:
             return (0);
    }
}




/*********************************************************************************************************
** Function name:			IRQ_Exception
**
** Descriptions:			interrupt exceptional handler , change it as needed
**
** input parameters:		None
** Returned value:			None
**         
** Used global variables:	None
** Calling modules:			None
**
** Created by:				Chenmingji
** Created Date:			2004/02/02
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#if 0        
        void IRQ_Exception(void)
{
    while(1);                   //  change it to your code 這一句替換為自己的代碼
}
#endif
/*********************************************************************************************************
** Function name:			FIQ_Exception
**
** Descriptions:			Fast interrupt exceptional handler , change it as needed
**
** input parameters:		None
** Returned value:			None
**         
** Used global variables:	None
** Calling modules:			None
**
** Created by:				Chenmingji
** Created Date:			2004/02/02
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        void FIQ_Exception(void)
{
    while(1);                   // change it to your code  這一句替換為自己的代碼
}
/*********************************************************************************************************
** Function name:			Timer0_Exception
**
** Descriptions:			Timer0 interrupt service function
**
** input parameters:		None
** Returned value:			None
**         
** Used global variables:	None
** Calling modules:			None
**
** Created by:				Chenmingji
** Created Date:			2004/02/02
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
        void Timer0_Exception(void)
{
    T0IR = 0x01;
    VICVectAddr = 0;            //interrupt close 通知中斷控制器中斷結束
    OSTimeTick();
}


//在下面添加中斷處理函數
/*********************************************************************************************************
** Function name:			EINT0_Exception
**
** Descriptions:			interrupt exceptional handler , change it as needed
**
** input parameters:		None
** Returned value:			None
**         
** Used global variables:	None
** Calling modules:			
**
** Created by:				Wangbiao
** Created Date:			2007/09/07
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void EINT1_Exception(void)
{
    //extern OS_EVENT *sem;
	VICIntEnClr = (1 << VIC_EINT1) | (1 << VIC_TIMER0);
    VICVectAddr = 0;            // 通知中斷控制器中斷結束
    OS_ENTER_CRITICAL();
	
	while((EXTINT & 0x02) != 0x00)
	{
	EXTINT |= 0x02;
	}
	OS_EXIT_CRITICAL();
	
	//給中斷任務發送信號量
	//OSMboxPost(sem,(void *)1); 
	
	VICIntEnable = (1 << VIC_EINT1) | (1 << VIC_TIMER0);
	
	VICVectAddr = 0;  
}


/****************************************************************************************************

*名稱:RTC_Exception()
*功能:RTC中斷服務函數,LED取反亮

*****************************************************************************************************/

void  RTC_Exception(void)
{
    extern OS_EVENT *sem;
    VICIntEnClr |= (1 << VIC_RTC);
    
   // OS_ENTER_CRITICAL();
	while((RTC_ILR & 0x02) != 0x00)
	{
	RTC_ILR |= 0x02; //清除RTC增量中斷標志
	RTC_AMR = 0XFF;
	}
	
	//RTC_CIIR=0;
	//OS_EXIT_CRITICAL();
    //給中斷任務發送信號量
	OSMboxPost(sem,(void *)1); 
    VICIntEnable |= (1 << VIC_RTC);
	//RTC_CIIR = 0x01; 
	
	VICVectAddr = 0x00;     //向量中斷結束
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区在线看| 国产精品久久久久久久蜜臀| 男女男精品视频| 欧美一级午夜免费电影| 久久99精品久久久久久久久久久久| 精品国产制服丝袜高跟| 成人国产精品免费观看动漫 | 日韩一区二区三区电影| 激情综合五月天| 欧美国产成人精品| 欧美日韩你懂得| 国产传媒久久文化传媒| 国产精品不卡视频| 欧美日韩第一区日日骚| 国内精品国产三级国产a久久| 国产精品久久免费看| 91黄色免费网站| 国产一区二区三区在线观看免费视频 | 欧美激情综合网| 欧洲av在线精品| 国产一区二区三区在线看麻豆| 亚洲自拍欧美精品| 国产日韩av一区| 91精品国产综合久久久久久漫画| 成人午夜免费电影| 久久国产精品99精品国产 | 一区二区三区中文免费| 日韩免费性生活视频播放| 99视频精品全部免费在线| 日韩电影在线一区| 亚洲色图清纯唯美| 久久久精品综合| 欧美麻豆精品久久久久久| eeuss鲁片一区二区三区| 久久精品久久久精品美女| 亚洲男同性恋视频| 国产目拍亚洲精品99久久精品| 欧美久久久一区| 91在线丨porny丨国产| 青青草原综合久久大伊人精品优势| 亚洲欧美偷拍卡通变态| 国产精品久久久久7777按摩| 日韩欧美久久一区| 制服丝袜亚洲播放| 欧美曰成人黄网| www.日本不卡| 风间由美一区二区三区在线观看| 日韩综合在线视频| 亚洲午夜一区二区| 一区二区三区四区激情| 国产精品久久网站| 中文字幕av一区 二区| 精品福利二区三区| 日韩免费在线观看| 欧美一区二区网站| 欧美老女人在线| 欧美日韩综合不卡| 欧美日韩中文另类| 欧美日韩中文精品| 欧美日韩视频在线一区二区 | 精品视频一区二区不卡| 久久一日本道色综合| 91精品婷婷国产综合久久性色| 欧美性做爰猛烈叫床潮| 日本电影欧美片| 色狠狠一区二区| 欧洲av一区二区嗯嗯嗯啊| 欧美午夜视频网站| 欧美系列在线观看| 欧美色偷偷大香| 欧美日韩1234| 日韩一级完整毛片| 日韩欧美一区二区免费| 日韩欧美专区在线| 日韩美一区二区三区| 日韩精品在线看片z| 欧美xxxxx牲另类人与| 日韩精品一区二区三区中文精品| 日韩精品在线一区二区| 久久免费偷拍视频| 日本一区二区不卡视频| 中文字幕一区日韩精品欧美| 亚洲视频一二三区| 亚洲国产精品自拍| 日韩高清不卡在线| 狠狠网亚洲精品| www.激情成人| 日本精品一级二级| 日韩视频在线观看一区二区| www激情久久| 国产精品你懂的在线| 亚洲激情欧美激情| 日韩精品1区2区3区| 国产精品综合二区| 色香蕉久久蜜桃| 91精品国产乱码久久蜜臀| 久久久久久电影| 亚洲黄色在线视频| 久久99精品国产.久久久久久| 国产成人精品影院| 欧美日韩在线播放三区四区| 欧美成人伊人久久综合网| 国产精品国产成人国产三级| 五月婷婷久久综合| 国产91精品久久久久久久网曝门 | 成人中文字幕电影| 欧美午夜精品一区二区蜜桃| 欧美一二三四在线| 亚洲欧美在线观看| 美日韩一区二区| 一本一本大道香蕉久在线精品| 91精品综合久久久久久| 国产精品三级av| 日本不卡一二三区黄网| av不卡在线播放| 日韩视频免费观看高清完整版在线观看 | 久久免费美女视频| 亚洲女女做受ⅹxx高潮| 美国十次综合导航| 95精品视频在线| 久久天堂av综合合色蜜桃网| 久久99国产精品久久| 国产精品18久久久久久久久| 欧美人妖巨大在线| 国产女人18水真多18精品一级做| 亚洲成av人片一区二区三区| 国产精品亚洲午夜一区二区三区 | 亚洲黄色在线视频| 国产成人在线视频播放| 欧美片网站yy| 一色屋精品亚洲香蕉网站| 久久精品国产一区二区三区免费看| 99久久精品免费观看| 精品久久99ma| 五月天婷婷综合| 91丨porny丨首页| 欧美激情在线一区二区| 久久国产剧场电影| 91精品国产一区二区三区| 亚洲午夜免费电影| 99re6这里只有精品视频在线观看| 欧美精品一区二区三区在线播放| 亚洲丰满少妇videoshd| 99精品视频在线观看| 中文在线免费一区三区高中清不卡| 乱中年女人伦av一区二区| 欧美精品1区2区| 偷拍自拍另类欧美| 欧美日韩一区二区不卡| 亚洲精品视频一区| 色嗨嗨av一区二区三区| 国产精品的网站| 不卡的电影网站| 国产精品福利在线播放| 国产激情视频一区二区在线观看| 欧美一区二区三区四区久久| 亚洲免费观看在线观看| 日韩精品每日更新| 777午夜精品视频在线播放| 夜夜揉揉日日人人青青一国产精品| 国产乱子伦一区二区三区国色天香| 欧美精品一二三四| 日韩av中文在线观看| 欧美综合亚洲图片综合区| 亚洲三级小视频| 91丝袜美女网| 中文欧美字幕免费| 91在线观看美女| 日韩毛片精品高清免费| av午夜精品一区二区三区| 国产亚洲一本大道中文在线| 国产盗摄女厕一区二区三区| 欧美成人一区二区三区片免费| 免费av成人在线| 日韩欧美国产电影| 日韩av在线播放中文字幕| 精品国产一区二区精华 | 国产一区二区毛片| 欧美本精品男人aⅴ天堂| 亚洲乱码一区二区三区在线观看| 日本乱人伦aⅴ精品| 一区二区三区日韩精品视频| 色狠狠色狠狠综合| 亚洲国产欧美在线人成| 欧美v国产在线一区二区三区| 日韩成人一区二区三区在线观看| 制服丝袜亚洲精品中文字幕| 日本午夜一本久久久综合| 欧美一区二区三区在| 久久99精品国产.久久久久 | 中文字幕精品在线不卡| 丰满岳乱妇一区二区三区| 久久久久久亚洲综合影院红桃| 丁香桃色午夜亚洲一区二区三区| 国产精品久久影院| 色吊一区二区三区| 亚欧色一区w666天堂| 久久女同性恋中文字幕| 成人精品电影在线观看| 尤物在线观看一区|