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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? uart1.c

?? ucos II操作系統(tǒng)的源代碼。程序完整
?? C
字號(hào):
/****************************************Copyright (c)**************************************************

**描      述: μCOS-II下LPC210x的UART1底層驅(qū)動(dòng) 
**占用事件:1個(gè)Sem
*******************************************************************************************************/

#define IN_UART1
#include "config.h"

static int UART1SendBuf[(UART1_SEND_QUEUE_LENGTH + sizeof(int) - 1) / sizeof(int)];
static OS_EVENT *Uart1Sem;


/*********************************************************************************************************
** 函數(shù)名稱(chēng): Uart1WriteFull
** 功能描述: 數(shù)據(jù)隊(duì)列寫(xiě)滿(mǎn)處理程序 
** 輸 入: Buf:指向數(shù)據(jù)隊(duì)列
**        Data:將要入隊(duì)的數(shù)據(jù)
**        Mod: 入隊(duì)方式
** 輸 出:TRUE  :成功
**        FALSE:失敗
** 全局變量: 無(wú)
** 調(diào)用模塊: 無(wú)
**
** 作 者: 陳明計(jì)
** 日 期: 2003年7月4日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
    uint8 Uart1WriteFull(DataQueue *Buf, QUEUE_DATA_TYPE Data, uint8 Mod)
{
    uint16 temp;
    
    Mod = Mod;
    
    temp = QueueSize((void *)Buf);
    while (temp <= QueueNData((void *)Buf))         /* 等待數(shù)據(jù)隊(duì)列不滿(mǎn) */
    {
        OSTimeDly(2);
    }
    return QueueWrite((void *)Buf, Data);           /* 數(shù)據(jù)重新入隊(duì) */
}

/*********************************************************************************************************
** 函數(shù)名稱(chēng): UART1Init
** 功能描述: 初始化UART1 
** 輸 入: bps:波特率
** 輸 出:無(wú)
**
** 修改人: 黃凱
** 日 期: 2006年11月27日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
*******************************************************************************************************/
INT8U UART1Init(INT32U bps){
    INT16U Fdiv;
    
    PINSEL0 = (PINSEL0 & 0xfff0ffff) | (0x05 << 16);    /* 選擇管腳為UART1 */
IO0DIR = 1 << 11;
    U1LCR = 0x80;                               /* 允許訪問(wèn)分頻因子寄存器 */
    Fdiv = (Fpclk / 16) / bps;                  /* 設(shè)置波特率 */
    U1DLM = Fdiv / 256;							
	U1DLL = Fdiv % 256;						
    U1LCR = 0x03;                               /* 禁止訪問(wèn)分頻因子寄存器 */
                                                /* 且設(shè)置為8,1,n */
	U1IER = 0x05;                               /* 允許接收和發(fā)送中斷 */
    U1FCR = 0x87;                               /* 初始化FIFO */
    if (QueueCreate((void *)UART1SendBuf,
                     sizeof(UART1SendBuf),
                     NULL,
                     (uint8 (*)())Uart1WriteFull)
                     == NOT_OK)
    {
        return FALSE;
    }
    
    Uart1Sem = OSSemCreate(0);
    if (Uart1Sem != NULL)
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }

} 
/*********************************************************************************************************
** 函數(shù)名稱(chēng): UART1Putch
** 功能描述: 發(fā)送一個(gè)字節(jié)數(shù)據(jù)
** 輸 入: Data:發(fā)送的數(shù)據(jù)數(shù)據(jù)
** 輸 出:無(wú)
** 全局變量: 無(wú)
** 調(diào)用模塊: 無(wú)
**
** 修改人: 黃凱
** 日 期: 2006年11月27日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
 void UART1Putch(INT8U Data){
 #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
    OS_CPU_SR  cpu_sr;
#endif   

	uint8 temp1; 
	QueueWrite((void *)UART1SendBuf, Data);         /* 數(shù)據(jù)入隊(duì) */
    OS_ENTER_CRITICAL();
    if ((U1LSR & 0x00000020) != 0)
    {                                               /* UART1發(fā)送保持寄存器空 */
        QueueRead(&temp1, UART1SendBuf);
        U1THR = temp1;
        U1IER = U1IER | 0x02;                       /* 允許發(fā)送中斷 */
    }
    OS_EXIT_CRITICAL();
} 

