STM32 串口USART通訊驅動

前言

本篇文章對串口Usart進行講解,為后面的esp8266和語音模塊控制打好基礎。

1.串口USART

USART(Universal Synchronous/Asynchronous Receiver/Transmitter,通用同步 / 異步收發器) 是一種常見的串行通信接口,廣泛應用于嵌入式系統、單片機、傳感器、通信設備等領域,主要用于設備之間的數據傳輸。
它的核心功能和作用可以從以下幾個方面理解:

1.1.實現設備間的串行通信

串行通信:數據通過一根或幾根信號線逐位傳輸(與并行通信的多線同時傳輸相比),節省硬件引腳資源,適合遠距離或低成本的數據交換。
連接場景:例如單片機(如 STM32)與傳感器、藍牙模塊(如 HC-05)、Wi-Fi 模塊(如 ESP8266)、上位機(如電腦)等設備之間的通信,通常通過 USART 接口連接。

1.2. 支持同步和異步兩種通信模式

USART 的 “同步 / 異步” 特性使其靈活性很高:
異步模式(最常用):不需要專用的時鐘線,雙方通過預先約定的波特率(數據傳輸速率,如 9600bps、115200bps)同步數據,僅通過TX(發送線) 和RX(接收線) 傳輸數據。例如:電腦通過 USB 轉 TTL 模塊與 ESP8266 的通信,就是用異步模式,通過串口助手發送 AT 指令。
同步模式:需要額外的時鐘線(SCK)來同步數據傳輸,適合對時序要求嚴格的場景(如與某些傳感器或外設的高速通信)。

1.3. 數據傳輸的基本原理

數據以 “幀” 為單位傳輸,每一幀包含:起始位(標志數據開始)、數據位(實際傳輸的 8 位或 9 位數據)、校驗位(可選,用于驗證數據正確性)、停止位(標志數據結束)。
雙方需約定相同的波特率(如 9600、115200)、數據位、校驗位、停止位(稱為 “串口參數”),否則會出現數據傳輸錯誤。

1.4. 在嵌入式開發中的典型應用

指令控制:通過 USART 發送 AT 指令配置模塊(如 ESP8266 的 Wi-Fi 連接、藍牙模塊的配對)。
數據采集:傳感器(如溫濕度傳感器、GPS 模塊)通過 USART 向上位機或單片機發送采集到的數據。
調試輸出:單片機通過 USART 向上位機(如電腦)發送調試信息(如打印變量值、程序運行狀態),方便開發調試。
設備聯動:多個單片機或模塊通過 USART 組成通信網絡,實現數據共享或協同控制(如智能家居中多個設備的聯動)。

1.5. 與 UART 的區別

UART(Universal Asynchronous Receiver/Transmitter) 僅支持異步通信,沒有同步模式。
USART 是 UART 的增強版,既支持異步通信,也支持同步通信,功能更全面。在實際應用中,若無需同步模式,USART 通常也以異步模式使用,此時可視為 UART。
總之,USART 是嵌入式系統中設備間 “對話” 的重要橋梁,通過簡單的硬件連接(通常只需 TX、RX、GND 三根線)和軟件配置,即可實現穩定的數據傳輸,是物聯網、智能家居、工業控制等領域的基礎通信接口。

1.6.硬件介紹

2.代碼實現

2.1.STM32Cubemx配置

我們這里以輸出調試信息所用到的USART串口1為例。PA9為串口1的TXD、PA10為串口1的RXD。
我們將串口UART1配置為異步功能,Mode選擇為Asynchronous,與PC端的通訊波特率為115200 Bit/s。
因為我們只是向PC端發送一些調試信息,無需接收PC端的數據,所以我們無需打開中斷功能。

?

2.2.fputc重定向支持printf

在 STM32 開發中,標準庫函數(如printf())默認輸出到控制臺(如電腦終端),但在嵌入式系統中,通常需要將輸出重定向到串口。通過重寫fputc()函數,可以實現以下功能:
  1. 使用printf()調試:將調試信息通過串口發送到電腦,方便開發時查看。
  2. 與外部設備通信:通過串口向其他設備發送數據。
