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

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

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

知道STM32串口通信亂碼要怎么處理嗎

MCU開發(fā)加油站 ? 來源:CSDN技術(shù)社區(qū) ? 作者:aizaiyueye ? 2021-06-16 15:35 ? 次閱讀

STM32串口通信以及溫度采集搞定,其中主要遇到STM32系列單片機(jī)時(shí)鐘樹的問題,串口通信遇到串口調(diào)試助手能夠接收到數(shù)據(jù)但出現(xiàn)亂碼現(xiàn)象。

開始一直以為是串口配置和程序代碼問題,因?yàn)槭堑谝淮紊想娫诰€調(diào)試STM32板子,后面主要查串口波特率配置和收發(fā)函數(shù)程序段,如下圖:

c66b74cc-cb60-11eb-9e57-12bb97331649.png

波特率設(shè)置成115200沒問題,試著降低波特率改成9600和4800但問題依舊沒有解決,緊接著如下處理:

c6a06ae2-cb60-11eb-9e57-12bb97331649.png

將重定向函數(shù)注釋,單獨(dú)寫串口發(fā)送字節(jié)和字符串函數(shù),依舊失敗。最后鎖定到系統(tǒng)時(shí)鐘配置上,由于手上的STM32開發(fā)板改用了12M的晶振,根據(jù)單片機(jī)時(shí)鐘樹的理解和解讀,一般采用外部時(shí)鐘HSE,系統(tǒng)時(shí)鐘配置成72M,8*9=72,,12*6=72,對(duì)于 SYSCLK、HCLK、PCLK2、PCLK1

這四個(gè)時(shí)鐘的配置一般是:PCLK2 = HCLK = SYSCLK=PLLCLK = 72M,PCLK1=HCLK/2= 36M。UART1掛載在APB2總線,而PCLK2 = HCLK = SYSCLK=PLLCLK = 72M,

c6e61736-cb60-11eb-9e57-12bb97331649.png

因此在system_stm32f10x.c文件中的setsysclockto72()函數(shù)中,(system_stm32f10x.c文件實(shí)現(xiàn)了 STM32的時(shí)鐘配置,操作的是片上的 RCC這個(gè)外設(shè)統(tǒng)在上電之后,首選會(huì)執(zhí)行由匯編編寫的啟動(dòng)文件,啟動(dòng)文件中的復(fù)位函數(shù)中調(diào)用systemInit 函數(shù)就在這個(gè)文件里面定義。systemInit 函數(shù)默認(rèn)調(diào)用setsysclockto72()配置系統(tǒng)時(shí)鐘,系統(tǒng)的時(shí)鐘就被初始化成 72M。)這樣便將系統(tǒng)時(shí)鐘配置成了72M,否則為12*9=108M。但測試運(yùn)行仍然接收到亂碼。

繼續(xù)找問題所在,查看 在stm32f10x.h里,有下面這段代碼

c782c3d8-cb60-11eb-9e57-12bb97331649.png

原因是庫使用默認(rèn)8MHz晶振,可以通過宏使用25MHz或12M晶振。具體定義在stm32f10x.h文件中,HSE_VALUE,一開始定義成了8000000,改成12000000搞定,串口通信顯示正常。

版權(quán)聲明:本文為CSDN博主「aizaiyueye」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/aizaiyueye/article/details/79049816

編輯:jq

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

    關(guān)注

    6037

    文章

    44558

    瀏覽量

    635353
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    356044
  • 串口通信
    +關(guān)注

    關(guān)注

    34

    文章

    1626

    瀏覽量

    55529
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4331

    瀏覽量

    62622

原文標(biāo)題:STM32串口通信亂碼詳細(xì)處理方法