/*********************************************************************************************************
** 函數(shù)名稱(chēng): UART1Write
** 功能描述: 發(fā)送多個(gè)字節(jié)數(shù)據(jù)
** 輸 入: Data:發(fā)送數(shù)據(jù)存儲(chǔ)位置
**        NByte:發(fā)送數(shù)據(jù)個(gè)數(shù)
** 輸 出:無(wú)
** 全局變量: 無(wú)
** 調(diào)用模塊: UART1Putch
**
** 修改人: 黃凱
** 日 期: 2006年11月27日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void UART1Write(INT8U *Data, INT16U NByte){
#if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
    OS_CPU_SR  cpu_sr;
#endif
    OS_ENTER_CRITICAL();
    while (NByte-- > 0)
    {
        UART1Putch(*Data++);
    }
    OS_EXIT_CRITICAL();
} 
/*********************************************************************************************************
** 函數(shù)名稱(chēng): UART1Getch
** 功能描述: 接收一個(gè)字節(jié)
** 輸 入: 延時(shí)節(jié)拍數(shù)
** 輸 出: 接收到的數(shù)據(jù)
** 全局變量: 無(wú)
** 調(diào)用模塊: 無(wú)
**
** 修改人: 黃凱
** 日 期: 2006年11月27日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
INT8U UART1Getch(INT16U tm){
#if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
    OS_CPU_SR  cpu_sr;
#endif
    uint8 err;

    OS_ENTER_CRITICAL();
     while (((U1LSR & 0x00000001) == 0) && (err != OS_TIMEOUT))
    {                                           /* 沒(méi)有收到數(shù)據(jù) */
        U1IER = U1IER | 0x01;                   /* 允許接收中斷 */
        OSSemPend(Uart1Sem, tm, &err);           /* 等待接收數(shù)據(jù) */
        
    }
    if (err != OS_TIMEOUT)
    {
    	err = U1RBR;                                /* 讀取收到的數(shù)據(jù) */
    }
    else 
    {
    	err = 0x00;
    }
    OS_EXIT_CRITICAL();
    IO0CLR = 1 << 11;
    return err;
} 

/*********************************************************************************************************
** 函數(shù)名稱(chēng): UART1_Exception
** 功能描述: UART1中斷服務(wù)程序
** 輸 入: 無(wú)
** 輸 出: 無(wú)
**         
** 全局變量: 無(wú)
** 調(diào)用模塊: OSSemPost
**
** 修改人: 黃凱
** 日 期: 2006年11月27日
**-------------------------------------------------------------------------------------------------------
** 修改人: 
** 日 期: 
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/
void UART1_Exception(void){	
#if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
    OS_CPU_SR  cpu_sr;
#endif
    uint8 IIR; 
    uint8 temp;
    uint8 i;
    
    OS_ENTER_CRITICAL();

    while(((IIR = U1IIR) & 0x01) == 0)
    {    IO0SET = 1 << 11;                                               /* 有中斷未處理完 */
        switch (IIR & 0x0e)
        {
            case 0x02:                                  /* THRE中斷    */
                for (i = 0; i < UART1_FIFO_LENGTH; i++) /* 向發(fā)送FIFO填充數(shù)據(jù) */
                {
                    if (QueueRead(&temp, UART1SendBuf) == QUEUE_OK)
                    {
                        U1THR = temp;
                    }
                    else
                    {
                        U1IER = U1IER & (~0x02);        /* 隊(duì)列空,則禁止發(fā)送中斷 */
                    }
                }
                break;
            case 0x04:                                  /* 接收數(shù)據(jù)可用 */
                OSSemPost(Uart1Sem);                    /* 通知接收任務(wù) */
                U1IER = U1IER & (~0x01);                /* 禁止接收及字符超時(shí)中斷 */
                break;
            case 0x06:                                  /* 接收線狀態(tài)   */
                temp = U1LSR;
                break;
            case 0x0c:                                  /* 字符超時(shí)指示 */
                OSSemPost(Uart1Sem);                    /* 通知接收任務(wù) */
                U1IER = U1IER & (~0x01);                /* 禁止接收及字符超時(shí)中斷 */
                
                break;
            default :
                break;
        }
    } 
    VICVectAddr = 0;            // 通知中斷控制器中斷結(jié)束
    OS_EXIT_CRITICAL();
}