該函數的作用是將字符ch,通過 USART1 串口發送出去,并等待發送完成。
int fputc(int ch, FILE *f)
{//USART1->SR:USART1 的狀態寄存器,其中第 6 位(TXE)表示發送緩沖區是否為空。//0x40:二進制為0100 0000,用于檢查TXE位。//循環等待:直到TXE位被置 1(發送緩沖區為空),才繼續執行下一步。while( (USART1->SR & 0x40) == 0 );//USART1->DR:USART1 的數據寄存器,寫入此寄存器將觸發串口發送。//(uint8_t) ch:將字符轉換為無符號 8 位整數后發送。USART1->DR = (uint8_t) ch;//返回發送的字符(作為整數),表示操作成功。return ch;
}

2.3.printf使用

int main()
{printf("Demo run!!!\n");  delay_ms(1000);  
}

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

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

相關文章

pytorch版本densenet代碼講解

DenseNet 模型代碼詳解 下面是 DenseNet 模型代碼的逐部分詳細解析: 1. 導入模塊 import re from collections import OrderedDict from functools import partial from typing import Any, Optionalimport torch import torch.nn as nn import torch.nn.functional…

前端常見設計模式深度解析

# 前端常見設計模式深度解析一、設計模式概述 設計模式是解決特定問題的經驗總結,前端開發中常用的設計模式可分為三大類: 創建型模式:處理對象創建機制(單例、工廠等)結構型模式:處理對象組合(…

React 學習(3)