文章出處:【微信號(hào):mcugeek,微信公眾號(hào):MCU開發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RS232串口連接方式及注意事項(xiàng)

    數(shù)據(jù)交換。 RS-232串口簡介 RS-232標(biāo)準(zhǔn)最初由電子工業(yè)聯(lián)盟(EIA)在1960年制定,用于定義串行通信的電氣特性、信號(hào)定時(shí)和數(shù)據(jù)格式。RS-232串口使用25針的D型連接器(DB-25),但后來更常用的是9針的D型連接
    的頭像 發(fā)表于 12-10 16:23 ?797次閱讀

    LS10串口數(shù)據(jù)庫模塊外擴(kuò)SD卡功能

    LS10串口數(shù)據(jù)庫模塊外擴(kuò)SD卡功能
    的頭像 發(fā)表于 11-23 09:42 ?200次閱讀
    LS10<b class='flag-5'>串口</b>數(shù)據(jù)庫模塊外擴(kuò)SD卡功能

    RS232串口通信中常見問題及解決辦法

    RS232串口通信中常見問題及解決辦法主要包括以下幾個(gè)方面: 一、物理連接問題 問題 :串口線未插穩(wěn)或接口松動(dòng)。 解決辦法 :重新插拔串口線,確保連接牢固。同時(shí)檢查插頭和針腳是否損壞,
    的頭像 發(fā)表于 11-21 09:32 ?1249次閱讀

    RS232串口通信協(xié)議詳解

    在計(jì)算機(jī)硬件和通信領(lǐng)域,RS-232串口通信協(xié)議是一個(gè)歷史悠久且廣泛使用的標(biāo)準(zhǔn)。它允許計(jì)算機(jī)通過串行接口與各種外部設(shè)備進(jìn)行通信,如調(diào)制解調(diào)器、鼠標(biāo)、打印機(jī)等。 RS-232的歷史和定義
    的頭像 發(fā)表于 11-21 09:24 ?818次閱讀

    FT232芯片設(shè)計(jì)的USB轉(zhuǎn)RS232串口原理圖

    FT232芯片設(shè)計(jì)的USB轉(zhuǎn)RS232串口原理圖
    發(fā)表于 10-21 11:06 ?6次下載

    快速實(shí)現(xiàn)C2000串口程序升級(jí)

    電子發(fā)燒友網(wǎng)站提供《快速實(shí)現(xiàn)C2000串口程序升級(jí).pdf》資料免費(fèi)下載
    發(fā)表于 08-29 10:50 ?1次下載
    快速實(shí)現(xiàn)C2000<b class='flag-5'>串口</b>程序升級(jí)

    集特推薦 雙網(wǎng)10串口飛騰FT2000商用臺(tái)式電腦主機(jī)

    前段時(shí)間為大家分享了國產(chǎn)龍芯、海光、飛騰D2000的商務(wù)臺(tái)式機(jī),它們的共同特點(diǎn)都是單網(wǎng),1個(gè)RS232串口。今天就為大家推薦一款雙網(wǎng)、可擴(kuò)展10串口、14USB接口的飛騰FT200
    的頭像 發(fā)表于 07-17 16:04 ?554次閱讀
    集特推薦  雙網(wǎng)10<b class='flag-5'>串口</b>飛騰FT2000商用臺(tái)式電腦主機(jī)

    485串口可以用can協(xié)議嗎

    一、引言 隨著工業(yè)自動(dòng)化和智能控制技術(shù)的發(fā)展,通信協(xié)議在設(shè)備間數(shù)據(jù)傳輸和控制中扮演著越來越重要的角色。485串口和CAN協(xié)議是兩種常見的通信協(xié)議,它們?cè)诓煌膽?yīng)用場景中發(fā)揮著重要作用。本文將對(duì)這兩種
    的頭像 發(fā)表于 06-16 09:21 ?1252次閱讀

    stm8串口通信接收數(shù)據(jù),如何判斷是否接收完畢?

    stm8串口通信接收數(shù)據(jù)。已有的協(xié)議是只有幀頭,沒有幀尾,最后一個(gè)字節(jié)是校驗(yàn)和,一幀數(shù)據(jù)的長度是不確定的,但可以根據(jù)第三個(gè)字節(jié)來判斷本次數(shù)據(jù)的長度,請(qǐng)問怎么判斷這幀數(shù)據(jù)接收完畢,以及怎樣做超時(shí)處理
    發(fā)表于 05-06 07:24

    STM32F030F4串口空閑中斷接收不定長數(shù)據(jù),發(fā)生中斷后不知道如何計(jì)算接收到的字節(jié)數(shù)?

    我用STM32F030F4串口空閑中斷接收不定長數(shù)據(jù),發(fā)生中斷后不知道怎樣計(jì)算接收到的字節(jié)數(shù)。
    發(fā)表于 04-03 07:12

    STM32F407VET6串口5的三個(gè)引腳TX RX GND跟STM32F103VET6串口5的RX TX GND三個(gè)引腳相連后燒毀的原因?

    我把STM32F407VET6芯片的串口5的三個(gè)引腳TX RX GND分別跟STM32F103VET6串口5的RX TX GND 三個(gè)引腳直接相連后!上電103芯片發(fā)燙,燒毀!不
    發(fā)表于 03-26 08:03

    stm32L152RCDISCOVER進(jìn)行串口通信實(shí)驗(yàn)接收亂碼怎么解決?

    使用stm32L152RCDISCOVER開發(fā)板進(jìn)行串口通信實(shí)驗(yàn)為什么接收亂碼
    發(fā)表于 03-11 07:56

    嵌入式操作教程:2-12 RS232串口通信實(shí)驗(yàn)(查詢方式)

    一、實(shí)驗(yàn)?zāi)康?了解UART 的功能和結(jié)構(gòu),學(xué)習(xí)RS232串口通信協(xié)議,并實(shí)現(xiàn)通過查詢方式進(jìn)行 RS232 串口通信收發(fā)。 二、實(shí)驗(yàn)原理 RS232 RS232接口是現(xiàn)在主流的串行
    發(fā)表于 02-07 14:37

    ZDP1440串口屏應(yīng)用開發(fā)如何使用虛擬串口調(diào)試

    ZDP1440串口屏應(yīng)用開發(fā)如何使用虛擬串口調(diào)試呢?本文將詳細(xì)方法分享給大家。
    的頭像 發(fā)表于 01-25 11:32 ?1692次閱讀
    ZDP1440<b class='flag-5'>串口</b>屏應(yīng)用開發(fā)如何使用虛擬<b class='flag-5'>串口</b>調(diào)試

    什么是RS-232串口?消費(fèi)級(jí)電腦通常沒有232串口的主要原因

    什么是RS-232串口?消費(fèi)級(jí)電腦通常沒有232串口的主要原因? RS-232串口是一種標(biāo)準(zhǔn)的串行通信接口,用于在計(jì)算機(jī)和外部設(shè)備之間傳輸數(shù)據(jù),目的是為計(jì)算機(jī)和外部設(shè)備之間提供可靠的數(shù)
    的頭像 發(fā)表于 01-09 13:52 ?1162次閱讀