/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美精品国产国产专区| 一区二区三区美女视频| 在线免费亚洲电影| 激情都市一区二区| 亚洲一区自拍偷拍| 国产精品伦一区| 日韩欧美自拍偷拍| 91视频国产资源| 国产成人自拍网| 免费在线观看视频一区| 亚洲一区二区三区三| 一区二区三区不卡视频| 久久精品一区二区三区不卡 | 国产精品另类一区| 日韩三级在线观看| 欧美肥胖老妇做爰| 在线观看av不卡| 一本一道久久a久久精品| 国产高清不卡一区二区| 久久99在线观看| 蜜桃视频免费观看一区| 五月综合激情婷婷六月色窝| 亚洲欧美二区三区| 成人免费小视频| 国产精品网站导航| 国产视频亚洲色图| 久久人人爽爽爽人久久久| 日韩一级在线观看| 91精品婷婷国产综合久久 | 久久精品一区二区三区不卡牛牛| 欧美一区2区视频在线观看| 欧美高清一级片在线| 欧美影院一区二区三区| 欧美在线小视频| 欧美日韩三级视频| 欧美少妇xxx| 欧美午夜宅男影院| 欧美午夜精品久久久久久孕妇| av综合在线播放| 99久久久无码国产精品| av欧美精品.com| av午夜一区麻豆| 91视频在线观看| 在线一区二区视频| 欧美福利视频导航| 欧美美女激情18p| 欧美一区二区成人6969| 欧美xxxxx牲另类人与| 久久婷婷综合激情| 国产精品视频在线看| 亚洲视频在线一区| 亚洲国产中文字幕在线视频综合| 午夜欧美电影在线观看| 久久国产尿小便嘘嘘尿| 国产麻豆视频一区| 成人精品电影在线观看| 91福利在线导航| 91精品午夜视频| 国产欧美精品日韩区二区麻豆天美| 国产精品久久一卡二卡| 亚洲一区二区精品久久av| 日韩成人精品在线观看| 久久99精品久久久久| 国产成人免费视频网站| 在线看国产日韩| 精品日韩一区二区三区免费视频| 久久久久久**毛片大全| 亚洲欧洲日韩综合一区二区| 亚洲激情五月婷婷| 日韩电影在线观看一区| 国产乱码精品一品二品| 91在线视频免费观看| 7777精品伊人久久久大香线蕉完整版 | 欧美男男青年gay1069videost| 精品毛片乱码1区2区3区| 国产精品第一页第二页第三页| 亚洲一区二区欧美日韩| 国产精品自产自拍| 在线观看一区二区视频| 久久免费视频色| 夜夜操天天操亚洲| 国产一区二区三区精品欧美日韩一区二区三区 | 日本高清免费不卡视频| 日韩免费一区二区| 亚洲免费观看在线观看| 免费精品视频在线| 一本到不卡免费一区二区| 精品国产免费一区二区三区四区| 亚洲色图欧美激情| 裸体在线国模精品偷拍| 色又黄又爽网站www久久| 精品成人免费观看| 亚洲一区二区三区中文字幕| 国产成人精品免费一区二区| 欧美日本国产视频| 亚洲欧美日韩一区二区 | 亚洲h精品动漫在线观看| 国产成人免费网站| 日韩无一区二区| 亚洲高清在线精品| 不卡视频在线观看| 精品国产乱码久久久久久影片| 一区二区三区中文字幕| 国产成人自拍网| 日韩精品中文字幕在线不卡尤物| 一区二区欧美国产| aaa国产一区| 国产欧美日韩一区二区三区在线观看 | 国产精品网站在线观看| 精品午夜一区二区三区在线观看| 欧美日产在线观看| 亚洲在线视频免费观看| 91丨九色丨黑人外教| 国产日韩v精品一区二区| 精品午夜久久福利影院| 91精品国产色综合久久ai换脸 | 国产精品一区二区91| 日韩三级免费观看| 奇米精品一区二区三区四区| 欧美无人高清视频在线观看| 亚洲三级免费观看| av不卡在线观看| 综合色天天鬼久久鬼色| 成人污视频在线观看| 久久久91精品国产一区二区三区| 国产在线一区观看| 久久亚洲综合色一区二区三区| 日韩二区在线观看| 日韩欧美一区二区三区在线| 日韩精品欧美成人高清一区二区| 欧美日韩成人在线| 青青草国产精品97视觉盛宴| 欧美一级片免费看| 久久成人免费日本黄色| 久久综合资源网| 国产91丝袜在线播放0| 国产色综合久久| av一区二区三区在线| 国产精品国产精品国产专区不蜜| 99久久99久久精品免费看蜜桃| 国产精品国产自产拍高清av| 91色视频在线| 亚洲一区二区欧美激情| 欧美精品久久99| 精品在线亚洲视频| 国产三级精品视频| 一本到不卡精品视频在线观看| 亚洲一区二区三区四区五区中文 | 亚洲黄色片在线观看| 91激情在线视频| 午夜日韩在线电影| 日韩欧美国产午夜精品| 国产福利电影一区二区三区| 国产精品女主播在线观看| 91丝袜国产在线播放| 亚洲v精品v日韩v欧美v专区| 日韩欧美一区二区不卡| 国产成人在线免费观看| 亚洲品质自拍视频网站| 欧美剧情片在线观看| 国产精一区二区三区| 亚洲女同ⅹxx女同tv| 欧美视频在线播放| 久久99久久精品| 国产精品国产三级国产三级人妇| 在线日韩av片| 极品少妇xxxx精品少妇| ...xxx性欧美| 欧美一级视频精品观看| 成人黄色软件下载| 亚洲成av人片一区二区三区| 久久久久久久免费视频了| 在线观看国产日韩| 国产在线不卡一区| 亚洲精品一卡二卡| 久久夜色精品国产欧美乱极品| 91色综合久久久久婷婷| 另类小说视频一区二区| 亚洲欧洲av另类| 日韩女优毛片在线| 91福利国产精品| 国产麻豆精品视频| 亚洲h精品动漫在线观看| 国产免费成人在线视频| 欧美日本精品一区二区三区| 成人av动漫在线| 久久国产精品无码网站| 亚洲精品综合在线| 国产丝袜欧美中文另类| 5月丁香婷婷综合| 色综合久久久久综合体桃花网| 国产最新精品精品你懂的| 亚洲综合自拍偷拍| 中文字幕欧美激情一区| 91精品福利在线一区二区三区 | 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲视频一区二区免费在线观看| 日韩欧美一区二区视频| 欧美日韩美少妇| 日本黄色一区二区|