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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? uart.c

?? ARM7的UART驅(qū)動程序 可以自由配置緩存大小 驅(qū)動函數(shù)集 以及接口簡單 很適合初學者提高自己的驅(qū)動開發(fā)能力的參考程序 產(chǎn)品級別的代碼 注釋很詳盡 但需要自己提供IRQ部分的初始化部分程序 本作者不
?? C
?? 第 1 頁 / 共 4 頁
字號:
/********************************************************************************************************
* 文 件 名 : Comm.C
* 程 序 員 : (CaiJie) hnclcj@gmail.com
*                             (c) Copyright 2007-2007, CaiJie
*                                  All Rights Reserved
* 說    明 : 這里的串口函數(shù)都是建立在LPC ARM7的基礎(chǔ)上的 應(yīng)用時根據(jù)硬件環(huán)境更改硬件相關(guān)函數(shù) (硬件函數(shù)如下)
********************************************************************************************************/


#define  COMM_GLOBALS
#include "includes.h"


#if      COMM_MODULE_EN > 0



/********************************************************************************************************
* 局部常數(shù)
********************************************************************************************************/
#ifndef MCU_Fosc                              /* MCU的晶振頻率設(shè)置 這是計算波特率必須的參數(shù)            */
//#error "no defien MCU_Fosc       e.g.  #define MCU_Fosc 11059200L "
#endif

#define IER_RBR                   0x01            // 中斷使能 接收數(shù)據(jù)
#define IER_THRE                  0x02            // 中斷使能 發(fā)送數(shù)據(jù)
#define IER_RLS                   0x04            // 中斷使能 線狀態(tài) (可能涉及字符超時)

#define IIR_PEND                  0x01            // 中斷標志 是否中斷發(fā)生
#define IIR_RLS                   0x03            // 中斷標志 接收線狀態(tài)
#define IIR_RDA                   0x02            // 中斷標志 接收數(shù)據(jù)
#define IIR_CTI                   0x06            // 中斷標志 超時
#define IIR_THRE                  0x01            // 中斷標志 發(fā)送數(shù)據(jù)

#define LSR_RDR                   0x01            //
#define LSR_OE                    0x02            //
#define LSR_PE                    0x04            //
#define LSR_FE                    0x08            //
#define LSR_BI                    0x10            //
#define LSR_THRE                  0x20            //
#define LSR_TEMT                  0x40            //
#define LSR_RXFE                  0x80            //


/********************************************************************************************************
* 局部變量
********************************************************************************************************/
                                                            // 串口0的變量信息
#if    COMM0_UNIT_EN > 0 && COMM0_RXD_EN > 0                // 串口0接收變量
static INT8U          volatile Comm0RxBuf[COMM0_RXD_SIZE];  // 串口0接收分配緩存
static COMM0_RXD_TYPE volatile Comm0RxBufCtr;               // 串口0接收數(shù)據(jù)個數(shù)計數(shù)器
static COMM0_RXD_TYPE volatile Comm0RxInIx;                 // 串口0接收數(shù)據(jù)入緩存位置索引
static COMM0_RXD_TYPE volatile Comm0RxOutIx;                // 串口0接收數(shù)據(jù)出緩存位置索引
#endif
#if    COMM0_UNIT_EN > 0 && COMM0_TXD_EN > 0                // 串口0發(fā)送變量
static BOOL           volatile Comm0bCanSend;               // 串口0發(fā)送忙標志 0=不忙 1=忙
static INT8U          volatile Comm0TxBuf[COMM0_TXD_SIZE];  // 串口0發(fā)送分配緩存
static COMM0_TXD_TYPE volatile Comm0TxBufCtr;               // 串口0發(fā)送數(shù)據(jù)個數(shù)計數(shù)器
static COMM0_TXD_TYPE volatile Comm0TxInIx;                 // 串口0發(fā)送數(shù)據(jù)入緩存位置索引
static COMM0_TXD_TYPE volatile Comm0TxOutIx;                // 串口0發(fā)送數(shù)據(jù)出緩存位置索引
#endif

                                                            // 串口1的變量信息
