精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

串口通訊(Serial Communication) 簡(jiǎn)介2

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

USART校驗(yàn)控制

STM32F103 系列控制器 USART 支持奇偶校驗(yàn)。當(dāng)使用校驗(yàn)位時(shí),串口傳輸?shù)拈L(zhǎng)度將是 8 位的數(shù)據(jù)幀加上 1 位的校驗(yàn)位總共 9 位,此時(shí) USART_CR1 寄存器的 M 位需要設(shè)置為 1,即 9 數(shù)據(jù)位。

將 USART_CR1 寄存器的 PCE 位置 1 就可以啟動(dòng)奇偶校驗(yàn)控制,奇偶校驗(yàn)由硬件自動(dòng)完成啟動(dòng)了奇偶校驗(yàn)控制之后,在發(fā)送數(shù)據(jù)幀時(shí)會(huì)自動(dòng)添加校驗(yàn)位,接收數(shù)據(jù)時(shí)自動(dòng)驗(yàn)證校驗(yàn)位。接收數(shù)據(jù)時(shí)如果出現(xiàn)奇偶校驗(yàn)位驗(yàn)證失敗,會(huì)見 USART_SR 寄存器的 PE 位置 1,并可以產(chǎn)生奇偶校驗(yàn)中斷。

使能了奇偶校驗(yàn)控制后,每個(gè)字符幀的格式將變成:起始位 + 數(shù)據(jù)幀 + 校驗(yàn)位 + 停止位。

中斷控制

圖片

與USART配置有關(guān)的固件庫(kù)函數(shù)

USART 初始化結(jié)構(gòu)體

標(biāo)準(zhǔn)庫(kù)函數(shù)對(duì)每個(gè)外設(shè)都建立了一個(gè)初始化結(jié)構(gòu)體,比如 USART_InitTypeDef,結(jié)構(gòu)體成員用于 設(shè)置外設(shè)工作參數(shù),并由外設(shè)初始化配置函數(shù),比如 USART_Init() 調(diào)用,這些設(shè)定參數(shù)將會(huì)設(shè)置 外設(shè)相應(yīng)的寄存器,達(dá)到配置外設(shè)工作環(huán)境的目的。

初始化結(jié)構(gòu)體定義在 stm32f10x_usart.h 文件中,初始化庫(kù)函數(shù)定義在 stm32f10x_usart.c 文件中。

typedef struct 
{
    uint32_t USART_BaudRate; // 波特率
    uint16_t USART_WordLength; // 字長(zhǎng)
    uint16_t USART_StopBits; // 停止位
    uint16_t USART_Parity; // 校驗(yàn)位
    uint16_t USART_Mode; // USART 模式
    uint16_t USART_HardwareFlowControl; // 硬件流控制
} USART_InitTypeDef;
●USART_BaudRate:波特率設(shè)置。

    一般設(shè)置為 2400、9600、19200、115200。標(biāo)準(zhǔn)庫(kù)函數(shù)會(huì)根據(jù)設(shè)定值計(jì)算得到 USARTDIV 值,從而設(shè)置 USART_BRR 寄存器值。

 ●USART_WordLength:數(shù)據(jù)幀字長(zhǎng),可選 8 位或 9 位。

    它設(shè)定 USART_CR1 寄存器的 M 位的值。如果沒有使能奇偶校驗(yàn)控制,一般使用 8 數(shù)據(jù)位;如果使能了奇偶校驗(yàn)則一般設(shè)置為 9 數(shù)據(jù)位。
#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:停止位設(shè)置。

停止位可選 0.5 個(gè)、1 個(gè)、1.5 個(gè)和 2 個(gè)停止位,它設(shè)定 USART_CR2寄存器的 STOP[1:0] 位的值,一般我們選擇 1 個(gè)停止位。
#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:奇偶校驗(yàn)控制選擇。

奇偶校驗(yàn)位可選 USART_Parity_No(無(wú)校驗(yàn))、USART_Parity_Even(偶校驗(yàn)) 以及 USART_Parity_Odd(奇校驗(yàn)),它設(shè)定 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,允許使用邏輯或運(yùn)算選擇兩個(gè),它設(shè)定 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 時(shí)鐘初始化結(jié)構(gòu)體

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

    可選禁止時(shí)鐘輸出 (USART_Clock_Disable) 或開啟時(shí)鐘輸出 (USART_Clock_Enable);如果使用同步模式發(fā)送,一般都需要開啟時(shí)鐘。它設(shè)定 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 引腳上輸出時(shí)鐘極性設(shè)置。

