新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32學習筆記之USART

        STM32學習筆記之USART

        作者: 時間:2016-11-26 來源:網絡 收藏
        USART功能概述
        接口通過三個引腳與其他設備連接在一起(見圖248)。任何USART雙向通信至少需要兩個腳:接收數據輸入(RX)和發送數據輸出(TX)。
        RX:接收數據串行輸。通過過采樣技術來區別數據和噪音,從而恢復數據。
        TX:發送數據輸出。當發送器被禁止時,輸出引腳恢復到它的I/O端口配置。當發送器被激活,并且不發送數據時,TX引腳處于高電平。在單線和智能卡模式里,此I/O口被同時用于數據的發送和接收。
        總線在發送或接收前應處于空閑狀態
        ● 一個起始位
        ● 一個數據字(8或9位),最低有效位在前
        ● 0.5,1.5,2個的停止位,由此表明數據幀的結束
        ● 使用分數波特率發生器 —— 12位整數和4位小數的表示方法。
        ● 一個狀態寄存器(USART_SR)
        ● 數據寄存器(USART_DR)
        ● 一個波特率寄存器(USART_BRR),12位的整數和4位小數
        ● 一個智能卡模式下的保護時間寄存器(USART_GTPR)
        關于以上寄存器中每個位的具體定義,請參考寄存器描述第節:USART寄存器描述。
        在同步模式中需要下列引腳:
        ● CK:發送器時鐘輸出。此引腳輸出用于同步傳輸的 時鐘, (在Start位和Stop位上沒有時鐘脈沖,軟件可選地,可以在最后一個數據位送出一個時鐘脈沖)。數據可以在RX上同步被接收。這可以用來控制帶有移位寄存器的外部設備(例如LCD驅動器)。時鐘相位和極性都是軟件可編程的。在智能卡模式里,CK可以為智能卡提供時鐘。
        在IrDA模式里需要下列引腳:
        ● IrDA_RDI: IrDA模式下的數據輸入。
        ● IrDA_TDO: IrDA模式下的數據輸出。
        下列引腳在硬件流控模式中需要:
        ● nCTS: 清除發送,若是高電平,在當前數據傳輸結束時阻斷下一次的數據發送。
        void USART_SendChar(USART_TypeDef* USARTx, uint16_t Data)
        {
        //檢測參數
        assert_param(IS_USART_ALL_PERIPH(USARTx));
        assert_param(IS_USART_DATA(Data));
        USARTx->DR = (Data & (uint16_t)0x01FF);
        while(!(USARTx->SR & USART_SR_TC));
        }
        void USART_SendString(USART_TypeDef* USARTx, uint8_t *pString)
        {
        while(*pString)
        {
        USART_SendChar(USARTx, *pString++);
        }
        PS: 在非中斷情況下,要通過檢測SR位來判斷是否發送完成:while(!(USARTx->SR & USART_SR_TC));
        中斷情況下: if(USART_GetITStatus(USARTy, USART_IT_TXE) != RESET)


        關鍵詞: STM32學習筆記USAR

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 元氏县| 平湖市| 凤庆县| 永川市| 龙江县| 石渠县| 金秀| 新沂市| 古蔺县| 楚雄市| 岚皋县| 青铜峡市| 桐乡市| 新余市| 资中县| 辰溪县| 丘北县| 隆子县| 宜州市| 聂拉木县| 南投市| 叙永县| 光山县| 兰溪市| 吕梁市| 资源县| 宁海县| 兴仁县| 潍坊市| 岐山县| 九江县| 扎囊县| 阳信县| 北京市| 邹平县| 湘潭县| 璧山县| 正安县| 永宁县| 滦南县| 舞钢市|