核心API——React.creatElement()方法優點:將創建元素、添加屬性和事件、添加內容和子元素等使用原生dom需要進行復雜操作才能實現的功能集成在一個API中。1.該方法接收三個參數第一個是要創建的元素的名稱(小寫是因為如果,大寫開頭會被react…

傾斜攝影無人機飛行航線規劃流程詳解

在傾斜攝影測量項目中,航線規劃的嚴謹性直接決定了最終三維模型的質量與完整性。照片覆蓋不全、模型空洞、紋理模糊或分辨率不達標等問題,往往源于規劃階段對關鍵細節的疏忽。本文將系統梳理傾斜攝影無人機航線規劃的核心流程與關鍵要點,旨在…

Minio大文件分片上傳

一、引入依賴 <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.3.3</version></dependency> 二、自定義Minio客戶端 package com.gstanzer.video.controller;import com.google.common.c…

Jenkins 插件深度應用:讓你的CI/CD流水線如虎添翼 [特殊字符]

Jenkins 插件深度應用&#xff1a;讓你的CI/CD流水線如虎添翼 &#x1f680; 嘿&#xff0c;各位開發小伙伴&#xff01;今天咱們來聊聊Jenkins的插件生態系統。如果說Jenkins是一臺強大的引擎&#xff0c;那插件就是讓這臺引擎發揮最大威力的各種零部件。準備好了嗎&#xff1…

密碼學(斯坦福)

密碼學筆記 \huge{密碼學筆記} 密碼學筆記 斯坦福大學密碼學的課程筆記 課程網址&#xff1a;https://www.bilibili.com/video/BV1Rf421o79E/?spm_id_from333.337.search-card.all.click&vd_source5cc05a038b81f6faca188e7cf00484f6 概述 密碼學的使用背景 安全信息保護…

代碼隨想錄算法訓練營第四十六天|動態規劃part13

647. 回文子串 題目鏈接&#xff1a;647. 回文子串 - 力扣&#xff08;LeetCode&#xff09; 文章講解&#xff1a;代碼隨想錄 思路&#xff1a; 以dp【i】表示以s【i】結尾的回文子串的個數&#xff0c;發現遞推公式推導不出來此路不通 以dp【i】【j】表示s【i】到s【j】的回…

基于四種機器學習算法的球隊數據分析預測系統的設計與實現

文章目錄 有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主項目介紹項目展示隨機森林模型XGBoost模型邏輯回歸模型catboost模型每文一語 有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主 項目介紹 本項目旨在設計與實現…

http、SSL、TLS、https、證書

一、基礎概念 1.HTTP HTTP (超文本傳輸協議) 是一種用于客戶端和服務器之間傳輸超媒體文檔的應用層協議&#xff0c;是萬維網的基礎。 簡而言之&#xff1a;一種獲取和發送信息的標準協議 2.SSL 安全套接字層&#xff08;SSL&#xff09;是一種通信協議或一組規則&#xf…

在 C++ 中,判斷 `std::string` 是否為空字符串

在 C 中&#xff0c;判斷 std::string 是否為空字符串有多種方法&#xff0c;以下是最常用的幾種方式及其區別&#xff1a; 1. 使用 empty() 方法&#xff08;推薦&#xff09; #include <string>std::string s; if (s.empty()) {// s 是空字符串 }特性&#xff1a; 時間…

【Harmony】鴻蒙企業應用詳解

【HarmonyOS】鴻蒙企業應用詳解 一、前言 1、應用類型定義速覽&#xff1a; HarmonyOS目前針對應用分為三種類型&#xff1a;普通應用&#xff0c;游戲應用&#xff0c;企業應用。 而企業應用又分為&#xff0c;企業普通應用和設備管理應用MDM&#xff08;Mobile Device Man…

Linux云計算基礎篇(8)

VIM 高級特性插入模式按 i 進入插入模式。按 o 在當前行下方插入空行并進入插入模式。按 O 在當前行上方插入空行并進入插入模式。命令模式:set nu 顯示行號。:set nonu 取消顯示行號。:100 光標跳轉到第 100 行。G 光標跳轉到文件最后一行。gg 光標跳轉到文件第一行。30G 跳轉…

Linux進程單例模式運行

Linux進程單例模式運行 #include <iostream> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>int write_pid(const cha…

【Web 后端】部署服務到服務器

文章目錄 前言一、如何啟動服務二、掛載和開機啟動服務1. 配置systemctl 服務2. 創建server用戶3. 啟動服務 總結 前言 如果你的后端服務寫好了如果部署到你的服務器呢&#xff0c;本次通過fastapi寫的服務實例&#xff0c;示范如何部署到服務器&#xff0c;并做服務管理。 一…

國產MCU學習Day5——CW32F030C8T6:窗口看門狗功能全解析

每日更新教程&#xff0c;評論區答疑解惑&#xff0c;小白也能變大神&#xff01;" 目錄 一.窗口看門狗&#xff08;WWDG&#xff09;簡介 二.窗口看門狗寄存器列表 三.窗口看門狗復位案例 一.窗口看門狗&#xff08;WWDG&#xff09;簡介 CW32F030C8T6 內部集成窗口看…

2025年文件加密軟件分享:守護數字世界的核心防線

在數字化時代&#xff0c;數據已成為個人與企業的寶貴資產&#xff0c;文件加密軟件通過復雜的算法&#xff0c;確保信息在存儲、傳輸與共享過程中的保密性、完整性與可用性。一、文件加密軟件的核心原理文件加密軟件算法以其高效性與安全性廣泛應用&#xff0c;通過對文件數據…

node.js下載教程

1.項目環境文檔 語雀 2.nvm安裝教程與nvm常見命令,超詳細!-阿里云開發者社區 C:\Windows\System32>nvm -v 1.2.2 C:\Windows\System32>nvm list available Error retrieving "http://npm.taobao.org/mirrors/node/index.json": HTTP Status 404 C:\Window…

(AI如何解決問題)在一個項目,跳轉到外部html頁面,頁面布局

問題描述目前&#xff0c;ERP后臺有很多跳轉外部鏈接的地方&#xff0c;會直接打開一個tab顯示。因為有些頁面是適配手機屏幕顯示&#xff0c;放在瀏覽器會超級大。不美觀&#xff0c;因此提出優化。修改前&#xff1a;修改后&#xff1a;思考過程1、先看下代碼&#xff1a;log…

網絡通信協議與虛擬網絡技術相關整理(上)

#作者&#xff1a;程宏斌 文章目錄 tcp協議udp協議arp協議icmp協議dhcp協議BGP協議OSPF協議BGP vs OSPF 對比表VLAN&#xff08;Virtual LAN&#xff09;VXLAN&#xff08;Virtual Extensible LAN&#xff09;IPIP&#xff08;IP-in-IP&#xff09;vxlan/vlan/ipip網橋/veth網…