在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

串口通訊(Serial Communication) 簡介2

jf_78858299 ? 來源:匯極星科技 ? 作者:匯極星科技 ? 2023-04-23 11:29 ? 次閱讀

USART校驗控制

STM32F103 系列控制器 USART 支持奇偶校驗。當使用校驗位時,串口傳輸的長度將是 8 位的數據幀加上 1 位的校驗位總共 9 位,此時 USART_CR1 寄存器的 M 位需要設置為 1,即 9 數據位。

將 USART_CR1 寄存器的 PCE 位置 1 就可以啟動奇偶校驗控制,奇偶校驗由硬件自動完成啟動了奇偶校驗控制之后,在發送數據幀時會自動添加校驗位,接收數據時自動驗證校驗位。接收數據時如果出現奇偶校驗位驗證失敗,會見 USART_SR 寄存器的 PE 位置 1,并可以產生奇偶校驗中斷。

使能了奇偶校驗控制后,每個字符幀的格式將變成:起始位 + 數據幀 + 校驗位 + 停止位。

中斷控制

圖片

與USART配置有關的固件庫函數

USART 初始化結構體

標準庫函數對每個外設都建立了一個初始化結構體,比如 USART_InitTypeDef,結構體成員用于 設置外設工作參數,并由外設初始化配置函數,比如 USART_Init() 調用,這些設定參數將會設置 外設相應的寄存器,達到配置外設工作環境的目的。

初始化結構體定義在 stm32f10x_usart.h 文件中,初始化庫函數定義在 stm32f10x_usart.c 文件中。

typedef struct 
{
    uint32_t USART_BaudRate; // 波特率
    uint16_t USART_WordLength; // 字長
    uint16_t USART_StopBits; // 停止位
    uint16_t USART_Parity; // 校驗位
    uint16_t USART_Mode; // USART 模式
    uint16_t USART_HardwareFlowControl; // 硬件流控制
} USART_InitTypeDef;
●USART_BaudRate:波特率設置。

    一般設置為 2400、9600、19200、115200。標準庫函數會根據設定值計算得到 USARTDIV 值,從而設置 USART_BRR 寄存器值。

 ●USART_WordLength:數據幀字長,可選 8 位或 9 位。

    它設定 USART_CR1 寄存器的 M 位的值。如果沒有使能奇偶校驗控制,一般使用 8 數據位;如果使能了奇偶校驗則一般設置為 9 數據位。
#define USART_WordLength_8b                  ((uint16_t)0x0000)
#define USART_WordLength_9b                  ((uint16_t)0x1000)


#define IS_USART_WORD_LENGTH(LENGTH) (((LENGTH) == USART_WordLength_8b) || \\
                                      ((LENGTH) == USART_WordLength_9b))

● USART_StopBits:停止位設置。

停止位可選 0.5 個、1 個、1.5 個和 2 個停止位,它設定 USART_CR2寄存器的 STOP[1:0] 位的值,一般我們選擇 1 個停止位。
#define USART_StopBits_1                     ((uint16_t)0x0000)
#define USART_StopBits_0_5                   ((uint16_t)0x1000)
#define USART_StopBits_2                     ((uint16_t)0x2000)
#define USART_StopBits_1_5                   ((uint16_t)0x3000)
#define IS_USART_STOPBITS(STOPBITS) (((STOPBITS) == USART_StopBits_1) || \\
                                     ((STOPBITS) == USART_StopBits_0_5) || \\
                                     ((STOPBITS) == USART_StopBits_2) || \\
                   ((STOPBITS) == USART_StopBits_1_5))

● USART_Parity:奇偶校驗控制選擇。

奇偶校驗位可選 USART_Parity_No(無校驗)、USART_Parity_Even(偶校驗) 以及 USART_Parity_Odd(奇校驗),它設定 USART_CR1 寄存器的 PCE 位和 PS 位的值。
#define USART_Parity_No                      ((uint16_t)0x0000)
#define USART_Parity_Even                    ((uint16_t)0x0400)
#define USART_Parity_Odd                     ((uint16_t)0x0600) 
#define IS_USART_PARITY(PARITY) (((PARITY) == USART_Parity_No) || \\
                                 ((PARITY) == USART_Parity_Even) || \\
                                 ((PARITY) == USART_Parity_Odd))

● USART_Mode:USART 模式選擇。

USART的模式有 USART_Mode_Rx 和 USART_Mode_Tx,允許使用邏輯或運算選擇兩個,它設定 USART_CR1 寄存器的 RE 位和 TE 位。
#define USART_Mode_Rx                        ((uint16_t)0x0004)
#define USART_Mode_Tx                        ((uint16_t)0x0008)
#define IS_USART_MODE(MODE) ((((MODE) & (uint16_t)0xFFF3) == 0x00) && ((MODE) != (uint16_t)0x00))

