娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年02月02日(星期日)

2020年02月02日 | 【MSP430】UART庫函數

發布者:beup001 來源: eefocus關鍵字:MSP430  UART  庫函數 手機看文章 掃描二維碼
隨時隨地手機看文章

#include

 

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

 * 文件功能描述:   

 *          MSP430F16x,MSP430F14X系列單片機串口通訊函數庫(簡化版)

 *      說明:  這個程序庫完成串口的初始化、發送字符和字符串、接收

 *              使字符功能用方法:把Uart.c加入到項目,同時在要調用

 *              此程序庫的程序文件中加入包含Uart.h的語句;這樣即可

 *              正常使用頭文件中聲明的程序了;詳細可參考 本工程 和

 *               main.c

 *              如 果要改為UART1模塊,只需把宏定義的x 對應的0改為1

 *              即可;如果要同時使用0、1兩個模塊,就需要把函數的名

 *              字該為不同,兩個文件分別訪問0、1兩個模塊

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

 

/******************************寄存器宏定義**************************/

#define UxCTL   U0CTL

#define UxRCTL  U0RCTL

#define UxTCTL  U0TCTL

 

#define UxBR0   U0BR0

#define UxBR1   U0BR1

#define UxMCTL  U0MCTL

 

#define UxRXBUF U0RXBUF

#define UxTXBUF U0TXBUF

 

#define UxME    U0ME

#define UxIE    U0IE

#define UxIFG   U0IFG

 

#define UTXEx   UTXE0

#define URXEx   URXE0

 

#define URXIEx  URXIE0

#define UTXIEx  UTXIE0

 

#define UARTxTX_VECTOR  UART0TX_VECTOR

#define UARTxRX_VECTOR  UART0RX_VECTOR

 

#define UARTON  P3SEL |= 0X30           // P3.4,5 = UART0 TXD/RXD

 

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

 

char TxFlag=1;

char RxFlag=0;

 

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

* 名    稱:abs

* 功    能:求絕對值

* 入口參數:i:整數

* 出口參數:int 求得的絕對值

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

int abs(int i)

{

    return (i>=0?i:(-i));

}

 

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

* 名    稱:SetBaudRateRegisters

* 功    能:根據時鐘 波特率設置對應寄存器

* 入口參數:

*           clk:        所選時鐘頻率(如:32768)

*           baud:       波特率      (300~115200)

* 出口參數:無

* 范    例: SetBaudRateRegisters(32768,9600)//用時鐘頻率32768產生9600的波特率

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

void SetBaudRateRegisters(long clk,long baud)

