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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

MCU開發加油站 ? 來源:CSDN技術社區 ? 作者:aizaiyueye ? 2021-06-16 15:35 ? 次閱讀

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

開始一直以為是串口配置和程序代碼問題,因為是第一次上電在線調試STM32板子,后面主要查串口波特率配置和收發函數程序段,如下圖:

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

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

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

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

這四個時鐘的配置一般是: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()函數中,(system_stm32f10x.c文件實現了 STM32的時鐘配置,操作的是片上的 RCC這個外設統在上電之后,首選會執行由匯編編寫的啟動文件,啟動文件中的復位函數中調用systemInit 函數就在這個文件里面定義。systemInit 函數默認調用setsysclockto72()配置系統時鐘,系統的時鐘就被初始化成 72M。)這樣便將系統時鐘配置成了72M,否則為12*9=108M。但測試運行仍然接收到亂碼。

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

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

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

版權聲明:本文為CSDN博主「aizaiyueye」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。

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

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6032

    文章

    44518

    瀏覽量

    633067
  • STM32
    +關注

    關注

    2266

    文章

    10872

    瀏覽量

    354827
  • 串口通信
    +關注

    關注

    34

    文章

    1620

    瀏覽量

    55425
  • 函數
    +關注

    關注

    3

    文章

    4307

    瀏覽量

    62432

原文標題:STM32串口通信亂碼詳細處理方法

文章出處:【微信號:mcugeek,微信公眾號:MCU開發加油站】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    LS10串口數據庫模塊外擴SD卡功能

    LS10串口數據庫模塊外擴SD卡功能
    的頭像 發表于 11-23 09:42 ?138次閱讀
    LS10<b class='flag-5'>串口</b>數據庫模塊外擴SD卡功能

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

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

    RS232串口通信協議詳解

    在計算機硬件和通信領域,RS-232串口通信協議是一個歷史悠久且廣泛使用的標準。它允許計算機通過串行接口與各種外部設備進行通信,如調制解調器、鼠標、打印機等。 RS-232的歷史和定義
    的頭像 發表于 11-21 09:24 ?253次閱讀

    FT232芯片設計的USB轉RS232串口原理圖

    FT232芯片設計的USB轉RS232串口原理圖
    發表于 10-21 11:06 ?1次下載

    快速實現C2000串口程序升級

    電子發燒友網站提供《快速實現C2000串口程序升級.pdf》資料免費下載
    發表于 08-29 10:50 ?0次下載
    快速實現C2000<b class='flag-5'>串口</b>程序升級

    集特推薦 雙網10串口飛騰FT2000商用臺式電腦主機

    前段時間為大家分享了國產龍芯、海光、飛騰D2000的商務臺式機,它們的共同特點都是單網,1個RS232串口。今天就為大家推薦一款雙網、可擴展10串口、14USB接口的飛騰FT200
    的頭像 發表于 07-17 16:04 ?489次閱讀
    集特推薦  雙網10<b class='flag-5'>串口</b>飛騰FT2000商用臺式電腦主機

    用esp32的串口Stm32F407串口通訊,通過TJA轉CAN,結果esp32串口讀到的一直是自己發的數據,為什么?

    我用esp32的串口Stm32F407串口通訊,通過TJA轉CAN。結果esp32串口讀到的一直是自己發的數據,各位大神給我看看哪里有問題么
    發表于 06-19 07:00

    485串口可以用can協議嗎

    一、引言 隨著工業自動化和智能控制技術的發展,通信協議在設備間數據傳輸和控制中扮演著越來越重要的角色。485串口和CAN協議是兩種常見的通信協議,它們在不同的應用場景中發揮著重要作用。本文將對這兩種
    的頭像 發表于 06-16 09:21 ?1096次閱讀

    stm8串口通信接收數據,如何判斷是否接收完畢?

    stm8串口通信接收數據。已有的協議是只有幀頭,沒有幀尾,最后一個字節是校驗和,一幀數據的長度是不確定的,但可以根據第三個字節來判斷本次數據的長度,請問怎么判斷這幀數據接收完畢,以及怎樣做超時處理
    發表于 05-06 07:24

    STM32F030F4串口空閑中斷接收不定長數據,發生中斷后不知道如何計算接收到的字節數?

    我用STM32F030F4串口空閑中斷接收不定長數據,發生中斷后不知道怎樣計算接收到的字節數。
    發表于 04-03 07:12

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

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

    stm32L152RCDISCOVER進行串口通信實驗接收亂碼怎么解決?

    使用stm32L152RCDISCOVER開發板進行串口通信實驗為什么接收亂碼
    發表于 03-11 07:56

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

    一、實驗目的 了解UART 的功能和結構,學習RS232串口通信協議,并實現通過查詢方式進行 RS232 串口通信收發。 二、實驗原理 RS232 RS232接口是現在主流的串行
    發表于 02-07 14:37

    ZDP1440串口屏應用開發如何使用虛擬串口調試

    ZDP1440串口屏應用開發如何使用虛擬串口調試呢?本文將詳細方法分享給大家。
    的頭像 發表于 01-25 11:32 ?1616次閱讀
    ZDP1440<b class='flag-5'>串口</b>屏應用開發如何使用虛擬<b class='flag-5'>串口</b>調試

    什么是RS-232串口?消費級電腦通常沒有232串口的主要原因

    什么是RS-232串口?消費級電腦通常沒有232串口的主要原因? RS-232串口是一種標準的串行通信接口,用于在計算機和外部設備之間傳輸數據,目的是為計算機和外部設備之間提供可靠的數
    的頭像 發表于 01-09 13:52 ?1062次閱讀