chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

USART驅(qū)動(dòng)實(shí)驗(yàn)

汽車電子技術(shù) ? 來(lái)源:滑小稽筆記 ? 作者:電子技術(shù)園地 ? 2023-03-01 16:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

6.1 STM32串口簡(jiǎn)介

在之前的51單片機(jī)開(kāi)發(fā)中已經(jīng)詳細(xì)地描述過(guò)串行通信協(xié)議,但是51中的串口有一個(gè)缺點(diǎn),就是為了使用串口的波特率必須將晶振更換為11.0592MHz,如果采用12MHz晶振就會(huì)導(dǎo)致波特率誤差太大,以致于串口無(wú)法正常收發(fā),但是如果使用11.0592MHz晶振又會(huì)存在定時(shí)器計(jì)數(shù)誤差(即定時(shí)器計(jì)數(shù)不準(zhǔn)確),在STM32中很好地解決了這個(gè)問(wèn)題,并且擴(kuò)展了串口的應(yīng)用。

   STM32F103ZET6最多可提供5路串口,有分?jǐn)?shù)波特率發(fā)生器、支持同步單線通信和半雙工單線通訊、支持LIN、支持調(diào)制解調(diào)器操作、智能卡協(xié)議和IrDASIRENDEC規(guī)范、具有DMA等。STM32的USART模塊結(jié)構(gòu)框圖如下圖所示。

圖片

我們可以從框圖發(fā)現(xiàn),STM32的波特率是低4位表示小數(shù)部分,高12位表示整數(shù)部分,這就是為什么STM32可以在不更換晶振的條件下使用串口通信。

6.2 相關(guān)寄存器

6.2.1 控制寄存器USART_CR1

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- UE M WAKE PCE PS PEIE TXEIE TCIE RXNEIE IDLEIE TE RE RWU SBK

Bit 13:USART使能

0:USART分頻器和輸出被禁止

   1:USART模塊使能

Bit 12:字長(zhǎng)

0:一個(gè)起始位,8個(gè)數(shù)據(jù)位,n個(gè)停止位

   1:一個(gè)起始位,9個(gè)數(shù)據(jù)位,n個(gè)停止位

Bit 11:?jiǎn)拘训姆椒?/p>

0:被空閑總線喚醒

   1:被地址標(biāo)記喚醒

Bit 10:檢驗(yàn)控制使能

0:禁止校驗(yàn)控制

   1:使能校驗(yàn)控制

Bit 9:校驗(yàn)選擇

0:偶校驗(yàn)

   1:奇校驗(yàn)

Bit 8:PE中斷使能

0:禁止產(chǎn)生中斷

   1:當(dāng)USART_SR中的PE為1時(shí),產(chǎn)生USART中斷

Bit 7:發(fā)送緩沖區(qū)空中斷使能

0:禁止產(chǎn)生中斷

   1:當(dāng)USART_SR中的TXE為1時(shí),產(chǎn)生USART中斷

Bit 6:發(fā)送完成中斷使能

0:禁止產(chǎn)生中斷

   1:當(dāng)USART_SR中的TC為1時(shí),產(chǎn)生USART中斷

Bit 5:接收緩沖區(qū)非空中斷使能

0:禁止產(chǎn)生中斷

   1:當(dāng)USART_SR中的ORE或者RXNE為1時(shí),產(chǎn)生USART中斷

Bit 4:IDLE中斷使能

0:禁止產(chǎn)生中斷

   1:當(dāng)USART_SR中的IDLE為1時(shí),產(chǎn)生USART中斷

Bit 3:發(fā)送使能

0:禁止發(fā)送

   1:使能發(fā)送

Bit 2:接收使能

0:禁止接收

   1:使能接收,并開(kāi)始搜尋RX引腳上的起始位

Bit 1:接收喚醒

0:接收器處于正常工作模式;

   1:接收器處于靜默模式

Bit 0:發(fā)送斷開(kāi)幀

0:沒(méi)有發(fā)送斷開(kāi)字符

   1:將要發(fā)送斷開(kāi)字符

6.2.2 波特率寄存器USART_BRR

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
USARTDIV_Mantissa[11:0] USARTDIV_Fraction[3:0]

Bit 15~Bit 4:波特率整數(shù)部分

Bit 3~Bit 0:波特率小數(shù)部分

注:波特率的計(jì)算公式

圖片

6.2.3 數(shù)據(jù)寄存器USART_DR

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- DATA[8:0]

Bit 8~Bit 0:數(shù)據(jù)值