可設(shè)置在空閑時(shí) SCLK 引腳為低電平 (USART_CPOL_Low) 或高電平 (USART_CPOL_High)。它設(shè)定 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 引腳上輸出時(shí)鐘相位設(shè)置。

    可設(shè)置在時(shí)鐘第一個(gè)變化沿捕獲數(shù)據(jù) (USART_CPHA_1Edge) 或在時(shí)鐘第二個(gè)變化沿捕獲數(shù)據(jù)。它設(shè)定 USART_CR2 寄存器的CPHA 位的值。USART_CPHAUSART_CPOL 配合使用可以獲得多種模式時(shí)鐘關(guān)系。
#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:選擇在發(fā)送最后一個(gè)數(shù)據(jù)位的時(shí)候時(shí)鐘脈沖是否在 SCLK 引腳輸出。

可以是不輸出脈沖 (USART_LastBit_Disable)、輸出脈沖 (USART_LastBit_Enable)。它設(shè)定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))
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 物理層
    +關(guān)注

    關(guān)注

    1

    文章

    148

    瀏覽量

    34288
  • 串口通訊
    +關(guān)注

    關(guān)注

    1

    文章

    258

    瀏覽量

    24857
  • 串行通訊
    +關(guān)注

    關(guān)注

    2

    文章

    77

    瀏覽量

    16356
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    串口通訊是什么

    串口通訊目錄物理層協(xié)議層USART簡(jiǎn)介代碼講解串口通訊(Serial
    發(fā)表于 08-05 06:47

    串口通訊協(xié)議簡(jiǎn)介

    1 串口通訊協(xié)議簡(jiǎn)介串口通訊(Serial Communic
    發(fā)表于 08-12 06:30

    串口通訊簡(jiǎn)介

    串口通訊簡(jiǎn)介串口通訊(Serial Communicati
    發(fā)表于 11-30 06:56

    串口通訊基本知識(shí)簡(jiǎn)介

    基本知識(shí)串口通訊 (Serial Communication)串口中斷其實(shí)也是依靠判斷寄存器的狀態(tài)進(jìn)行中斷服務(wù)的通信的速率Bitrate—比
    發(fā)表于 12-08 08:30

    串口通信Serial簡(jiǎn)介

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

    串口通訊協(xié)議與RS-232標(biāo)準(zhǔn)簡(jiǎn)介

    文章目錄一、串口通訊協(xié)議1.簡(jiǎn)介2.物理層(1)RS-232 標(biāo)準(zhǔn)一、串口通訊協(xié)議1.
    發(fā)表于 02-15 06:03

    串口通訊串口通信協(xié)議簡(jiǎn)介

    目錄一、串口二、STM32系統(tǒng)給上位機(jī)(win10)連續(xù)發(fā)送“hello windows!”1、接線:2、代碼實(shí)現(xiàn)3、燒錄4、串口調(diào)試一、串口串口
    發(fā)表于 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
    發(fā)表于 11-04 14:15 ?4次下載

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

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

    Proteus在MCS&ARM中的應(yīng)用之Serial_Communication

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

    STM32的串口通訊協(xié)議

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

    串口通訊(Serial Communication) 簡(jiǎn)介1

    串口通訊 (Serial Communication) 是一種設(shè)備間極為常用的串行通訊方式,目前多存在于工控機(jī)及部分通信設(shè)備中。
    的頭像 發(fā)表于 04-23 11:25 ?6818次閱讀
    <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'>簡(jiǎn)介</b>1

    串口通訊(Serial Communication) 簡(jiǎn)介3

    串口通訊 (Serial Communication) 是一種設(shè)備間極為常用的串行通訊方式,目前多存在于工控機(jī)及部分通信設(shè)備中。
    的頭像 發(fā)表于 04-23 11:30 ?2372次閱讀
    <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'>簡(jiǎn)介</b>3

    串口通訊(Serial Communication) 簡(jiǎn)介4

    串口通訊 (Serial Communication) 是一種設(shè)備間極為常用的串行通訊方式,目前多存在于工控機(jī)及部分通信設(shè)備中。
    的頭像 發(fā)表于 04-23 11:30 ?1048次閱讀
    <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'>簡(jiǎn)介</b>4