●USART_HardwareFlowControl:硬件流控制選擇。

#define USART_HardwareFlowControl_None       ((uint16_t)0x0000)
#define USART_HardwareFlowControl_RTS        ((uint16_t)0x0100)
#define USART_HardwareFlowControl_CTS        ((uint16_t)0x0200)
#define USART_HardwareFlowControl_RTS_CTS    ((uint16_t)0x0300)
#define IS_USART_HARDWARE_FLOW_CONTROL(CONTROL)\\
                              (((CONTROL) == USART_HardwareFlowControl_None) || \\
                               ((CONTROL) == USART_HardwareFlowControl_RTS) || \\
                               ((CONTROL) == USART_HardwareFlowControl_CTS) || \\
                               ((CONTROL) == USART_HardwareFlowControl_RTS_CTS))

USART 時鐘初始化結構體

typedef struct 
{
    uint16_t USART_Clock; // 時鐘使能控制
    uint16_t USART_CPOL; // 時鐘極性
    uint16_t USART_CPHA; // 時鐘相位
    uint16_t USART_LastBit; // 最尾位時鐘脈沖
} USART_ClockInitTypeDef;
USART_Clock:同步模式下 SCLK 引腳上時鐘輸出使能控制。

    可選禁止時鐘輸出 (USART_Clock_Disable) 或開啟時鐘輸出 (USART_Clock_Enable);如果使用同步模式發送,一般都需要開啟時鐘。它設定 USART_CR2 寄存器的 CLKEN 位的值。
#define USART_Clock_Disable                  ((uint16_t)0x0000)
#define USART_Clock_Enable                   ((uint16_t)0x0800)
#define IS_USART_CLOCK(CLOCK) (((CLOCK) == USART_Clock_Disable) || \\
                               ((CLOCK) == USART_Clock_Enable))

● USART_CPOL:同步模式下 SCLK 引腳上輸出時鐘極性設置。

可設置在空閑時 SCLK 引腳為低電平 (USART_CPOL_Low) 或高電平 (USART_CPOL_High)。它設定 USART_CR2 寄存器的 CPOL位的值。
#define USART_CPOL_Low                       ((uint16_t)0x0000)
#define USART_CPOL_High                      ((uint16_t)0x0400)
#define IS_USART_CPOL(CPOL) (((CPOL) == USART_CPOL_Low) || ((CPOL) == USART_CPOL_High))
USART_CPHA:同步模式下 SCLK 引腳上輸出時鐘相位設置。

    可設置在時鐘第一個變化沿捕獲數據 (USART_CPHA_1Edge) 或在時鐘第二個變化沿捕獲數據。它設定 USART_CR2 寄存器的CPHA 位的值。USART_CPHAUSART_CPOL 配合使用可以獲得多種模式時鐘關系。
#define USART_CPHA_1Edge                     ((uint16_t)0x0000)
#define USART_CPHA_2Edge                     ((uint16_t)0x0200)
#define IS_USART_CPHA(CPHA) (((CPHA) == USART_CPHA_1Edge) || ((CPHA) == USART_CPHA_2Edge))

● USART_LastBit:選擇在發送最后一個數據位的時候時鐘脈沖是否在 SCLK 引腳輸出。