包含了發(fā)送或接收的數(shù)據(jù)。由于它是由兩個(gè)寄存器組成的,一個(gè)給發(fā)送用TDR,一個(gè)給接收用RDR,該寄存器兼具讀和寫(xiě)的功能。當(dāng)USART_CR1PCE位被置位進(jìn)行發(fā)送時(shí),寫(xiě)到MSB的值(根據(jù)數(shù)據(jù)的長(zhǎng)度不同,MSB是第7位或者第8位)會(huì)被后來(lái)的校驗(yàn)位取代。當(dāng)使能校驗(yàn)位進(jìn)行接收時(shí),讀到的MSB位是接收到的校驗(yàn)位。

6.2.4 狀態(tài)寄存器USART_SR

31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
-
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- CTS LBD TXE TC RXNE IDLE ORE NE FE PE

Bit 9:CTS標(biāo)志(如果設(shè)置了CTSE位,當(dāng)nCTS輸入變化狀態(tài)時(shí),該位被硬件置高,由軟件將其清零)

0:nCTS狀態(tài)線上沒(méi)有變化

   1:nCTS狀態(tài)線上發(fā)生變化

Bit 8:LIN斷開(kāi)檢測(cè)標(biāo)志(當(dāng)探測(cè)到LIN斷開(kāi)時(shí),該位由硬件置1,由軟件將其清零)

0:沒(méi)有檢測(cè)到LIN斷開(kāi)

   1:檢測(cè)到LIN斷開(kāi)

Bit 7:發(fā)送數(shù)據(jù)寄存器空

當(dāng)TDR寄存器中的數(shù)據(jù)被硬件轉(zhuǎn)移到移位寄存器時(shí),該位被硬件置位,對(duì)USART_DR的寫(xiě)操作,將該位清零。

   0:數(shù)據(jù)還沒(méi)有被轉(zhuǎn)移到移位寄存器

   1:數(shù)據(jù)已經(jīng)被轉(zhuǎn)移到移位寄存器

Bit 6:發(fā)送完成

當(dāng)包含有數(shù)據(jù)的一幀發(fā)送完成后,并且TXE=1時(shí),由硬件將該位置’1’。然后寫(xiě)入U(xiǎn)SART_DR清除該位。

   0:發(fā)送還未完成

   1:發(fā)送完成

Bit 5:讀數(shù)據(jù)寄存器非空

當(dāng)數(shù)據(jù)被轉(zhuǎn)移到USART_DR寄存器中,該位被硬件置位。對(duì)USART_DR讀操作可以將該位清零。

   0:數(shù)據(jù)沒(méi)有收到;

   1:收到數(shù)據(jù),可以讀出

Bit 4:檢測(cè)到總線空閑

當(dāng)檢測(cè)到總線空閑時(shí),該位被硬件置位,則產(chǎn)生中斷。先讀USART_SR,然后讀USART_DR清除該位。

   0:沒(méi)有檢測(cè)到空閑總線

   1:檢測(cè)到空閑總線

Bit 3:過(guò)載錯(cuò)誤

當(dāng)RXNE仍然是1的時(shí)候,當(dāng)前被接收在移位寄存器中的數(shù)據(jù),需要傳送至RDR寄存器時(shí),硬件將該位置位,先讀USART_SR,然后讀USART_CR清零。

   0:沒(méi)有過(guò)載錯(cuò)誤

   1:檢測(cè)到過(guò)載錯(cuò)誤

Bit 2:噪聲錯(cuò)誤標(biāo)志

在接收到的幀檢測(cè)到噪音時(shí),由硬件對(duì)該位置位。先讀USART_SR,再讀USART_DR清0。

   0:沒(méi)有檢測(cè)到噪聲

   1:檢測(cè)到噪聲

Bit 1:幀錯(cuò)誤

當(dāng)檢測(cè)到同步錯(cuò)位,過(guò)多的噪聲或者檢測(cè)到斷開(kāi)符,該位被硬件置位。先讀USART_SR,再讀USART_DR清零

   0:沒(méi)有檢測(cè)到幀錯(cuò)誤

   1:檢測(cè)到幀錯(cuò)誤或者break

Bit 0:校驗(yàn)錯(cuò)誤

在接收模式下,如果出現(xiàn)奇偶校驗(yàn)錯(cuò)誤,硬件對(duì)該位置位。依次讀USART_SR和USART_DR清零,在清除PE位前,軟件必須等待RXNE標(biāo)志位被置1。

   0:沒(méi)有奇偶校驗(yàn)錯(cuò)誤;

   1:奇偶校驗(yàn)錯(cuò)誤

6.3 printf函數(shù)重映射

學(xué)習(xí)C語(yǔ)言的時(shí)候會(huì)經(jīng)常用到一個(gè)函數(shù),就是格式化輸出printf,這個(gè)函數(shù)的源代碼如下所示。

圖片

從上圖可以看出來(lái),printf函數(shù)實(shí)際上的核心是putchar函數(shù),在KEIL中,由于我們使用了MicroLIB,所以putchar函數(shù)改為了fputc函數(shù),此時(shí),我們只需要修改fputc函數(shù)就可以完成printf重定向,重定向代碼如下圖所示。