#if    COMM1_UNIT_EN > 0 && COMM1_RXD_EN > 0                // 串口1接收變量
static INT8U          volatile Comm1RxBuf[COMM1_RXD_SIZE];  // 串口1接收分配緩存
static COMM1_RXD_TYPE volatile Comm1RxBufCtr;               // 串口1接收數(shù)據(jù)個數(shù)計數(shù)器
static COMM1_RXD_TYPE volatile Comm1RxInIx;                 // 串口1接收數(shù)據(jù)入緩存位置索引
static COMM1_RXD_TYPE volatile Comm1RxOutIx;                // 串口1接收數(shù)據(jù)出緩存位置索引
#endif
#if    COMM1_UNIT_EN > 0 && COMM1_TXD_EN > 0                // 串口1發(fā)送變量
static BOOL           volatile Comm1bCanSend;               // 串口1發(fā)送忙標志 0=不忙 1=忙
static INT8U          volatile Comm1TxBuf[COMM1_TXD_SIZE];  // 串口1發(fā)送分配緩存
static COMM1_TXD_TYPE volatile Comm1TxBufCtr;               // 串口1發(fā)送數(shù)據(jù)個數(shù)計數(shù)器
static COMM1_TXD_TYPE volatile Comm1TxInIx;                 // 串口1發(fā)送數(shù)據(jù)入緩存位置索引
static COMM1_TXD_TYPE volatile Comm1TxOutIx;                // 串口1發(fā)送數(shù)據(jù)出緩存位置索引
#endif




/********************************************************************************************************
* 局部函數(shù)
********************************************************************************************************/
#if    COMM0_UNIT_EN > 0 && COMM0_TXD_EN > 0      /* 串口0的本地函數(shù)                                   */
static void   Comm0TxInBuf (INT8U Data);
//__irq  void   Comm0IntISR  (void);
extern void UART0_Handler(void);
#endif

#if    COMM1_UNIT_EN > 0 && COMM1_TXD_EN > 0      /* 串口0的本地函數(shù)                                   */
static void  Comm1TxInBuf (INT8U Data);
//__irq  void   Comm1IntISR  (void);
extern void UART1_Handler(void);
#endif







/********************************************************************************************************
* 功 能 : COMM0 工作狀態(tài)初始化
* 入 口 : 'baud'   波特率 最大波特率為實際硬件能支持的波特率和數(shù)據(jù)處理能力設(shè)置
*         'parity' 奇偶效驗 這里根據(jù)bits自動為固定模式
*         'bits'   數(shù)據(jù)位  為8或9 其他數(shù)據(jù)則在C51為8BIT移位模式
*         'stops'  停止位  這里根據(jù)bits自行更改為固定模式 為了兼容以后的版本預(yù)留
* 返 回 : 1> COMM_ON_ERR   串口設(shè)置沒有錯誤
*         2> COMM_BAD_BUAD 錯誤的波特率
*         3> COMM_BAD_MODE 錯誤的工作模式
* 說 明 : 1> baud 為600以下時 需要屏蔽掉SETBIT(PCON,SMOD)波特率倍增模式
*         2> TH1的波特率發(fā)生率的計算公式需要更改
********************************************************************************************************/
#if    (COMM0_UNIT_EN > 0 && COMM0_RXD_EN > 0) || ( COMM0_UNIT_EN > 0 && COMM0_TXD_EN > 0)

INT8U  Comm0CfgPort (INT32U baud, INT8U parity, INT8U bits, INT8U stops)
{
    INT32U Fdiv;
    INT8U  mode;


    if ((baud == 0) || (baud > 115200)) {         // 波特率過濾
        return (COMM_BAD_BAUD);                   // 錯誤波特率
    }
    if ((bits <5) || (bits > 8)) {                // 數(shù)據(jù)位數(shù)
        return (COMM_BAD_MODE);                   // 錯誤模式
    }
    if (parity > 4)  {                            // 校驗
        return (COMM_BAD_MODE);                   // 錯誤模式
    }

    if ((stops == 0) || (stops > 2)) {            // 停止位
        return (COMM_BAD_MODE);                   // 錯誤模式
    }

    mode  = 0;                                    // 準備設(shè)置UART工作模式 BITS
    switch (parity) {                             // 校驗?zāi)J?    case 0 :                                      // 奇校驗
        mode &= ~(3 << 4);                        //
        mode |=  (0 << 4);                        // 1
        break;
    case 1 :                                      // 偶校驗
        mode &= ~(3 << 4);                        //
        mode |=  (1 << 4);                        // 1
        break;
    case 2 :                                      // 強制為1
        mode &= ~(3 << 4);                        //
        mode |=  (2 << 4);                        // 1
        break;
    case 3 :                                      // 強制為0
        mode &= ~(3 << 4);                        //
        mode |=  (3 << 4);                        // 1
        break;
    default :                                     //
        return(COMM_BAD_MODE);                    // 錯誤模式
    }

    switch (bits) {                               // 設(shè)置bits
    case 5 :                                      // 5
        mode &= ~(3 << 0);                        //
        mode |=  (0 << 0);                        // 0
        break;
    case 6 :                                      // 6
        mode &= ~(3 << 0);                        //
        mode |=  (1 << 0);                        // 1
        break;
    case 7 :                                      // 7
        mode &= ~(3 << 0);                        //
        mode |=  (2 << 0);                        // 2
        break;
    case 8 :                                      // 8
        mode &= ~(3 << 0);                        //
        mode |=  (3 << 0);                        // 3
        break;
    default:                                      //
        return(COMM_BAD_MODE);                    // 錯誤模式
    }

    switch (stops) {                              // 停止位
    case 1 :                                      //
        mode &= ~(1 << 2);                        //
        mode |=  (0 << 2);                        // 0
        break;
    case 2 :                                      //
        mode &= ~(1 << 2);                        //
        mode |=  (1 << 2);                        // 1
        break;
    default :                                     //
        return(COMM_BAD_MODE);                    // 錯誤模式
    }

    U0LCR = 0x80;                                 // 允許訪問除數(shù)寄存器
    Fdiv  = (Fpclk / 16 ) / baud ;                //
    U0DLM = (INT8U)(Fdiv >> 8);                   // 波濤率
    U0DLL = (INT8U)(Fdiv >> 0);                   // 波特率
    U0LCR = 0x00;                                 // DLAB = 0(禁止訪問除數(shù)寄存器)
    U0FCR = 0x07;                                 // 使能并初始化FIFO 1字節(jié)觸發(fā)中斷
    U0LCR = mode;                                 // 設(shè)置好通訊模式數(shù)據(jù)
    U0IER = IER_RBR | IER_THRE;                   // 允許接收和發(fā)送中斷 線狀態(tài)中斷未使能
//    U0IER = IER_RBR | IER_THRE | IER_RLS;       // Enable UART0 interrupt


    return (COMM_NO_ERR);
}
#endif