可以是不輸出脈沖 (USART_LastBit_Disable)、輸出脈沖 (USART_LastBit_Enable)。它設定USART_CR2 寄存器的 LBCL 位的值。
#define USART_LastBit_Disable                ((uint16_t)0x0000)
#define USART_LastBit_Enable                 ((uint16_t)0x0100)
#define IS_USART_LASTBIT(LASTBIT) (((LASTBIT) == USART_LastBit_Disable) || \\
                                   ((LASTBIT) == USART_LastBit_Enable))
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 物理層
    +關注

    關注

    1

    文章

    154

    瀏覽量

    34935
  • 串口通訊
    +關注

    關注

    1

    文章

    265

    瀏覽量

    25419
  • 串行通訊
    +關注

    關注

    2

    文章

    78

    瀏覽量

    16595
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    瑞薩RZ/G2L串口SCI的使用(上)

    瑞薩RZ/G2L的串口簡稱SCI,全稱Serial Communication Interface。
    的頭像 發表于 01-17 12:19 ?2023次閱讀
    瑞薩RZ/G<b class='flag-5'>2</b>L<b class='flag-5'>串口</b>SCI的使用(上)

    串口通訊是什么

    串口通訊目錄物理層協議層USART簡介代碼講解串口通訊(Serial
    發表于 08-05 06:47

    串口通訊協議簡介

    1 串口通訊協議簡介串口通訊(Serial Communic
    發表于 08-12 06:30

    串口通訊簡介

    串口通訊簡介串口通訊(Serial Communicati
    發表于 11-30 06:56

    串口通訊基本知識簡介

    基本知識串口通訊 (Serial Communication)串口中斷其實也是依靠判斷寄存器的狀態進行中斷服務的通信的速率Bitrate—比
    發表于 12-08 08:30

    串口通信Serial簡介

    簡介按一次按鈕在串口監視器輸出當前狀態以及一共按下按鈕多少次我現在就缺一個 默認單刀雙擲按鈕。。按下是A狀態,不安默認就是B狀態代碼void setup() {//開啟串口通信,波特率9600
    發表于 01-11 06:08

    串口通訊協議與RS-232標準簡介

    文章目錄一、串口通訊協議1.簡介2.物理層(1)RS-232 標準一、串口通訊協議1.
    發表于 02-15 06:03

    串口通訊串口通信協議簡介

    目錄一、串口二、STM32系統給上位機(win10)連續發送“hello windows!”1、接線:2、代碼實現3、燒錄4、串口調試一、串口串口
    發表于 02-15 07:21

    Serial Communication (COM) Dev

    the software to configure a ZigBee ZIC2410 for a Serial Communication application. In this application, when the device receives the da
    發表于 11-04 14:15 ?4次下載

    什么是串口通訊/同軸電纜

    什么是串口通訊/同軸電纜 串口通訊    Serial communic
    發表于 03-26 09:21 ?3066次閱讀

    Proteus在MCS&ARM中的應用之Serial_Communication

    【好程序系列】Proteus在MCS&ARM中的應用之Serial Communication
    發表于 01-20 15:03 ?4次下載

    STM32的串口通訊協議

    本文主要講解串口協議和RS-232標準,以及RS232電平與TTL電平的區別;介紹"USB/TTL轉232"模塊(以CH340芯片模塊為例)的工作原理。一、串口協議1.1 串口通信協議簡介
    發表于 12-24 18:37 ?8次下載
    STM32的<b class='flag-5'>串口</b><b class='flag-5'>通訊</b>協議

    串口通訊(Serial Communication) 簡介1

    串口通訊 (Serial Communication) 是一種設備間極為常用的串行通訊方式,目前多存在于工控機及部分通信設備中。
    的頭像 發表于 04-23 11:25 ?7151次閱讀
    <b class='flag-5'>串口</b><b class='flag-5'>通訊</b>(<b class='flag-5'>Serial</b> <b class='flag-5'>Communication</b>) <b class='flag-5'>簡介</b>1

    串口通訊(Serial Communication) 簡介3

    串口通訊 (Serial Communication) 是一種設備間極為常用的串行通訊方式,目前多存在于工控機及部分通信設備中。
    的頭像 發表于 04-23 11:30 ?2645次閱讀
    <b class='flag-5'>串口</b><b class='flag-5'>通訊</b>(<b class='flag-5'>Serial</b> <b class='flag-5'>Communication</b>) <b class='flag-5'>簡介</b>3

    串口通訊(Serial Communication) 簡介4

    串口通訊 (Serial Communication) 是一種設備間極為常用的串行通訊方式,目前多存在于工控機及部分通信設備中。
    的頭像 發表于 04-23 11:30 ?1276次閱讀
    <b class='flag-5'>串口</b><b class='flag-5'>通訊</b>(<b class='flag-5'>Serial</b> <b class='flag-5'>Communication</b>) <b class='flag-5'>簡介</b>4
    主站蜘蛛池模板: 亚洲国产福利精品一区二区 | 新版bt天堂资源在线 | 亚洲福利秒拍一区二区 | 拍拍拍拍拍拍拍无挡大全免费 | 天天爽夜夜爽视频 | 日韩第五页 | 最新看片网址 | 日本口工禁漫画无遮挡全彩 | 亚洲精品在线视频观看 | 黄频网 | 欧美日本一区二区三区 | 狠狠干免费视频 | 国产一级在线观看 | 四虎院影永久在线观看 | 天天操天天草 | ass日本69| 你懂得在线网址 | a一级 | 高清成年美女xx免费网站黄 | 欧美一级特黄高清免费 | 色香欲综合成人免费视频 | 亚洲视频www | 国产成人a毛片 | 操人视频网站 | 狠狠色综合网站久久久久久久 | 玖玖在线| 202z国产高清日本在线播放 | 亚洲欧洲一区二区三区在线观看 | 色偷偷资源 | 看黄a大片 免费 | 日本成人免费在线视频 | 成人国产精品高清在线观看 | 综合第一页 | 日本三级精品 | 四虎国产 | 国产午夜a理论毛片在线影院 | 成人免费国产gav视频在线 | 久久国产精品系列 | 香蕉操| 欲色视频 | 亚洲人色大成年网站在线观看 |