圖片

6.4 串口例程

使用printf函數(shù)將串口接收到的字符串發(fā)送出去。

(1)底層寄存器文件stm32f10x.h添加串口寄存器地址。

圖片

圖片

圖片

(2)在SYSTEM目錄下新建usart1目錄,并在usart1目錄下新建usart1.c和usart1.h兩個(gè)文件。

圖片

(3)將usart1.c和usart1.h兩個(gè)文件加入工程。

圖片

圖片

(4)在usart1.c文件內(nèi)寫(xiě)入以下代碼。

圖片

圖片

(5)在usart1.h添加以下代碼。

圖片

(5)在1.c文件中添加以下代碼。

圖片

6.5 實(shí)驗(yàn)結(jié)果

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 51單片機(jī)
    +關(guān)注

    關(guān)注

    277

    文章

    5710

    瀏覽量

    127234
  • 波特率
    +關(guān)注

    關(guān)注

    2

    文章

    313

    瀏覽量

    34896
  • 串行通信協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    7805
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何完成STM32的USART窗口通訊實(shí)驗(yàn)

    寄存器與基于固件庫(kù)編程方式的差異在哪?如何完成STM32的USART窗口通訊實(shí)驗(yàn)?
    發(fā)表于 02-24 07:35

    CH32V103基礎(chǔ)教程92-USART-奇偶校實(shí)驗(yàn)

    本章教學(xué)使用串口1(USART1)進(jìn)行串口通信過(guò)程中的奇偶校試。 1、USART校園實(shí)驗(yàn)控制簡(jiǎn)介通過(guò)設(shè)置USART控制寄存器1(USARTx_CTLR1)的10位PCE使能開(kāi)啟奇偶校試
    發(fā)表于 05-11 16:09

    GD32-Colibri-F207實(shí)驗(yàn)板RAM-USART

    GD32-Colibri-F207實(shí)驗(yàn)板RAM-USART,很好的GD32資料,快來(lái)學(xué)習(xí)吧。
    發(fā)表于 04-21 10:49 ?7次下載

    實(shí)驗(yàn)四 異步收發(fā)器(USART

    嵌入式異步收發(fā)器(USART
    發(fā)表于 12-17 20:48 ?12次下載

    STM32的USART串口通訊程序

    STM32的USART串口通訊程序一、了解串口通信及準(zhǔn)備工作1.串口通信簡(jiǎn)介2.STM32 的 USART 簡(jiǎn)介二、USART串口實(shí)驗(yàn)1.實(shí)驗(yàn)
    發(fā)表于 11-18 18:51 ?10次下載
    STM32的<b class='flag-5'>USART</b>串口通訊程序

    STM32的USART窗口通訊程序

    !”,上位機(jī)接收程序可以使用“串口調(diào)試助手“,也可自己編程。3)當(dāng)上位機(jī)給stm32發(fā)送“Stop,stm32”后,stm32停止發(fā)送。實(shí)驗(yàn)步驟安裝usb轉(zhuǎn)串口的驅(qū)動(dòng)總結(jié)參考STM32串口通信USART學(xué)習(xí)筆記...
    發(fā)表于 12-07 11:06 ?3次下載
    STM32的<b class='flag-5'>USART</b>窗口通訊程序

    基礎(chǔ)實(shí)驗(yàn)13-USART串口接收實(shí)驗(yàn)

    基礎(chǔ)實(shí)驗(yàn)13-USART串口接收實(shí)驗(yàn)實(shí)驗(yàn)目的:掌握定時(shí)器USART接收字符串的方法。實(shí)驗(yàn)現(xiàn)象:打
    發(fā)表于 12-14 18:53 ?1次下載
    基礎(chǔ)<b class='flag-5'>實(shí)驗(yàn)</b>13-<b class='flag-5'>USART</b>串口接收<b class='flag-5'>實(shí)驗(yàn)</b>

    16 . USART 串口通信實(shí)驗(yàn)

    USART 串口通信實(shí)驗(yàn)我們知道STM32F1 內(nèi)部含有非常多的通信接口,我們就來(lái)學(xué)習(xí)下USART 串口通信。要實(shí)現(xiàn)的功能是:STM32F1 通過(guò)USART1 實(shí)現(xiàn)與PC 機(jī)對(duì)話,ST
    發(fā)表于 12-20 19:22 ?20次下載
    16 . <b class='flag-5'>USART</b> 串口通信<b class='flag-5'>實(shí)驗(yàn)</b>

    外設(shè)資源實(shí)驗(yàn)6-USART2的DMA收發(fā)實(shí)驗(yàn)

    外設(shè)資源實(shí)驗(yàn)6-USART2的DMA收發(fā)實(shí)驗(yàn)實(shí)驗(yàn)目的:掌握USART2的DMA接收方式。實(shí)驗(yàn)現(xiàn)象
    發(fā)表于 12-20 19:38 ?1次下載
    外設(shè)資源<b class='flag-5'>實(shí)驗(yàn)</b>6-<b class='flag-5'>USART</b>2的DMA收發(fā)<b class='flag-5'>實(shí)驗(yàn)</b>

    STM32中USART串口通信實(shí)驗(yàn)

    聲明:所有資源均來(lái)自于普中STM32F103開(kāi)發(fā)板相關(guān)資料,這是自己購(gòu)買的一款開(kāi)發(fā)板,如果原作者認(rèn)為侵權(quán),請(qǐng)聯(lián)系我以便及時(shí)處理。STM32F1的USART介紹USART即通用同步異步收發(fā)器,它能
    發(fā)表于 12-23 20:03 ?1次下載
    STM32中<b class='flag-5'>USART</b>串口通信<b class='flag-5'>實(shí)驗(yàn)</b>

    STM32USART實(shí)驗(yàn)——串口通訊

    STM32USART實(shí)驗(yàn)——串口通訊一、串口通訊二、USART串口通信實(shí)例三、效果演示四、參考資料一、串口通訊為實(shí)現(xiàn)最迫切的需求,利用串口來(lái)幫助我們調(diào)試程序;最常用的方法:全雙工、異步通訊方式通訊
    發(fā)表于 12-24 18:45 ?15次下載
    STM32<b class='flag-5'>USART</b><b class='flag-5'>實(shí)驗(yàn)</b>——串口通訊

    關(guān)于使用stm32核心板進(jìn)行USART串口通信的實(shí)驗(yàn)

    目錄一、關(guān)于串口通信1.串口通信2.USART二、USART串口通信程序1.準(zhǔn)備工作2.實(shí)驗(yàn)要求3.實(shí)驗(yàn)代碼4.代碼所實(shí)現(xiàn)的功能及原理5.實(shí)驗(yàn)
    發(fā)表于 12-24 19:00 ?0次下載
    關(guān)于使用stm32核心板進(jìn)行<b class='flag-5'>USART</b>串口通信的<b class='flag-5'>實(shí)驗(yàn)</b>

    USART的使用

    USART1_Init(115200); //串口初始化(參數(shù)是波特率)/* 發(fā)送方法1 */ USART_SendData(USART1 , 0x55); //發(fā)送單個(gè)數(shù)值 while
    發(fā)表于 12-28 19:00 ?10次下載
    <b class='flag-5'>USART</b>的使用

    STM32入門學(xué)習(xí)筆記之USART驅(qū)動(dòng)實(shí)驗(yàn)(上)

    在之前的51單片機(jī)開(kāi)發(fā)中已經(jīng)詳細(xì)地描述過(guò)串行通信協(xié)議,但是51中的串口有一個(gè)缺點(diǎn),就是為了使用串口的波特率必須將晶振更換為11.0592MHz,如果采用12MHz晶振就會(huì)導(dǎo)致波特率誤差太大,以致于串口無(wú)法正常收發(fā),但是如果使用11.0592MHz晶振又會(huì)存在定時(shí)器計(jì)數(shù)誤差(即定時(shí)器計(jì)數(shù)不準(zhǔn)確),在STM32中很好地解決了這個(gè)問(wèn)題,并且擴(kuò)展了串口的應(yīng)用。
    的頭像 發(fā)表于 02-16 10:08 ?939次閱讀
    STM32入門學(xué)習(xí)筆記之<b class='flag-5'>USART</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>實(shí)驗(yàn)</b>(上)

    STM32入門學(xué)習(xí)筆記之USART驅(qū)動(dòng)實(shí)驗(yàn)(下)

    在之前的51單片機(jī)開(kāi)發(fā)中已經(jīng)詳細(xì)地描述過(guò)串行通信協(xié)議,但是51中的串口有一個(gè)缺點(diǎn),就是為了使用串口的波特率必須將晶振更換為11.0592MHz,如果采用12MHz晶振就會(huì)導(dǎo)致波特率誤差太大,以致于串口無(wú)法正常收發(fā),但是如果使用11.0592MHz晶振又會(huì)存在定時(shí)器計(jì)數(shù)誤差(即定時(shí)器計(jì)數(shù)不準(zhǔn)確),在STM32中很好地解決了這個(gè)問(wèn)題,并且擴(kuò)展了串口的應(yīng)用。
    的頭像 發(fā)表于 02-16 10:08 ?1037次閱讀
    STM32入門學(xué)習(xí)筆記之<b class='flag-5'>USART</b><b class='flag-5'>驅(qū)動(dòng)</b><b class='flag-5'>實(shí)驗(yàn)</b>(下)