串口通信的基本原理----STM32

串口通信基本原理

1. 處理器與外部設置通信的基本方式
  • 并行通信:數據各個位同時傳輸
  • 串行通信:數據按位順序傳輸

在串行通信中,按照數據的傳輸方向,又分為:

  • 單工:數據傳輸只支持在一個方向傳輸
  • 半雙工:允許數據在兩個方向上傳輸,但是,在某一時刻,只允許數據在一個方向上傳輸,它實際上是一種切換方向的單工通信
  • 全雙工:允許數據在倆個方向上傳輸,因此,全雙工是兩個單工通信方式的結合,它要求發送設備和接收設備都有獨立的接收和發送能力
2、串行通信的通信方式
  • 同步通信:帶時鐘同步信號傳輸
    SPI、IIC通信
  • 異步通信:不帶時鐘同步信號
    UART(通用異步收發器)、單總線
  • USART:通用同步異步收發器
3、常見串行通信接口

在這里插入圖片描述

4、UART異步通信方式引腳連接方法
  • RXD:數據輸入引腳。數據接收
  • TXD:數據發送引腳。數據發送
    在這里插入圖片描述

STM32串口常用寄存器和庫函數

1、常用的串口相關寄存器
  • USART_SR:狀態寄存器
  • USART_DR:數據寄存器
  • USART_BRR:波特率寄存器
2、串口操作相關庫函數
void USART_Init(); //串口初始化:波特率,數據字長,奇偶校驗,硬件流控以及收發使能
void USART_Cmd();//使能串口
void USART_ITConfig();//使能相關中斷void USART_SendData();//發送數據到串口,DR
uint16_t USART_ReceiveData();//接受數據,從DR讀取接受到的數據FlagStatus USART_GetFlagStatus();//獲取狀態標志位
void USART_ClearFlag();//清除狀態標志位
ITStatus USART_GetITStatus();//獲取中斷狀態標志位
void USART_ClearITPendingBit();//清除中斷狀態標志位
3、波特率計算方法

在這里插入圖片描述
在這里插入圖片描述

串口配置的一般配置

串口時鐘使能,GPIO時鐘使能:RCC_APB2PeriphClockCmd();
串口復位:USART_DeInit(); 這一步不是必須的
GPIO端口模式設置:GPIO_Init(); 模式設置為GPIO_Mode_AF_PP
串口參數初始化:USART_Init();
開啟中斷并且初始化NVIC(如果需要開啟中斷才需要這個步驟)NVIC_Init();USART_ITConfig();
⑥使能串口:USART_Cmd();
⑦編寫中斷處理函數:USARTx_IRQHandler();
⑧串口數據收發:
void USART_SendData();//發送數據到串口,DR
uint16_t USART_ReceiveData();//接受數據,從DR讀取接受到的數據
⑨串口傳輸狀態獲取:
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/379814.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/379814.shtml
英文地址,請注明出處:http://en.pswp.cn/news/379814.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java獲取vm運行參數_如何獲取在Java中運行Java VM的版本?

java獲取vm運行參數To get the version of running VM (Virtual Machine) in Java, we use the getProperties() method, which is defined in System class, while calling the method, we need to pass the property name to get the version of running Java VM. 要獲取Java…

Spring MVC+Ant+Tomcat+Eclipse最簡單的demo

第一步是Java的Web環境搭建,下載Eclipse(或者更好的但收費的IDE-IntelliJ Idea,和Resharper一家公司出的),下載Tomcat,下載JDK,下載Spring,注意安裝Tomcat的時候配置一下管理員賬號和…

MySQL的環境變量配置詳細步驟

1.下載MySQL 例如下載:mysql-installer-community-5.5.60.1 我以這個版本為例 2.右擊->我的電腦->屬性 3. 4.找到在 系統變量 中找到 Path 5.找MySql的bin目錄(每個人的電腦上這個文件的位置應該是差不多的,找到之后復制下來&#x…

轉帖:強命名程序集(Strong Name Assembly)的概念

強命名程序集(Strong Name Assembly)的概念因為不同的公司可能會開發出有相同名字的程序集來,如果這些程序集都被復制到同一 個相同的目錄下,最后一個安裝的程序集將會代替前面的程序集。這就是著名的Windows “DLL Hell”出現的原…

串口發送通信---UART發送---STM32F4實現

串口發送程序配置過程(HAL庫) 初始化串口相關參數,使能串口 HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)該函數的參數是串口的基址,在stm32f429xx.h文件中,定義了8個UART_HandleTypeDef的值&#x…

開源軟件 許可證密鑰_自由和開源軟件-1中的重要許可證