{

    int n = clk / baud;     //整數波特率

    char mSum = 0;          //Σmi

    int txEr0;              //對應位為0時錯誤率

    int txEr1;              //對應位為1時錯誤率

    char i = 0;             //循環計數

    

    UxBR1 = n >> 8;         //高8位

    UxBR0 = n & 0xff;       //低8位

    UxMCTL = 0;

    

    //循環 比較錯誤率大小 設置UxMCTL

    for(;i < 8;i++)

    {

        txEr0 = 100 * baud * ((i + 1) * n + mSum) / clk - 100 * (i + 1);

        txEr1 = 100 * baud * ((i + 1) * n + mSum + 1) / clk - 100 * (i + 1);

        if(abs(txEr1) < abs(txEr0))

        {

            mSum++;

            UxMCTL |= (1<        }

    }

}

 

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

* 名    稱:UartInit()

* 功    能:初始化串口。設置波特率等

* 入口參數:

*           baud:       波特率      (300~115200)

            parity:     奇偶校驗位  ('n'=無校驗  'p'=偶校驗  'o'=奇校驗)

            datsBits:   數據位位數  (7或8)

            stopBits:   停止位位數  (1或2)

* 出口參數:返回值為1時表初化成功,為0表示參數有錯誤

* 范    例: UartInit(9600,'n',8,1) //設成9600bps,無校驗,8位數據,1位停止位

            UartInit(2400,'p',7,2) //設成2400bps,偶校驗,7位數據,2位停止位

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

char UartInit(long baud,char parity,char dataBits,char stopBits)

{

    long int brclk;                 //波特率發生器時鐘頻率

    

    UxCTL |= SWRST;                 //初始

    

    //時鐘源設置

    UxTCTL &=~ (SSEL0+SSEL1);       //清除之前的時鐘設置

    if(baud<=9600)                  //

    {

      UxTCTL |= SSEL0;              //ACLK,降低功耗

      brclk = 32768;                //波特率發生器時鐘頻率=ACLK(32768)

    }

    else

    {

      UxTCTL |= SSEL1;              //SMCLK,保證速度

      brclk = 1000000;              //波特率發生器時鐘頻率=SMCLK(1MHz)

    }

    

    //------------------------設置波特率-------------------------   

    if(baud < 300||baud > 115200)   //波特率超出范圍

    {

        return 0;

    }

    SetBaudRateRegisters(brclk,baud);         //設置波特率寄存器

  

    //------------------------設置校驗位-------------------------  

    switch(parity)

    {

        case 'n':case'N': UxCTL &=~ PENA;               break;  //無校驗

        case 'p':case'P': UxCTL |= PENA + PEV;          break;  //偶校驗

        case 'o':case'O': UxCTL |= PENA; UxCTL &=~ PEV; break;  //奇校驗  

        default :         return(0);                            //參數錯誤

    }

    

    //------------------------設置數據位-------------------------    

    switch(dataBits)

    {

        case 7:case'7': UxCTL &=~ CHAR; break;      //7位數據

        case 8:case'8': UxCTL |= CHAR;  break;      //8位數據

        default :       return(0);                  //參數錯誤

    } 

    //------------------------設置停止位-------------------------    

    switch(stopBits)

    {

        case 1:case'1': UxCTL &= ~SPB;  break;      //1位停止位

        case 2:case'2': UxCTL |= SPB;   break;      //2位停止位

        default :       return(0);                  //參數錯誤

    }

    

    UARTON;                     //端口使能

    UxME |= UTXEx + URXEx;      //發送 接收使能

    

    UxIE |= URXIEx + UTXIEx;    // Enable USART0 RX interrupt 

    

    UCTL0 &= ~SWRST;            // Initialize USART state machine

    

    return(1);                  //設置成功

}

 

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

* 名    稱:UartLpm

* 功    能:串口收/發等待過程中,將時鐘系統的部分時鐘該關掉,休眠省電

* 入口參數:無

* 出口參數:無

* 說    明: 若與其他外設的時鐘沖突,可注釋掉該函數,但會增加功耗。

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

void UartLpm()

{

    if(UxTCTL&SSEL0) LPM3;  //若以ACLK 作時鐘,進入LPM3休眠(僅打開ACLK)

    else             LPM0;  //若以SMCLK作時鐘,進入LPM0休眠(不關閉SMCLK)

}

 

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

* 名    稱:UartWriteChar

* 功    能:向串口寫一個字節數據

* 入口參數:c:  待發送的一字節數據

* 出口參數:無

* 說    明: 在等待發送完畢的過程中,CPU會休眠

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

void UartWriteChar(char c)

    while (TxFlag==0) UartLpm();  // 等待上一字節發完,并休眠

    TxFlag=0;                     //

    UxTXBUF=c;

}

 

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

* 名    稱:UartReadChar

* 功    能:從串口讀取1字節數據

* 入口參數:無  

* 出口參數:收到的一字節數據

* 說    明: 如果串口沒有數據,會一直等待。等待過程中,CPU會休眠

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

char UartReadChar()

    while (RxFlag==0) UartLpm(); // 收到一字節?

    RxFlag=0;

    return(UxRXBUF);

}

 

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

* 名    稱:UartWriteStr

* 功    能:向串口寫一個字符串

* 入口參數:s:要寫入的字符串  

* 出口參數:無

* 說    明: 如果沒有到 NULL 繼續寫入字符

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

void UartWriteStr(char *s)