/********************************************************************************************************
* 功 能 : 初始化串口0的各種變量
* 入 口 : 無
* 返 回 : 無
* 說 明 : 無
********************************************************************************************************/
#if   (COMM0_UNIT_EN > 0 && COMM0_RXD_EN > 0) || ( COMM0_UNIT_EN > 0 && COMM0_TXD_EN > 0)

void   Comm0Init (void)
{

    PINSEL0 &= ~(0x05<<0);                        // 清除設(shè)置 0,1=TXD  2,3=RXD
    PINSEL0 |=  (0x05<<0);                        // 連接GPIO到TXD RXD

    IRQInstall(UART0_INT, (void *)UART0_Handler); // 裝載IRQ
//    IRQInstall(UART0_INT, (void *)(Comm0IntISR));// 配置UART為向量中斷

#if COMM0_RXD_EN > 0                              // 初始化接收的各種變量

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本韩国精品在线| 日韩精品一区二区三区在线| 欧美三级电影网站| 欧美一个色资源| 国产欧美日韩激情| 亚洲一区二区欧美| 国产在线视频一区二区| 色av成人天堂桃色av| 精品国产凹凸成av人导航| 亚洲另类色综合网站| 国产一区二区在线视频| 欧美色视频在线| 中文字幕在线一区| 国产乱码一区二区三区| 欧美精品一二三四| 亚洲青青青在线视频| 国产精品自在欧美一区| 日韩一级黄色片| 夜夜爽夜夜爽精品视频| 成人午夜免费视频| 久久久精品影视| 秋霞av亚洲一区二区三| 欧美性色欧美a在线播放| 国产嫩草影院久久久久| 日韩精品三区四区| 91免费观看在线| 国产亚洲精品超碰| 国产一区在线精品| 日韩精品综合一本久道在线视频| 亚洲国产一区二区三区| 91视频com| 中文字幕中文字幕一区二区| 成人午夜视频福利| 欧美韩日一区二区三区四区| 国产激情精品久久久第一区二区| 日韩欧美的一区| 美女被吸乳得到大胸91| 91精品国产欧美日韩| 日本不卡1234视频| 日韩欧美激情四射| 久久av老司机精品网站导航| 欧美少妇性性性| 亚洲综合免费观看高清完整版| a4yy欧美一区二区三区| 亚洲欧美二区三区| 97久久精品人人做人人爽| 国产精品丝袜久久久久久app| 国产98色在线|日韩| 中文字幕欧美国产| 99re66热这里只有精品3直播| 亚洲精选免费视频| 欧美精品亚洲一区二区在线播放| 日韩福利视频网| 日韩欧美综合一区| 国产成都精品91一区二区三| 国产精品久久久久桃色tv| 91热门视频在线观看| 亚洲线精品一区二区三区| 欧美一级一级性生活免费录像| 久久99国产精品成人| 国产欧美一区二区精品久导航| 波波电影院一区二区三区| 亚洲三级小视频| 91麻豆精品国产91| 岛国av在线一区| 亚洲国产综合91精品麻豆| 欧美精品18+| 国产精品羞羞答答xxdd | 美女视频第一区二区三区免费观看网站 | 亚洲伊人伊色伊影伊综合网| 666欧美在线视频| 国产凹凸在线观看一区二区| 一区二区三区国产精华| 欧美tk丨vk视频| 色老头久久综合| 麻豆国产精品官网| 国产精品久久久久久久裸模| 欧美色视频在线观看| 国产成人午夜高潮毛片| 亚洲午夜免费电影| 国产欧美综合在线| 欧美综合天天夜夜久久| 久久www免费人成看片高清| 国产精品国产自产拍高清av王其| 欧美精品免费视频| 99久久国产综合精品麻豆| 毛片av一区二区三区| 一区二区成人在线| 国产清纯白嫩初高生在线观看91| 欧美日韩国产一级片| 99久久伊人精品| 精品一二三四在线| 日精品一区二区| 亚洲另类春色校园小说| 国产欧美日韩精品a在线观看| 欧美一区二区三区在线观看视频| 91浏览器在线视频| 成人午夜激情视频| 国产一区二区美女诱惑| 日本不卡高清视频| 五月天国产精品| 一区二区成人在线| 亚洲男女毛片无遮挡| 国产精品人人做人人爽人人添| 欧美sm美女调教| 欧美一区二区成人6969| 欧美写真视频网站| 91黄视频在线观看| 色欧美88888久久久久久影院| 国产a精品视频| 国产成人午夜视频| 国产精品99久久久久久有的能看| 久久精品99国产精品| 日韩高清一级片| 男女激情视频一区| 免费人成在线不卡| 麻豆视频观看网址久久| 久久激情五月婷婷| 蜜臀久久99精品久久久久宅男| 视频一区二区中文字幕| 日韩主播视频在线| 日韩中文字幕亚洲一区二区va在线| 午夜伦理一区二区| 天堂蜜桃一区二区三区| 日本不卡在线视频| 精品一区二区久久久| 国产精品一线二线三线精华| 久久99国产精品免费| 国产成人av电影免费在线观看| 成人av电影免费观看| 91美女视频网站| 欧美主播一区二区三区| 6080午夜不卡| 久久综合九色综合97_久久久| 久久婷婷色综合| 自拍偷拍国产亚洲| 亚洲福利国产精品| 久久se精品一区二区| 国产成人在线视频网站| 97久久精品人人做人人爽50路| 欧美日韩成人激情| 欧美一区二区在线视频| 久久久久久久精| 中文字幕五月欧美| 亚洲一区二区三区四区的| 美女在线视频一区| 粉嫩av一区二区三区在线播放| 91老司机福利 在线| 51精品国自产在线| 国产精品天干天干在线综合| 亚洲曰韩产成在线| 国产精品资源站在线| 色综合久久久久网| 欧美成人精品福利| 亚洲人123区| 麻豆成人免费电影| 91一区二区三区在线观看| 欧美一级高清片| 亚洲欧美日韩国产中文在线| 日本欧美久久久久免费播放网| 国产黄人亚洲片| 欧美日韩一级二级三级| 国产亚洲欧美一级| 日韩综合小视频| 99视频热这里只有精品免费| 91精品国产综合久久国产大片| 国产精品美女久久久久久久久久久| 亚洲18色成人| 成人精品国产福利| 欧美一级日韩免费不卡| 亚洲免费观看高清完整版在线观看熊 | 51久久夜色精品国产麻豆| 中文一区二区在线观看 | 亚洲精品午夜久久久| 久久精品国产**网站演员| 在线一区二区观看| 国产精品久久久久一区二区三区| 美腿丝袜亚洲色图| 欧美日韩国产高清一区二区三区| 国产丝袜美腿一区二区三区| 青青草精品视频| 欧美日韩在线亚洲一区蜜芽| 中文字幕一区二区三区视频| 国产一区二区三区电影在线观看| 4438x亚洲最大成人网| 亚洲在线免费播放| 色婷婷综合五月| 国产精品传媒在线| 国产伦精品一区二区三区免费迷| 欧美一二三区精品| 日韩成人av影视| 欧美日韩五月天| 亚洲高清免费观看高清完整版在线观看 | 成人激情动漫在线观看| www国产成人免费观看视频 深夜成人网| 亚洲r级在线视频| 欧美三级中文字| 亚洲永久精品大片| 欧美色大人视频| 午夜婷婷国产麻豆精品|