開源軟件 許可證密鑰Its important to take note that there are no good or bad licenses and that no license is superior to another. Anybody can make an open-source license that suits their extravagant, which is the explanation that there are such huge numbers…

串口接收中斷配置過程---STM32F4--HAL

串口接收中斷程序配置過程(HAL) 初始化相關參數,使能串口: HAL_UART_Init();該函數的參數是串口的基址,在stm32f429xx.h文件中,定義了8個UART_HandleTypeDef的值,分別是USART1、USART2、USART…

electron 切換至esm

前言 好消息,經過不知道多少年的討論。 electron28.0.0開始(23.08.31),默認支持esm了。 see https://github.com/electron/electron/issues/21457 使用方法 升級至electron^28.0.0簡單地在package.json中添加"type":…

javascript運算符_JavaScript中!=或!==運算符之間的區別

javascript運算符We can perceive the differences between these two operators as the same difference that occurs between double equalsTo () and triple equalsTo () operators. We already know that the (!) not-operator used along with () operator is used to che…

實訓09.09:簡單的彩票系統(機選多注)

package wsq; import java.util.Random; import java.util.Scanner;//機選多注 public class MoreCaiPiao {public static void main(String[] args) {// 定義二維數組 存儲多注彩票int[][] numArray new int[5][7];/** 二維數組中 未賦值之前的元素值都為0 { {0,0,0,0,0,0,0}…

項目組的激勵策略

我們經常會采取一獎勵措施,來激發大家工作的積極性,從而達到提高工作效率的目的。那么我們應該對項目組中的那些類型的人實施激勵呢?項目的實踐過程中,筆者認為有兩類人需要給予正面的獎勵。一,能夠主動思考&#xff0…

zk中的Datebox中得到Timestamp

String formatDate sdf.format(datebox.getValue()); para.setCreate_time(Timestamp.valueOf(formatDate)); 轉載于:https://www.cnblogs.com/avenxia/archive/2012/04/15/2450052.html

定時器--STM32f4--HAL

基本概念 STM32中有三種定時器,高級定時器,通用定時器,基本定時器,具體如下圖: 發生如下事件將產生中斷/DMA 更新:計數器向上溢出/向下溢出,計數器初始化觸發事件:計數器啟動、停…

實訓09.09:簡單的彩票系統(自選多注)

package wsq; import java.util.Scanner; public class CustomCaipiao {public static void main(String[] args) {/** 用戶自選彩票數字: 1.使用scanner來輸入彩票號碼! 2.直接寫成自選多注,注數由用戶輸入決定;* 3.紅球值1-33,不重復;藍球值1-16;*/// 定義二維數組 存儲所有的…

c ++查找字符串_C ++類和對象| 查找輸出程序| 套裝4

c 查找字符串Program 1: 程序1&#xff1a; #include <iostream>using namespace std;class Sample {int X;int* const PTR &X;public:void set(int x);void print();};void Sample::set(int x){*PTR x;}void Sample::print(){cout << *PTR - EOF << …

ASP.NET 泛型類型 Dictionary操作

protected void Page_Load(object sender, EventArgs e){//泛型Dictionary Dictionary<string, string> dit new Dictionary<string, string>();dit.Add("13", "張三");dit.Add("22", "李四");Response.Write("總數…

獨立看門狗---STM32----HAL

基本概念 看門狗解決的問題是什么&#xff1f; 在系統跑飛&#xff08;程序異常執行&#xff09;的情況&#xff0c;是系統復位&#xff0c;程序重新執行。 獨立看門狗適應用于需要看門狗作為一個在主程序之外能夠完全獨立工作&#xff0c;并且對時間精度要求低的場合。 工…

實訓09.09:簡單的彩票系統(注冊信息)

package wsq; import java.util.Scanner;//本文件負責注冊用戶信息 /*用戶注冊信息:1.要求設置賬號和密碼,使用字符串數組2.賬號名不能重復3.密碼需要輸入兩次,兩次密碼輸入一致4.滿足賬號名不重復.且兩次密碼一致,即為注冊成功!!將信息添加到字符串數組中String[][] users ne…

【轉】JAVA生成縮略圖

方法1&#xff1a;[第一種方法比后一種生成的縮略圖要清晰] import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.awt.image.ColorModel;import java.awt.image.WritableRaster;import java.awt.*;import java.awt.geom.AffineTransform;import jav…

javascript寫入_如何在JavaScript中寫入HTML元素?

javascript寫入寫入HTML元素 (Writing into an HTML element) To write string/text into an HTML element, we use the following things: 要將字符串/文本寫入HTML元素&#xff0c;我們使用以下內容&#xff1a; There must be an HTML element like paragraph, span, div e…