{

    while(*s)

    {

[1] [2]
關鍵字:MSP430  UART  庫函數 引用地址:【MSP430】UART庫函數

上一篇:MSP430F5529 上手小例程2
下一篇:160160液晶屏+MSP430F169程序和電路圖

推薦閱讀

說到索尼,你只知道“索尼大法好”??真的是“膚淺”!業內人還知道另外一句——“‘姨夫’的微笑由我來守護。”?這里的“姨夫”是誰??他就是索尼的CEO平井一夫(Kazuo Hirai),不過,今天索尼宣布CEO平井一夫將在4月1日起離任,職位由現CFO 吉田憲一郎(Kenichiro Yoshida)取代。?平井一夫?居然把交接之日選在了愚人節這一天,真是讓人猜不透...
人工智能是未來數年的主流和趨勢,它是由算法、算力和數據組成,而算力的決定性因素就是AI芯片。目前全球從事AI芯片研究的企業接近百家,未來可能會更多,因為AI芯片分很多種,應用場景的多樣化決定其芯片不一樣。以云端和終端的芯片最多,其中大概有二三十家能成為主流的芯片,看看它們是哪些吧!一、高通高通一直在和Yann LeCun在Facebook AI研究機構...
投入式液位變送器直接投入到被測介質中,安裝使用相當方便。固態結構,無可動部件,高可靠性,使用壽命長從水、油到粘度較大的糊狀都可以進行高精度測量,不受被測介質起泡、沉積、電氣特性的影響寬范圍的溫度補償。一、投入式液位變送器的基本工作原理就是靜壓液位測量。液體介質中,某一個深度產生的壓力就是測量點以上的介質自身的重量所產生的。它與介...
近期一則關于阿里巴巴人工智能實驗室(AI Labs)并入智能阿里云的消息一度引發業界對其人工智能戰略變化的猜測。阿里巴巴官方回應稱,AI Labs在上一輪架構變動中已經整體并入云智能事業群,主要由譚平教授負責,新官網正在制作將獨立上線。這意味著,曾經孵化出天貓精靈AI助手、服務機器人等產品的AI Labs 從此要加上一個“云”字。 公開資料顯示,阿...

史海拾趣

問答坊 | AI 解惑

如何使用J-LINK把文件下載到2410的NAND FLASH

我從網上買了個J-LINK V7的仿真器,從http://www.segger.com/download_jlink.html下載了最新驅動軟件,安裝好后發現不知怎么才能把文件下載到2410的NAND FLASH,后來賣家給我了一份使用說明書.但里面和軟件里一樣你找不到2410,2440使用說明,有誰用過J- ...…

查看全部問答∨

用最新庫玩轉智林STM32開發板(之九)------在真彩屏上顯示方向鍵的狀態

有智林板的可以把所有文件考到一個目錄下邊,工程非常簡單只包括三個文件 main.C//主文件 TFT018.c//顯示有關文件 STM32F10XR.LIB//這個文件在MDK目錄下邊很好找 智林開發板板載上,下,左,右,方向鍵,若直接按,就是OK,本程序只是設置好上拉電阻輸 ...…

查看全部問答∨

帶字庫12864液晶調用6*9字庫

12864調用自己寫的6*9數字字庫,目前的想法是這樣的,代碼如下: void shuzidisp(uchar x,uchar y,uchar *p) { uchar i; uchar GDRAM_hbit,GDRAM_lbit; uchar x_Dyte,x_byte;              &nbs ...…

查看全部問答∨

天饋系統不匹配對移動通信的影響及解決方法

天饋系統不匹配對移動通信的影響及解決方法   天饋系統是移動通信系統的重要組成部分,其性能優劣對整體移動通信質量的影響至關重要。根據移動網運行質量統計結果分析,造成移動通信質量指標下降的主要原因來自天饋系統(約占一半以上),而在天 ...…

查看全部問答∨

給論壇提個建議

能否增加個我的回復查詢功能,經常在論壇上看到好東西,回復一下,如果增加我的回復這個功能,那么以后查找這個帖子就方便許多了…

查看全部問答∨

MSP430F149單片機,變量存儲單位

16位單片機 int占多少位? float占多少位? double占多少位?…

查看全部問答∨

關于3.3V轉5V的電路分析問題

各位高手:     由于本人電路水平有限,對下圖不知道分析的對不對,請大家幫忙看看,不對的地方請指正,謝謝!!     我的分析:         當3.3V口輸出高電平為3.3V時,那么A點電電壓為3.9V ...…

查看全部問答∨

求單片機發送多字節數據程序,在線等高手!

如題:連續發送數據:01(起始位) 31(本機地址) #0A(控制命令字) __ __ __(數據) 06(結束位) …

查看全部問答∨

VS2005如何開發wince5.0的程序,如何測試,如何運行ce5.0模擬器

首先我要說我初次接觸嵌入式開發。 再vs2003下面開發智能“只能設備應用程序”,vs2003本身就有windos ce net模擬器,可以非常輕松的運行模擬器,但是為什么vs2005下的就沒有這個模擬器呢? 我的操作系統是windows server 2003從微軟網站下載windo ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 湖州市| 岳阳县| 壶关县| 英德市| 林州市| 如皋市| 彭泽县| 溆浦县| 玉门市| 洪洞县| 赤峰市| 东乌珠穆沁旗| 绥滨县| 北京市| 会昌县| 定结县| 措勤县| 密山市| 龙门县| 中西区| 贵阳市| 沈阳市| 永泰县| 宁乡县| 楚雄市| 轮台县| 靖西县| 惠州市| 霍城县| 介休市| 商城县| 潞西市| 浮山县| 汕头市| 方正县| 高州市| 峨山| 壶关县| 红安县| 原平市| 湖州市|