在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

STM32串口通信的重要性

hLf3_gh_c7d03a7 ? 來源:STM32嵌入式開發 ? 作者:STM32嵌入式開發 ? 2021-08-24 14:51 ? 次閱讀

剛開始學單片機的你,是不是會因用程序把LED點亮而感到高興,會因用程序把數碼管點亮而感到高興。這是好事,這也是想繼續學習下去的動力。

但是數據相關的實驗是學習單片機和STM32的一道坎,此時就需要用好本文要說的串口這個調試工具。

串口通信介紹

關于串口通信的介紹,也可以點擊閱讀之前發的一篇文章。

STM32串口通信基本原理

串口通信是指外設和計算機間,通過數據信號線 、地線、控制線等,按位進行傳輸數據的一種通訊方式。..。..這種太過理論了,看似懂了,但又不懂。還是用我筆者自己的話來說吧。

串口通信就是可以把程序在單片機或者STM32芯片中運行的結果發送到電腦的一種通信方式。

如何使用串口通訊,你需要知道的幾個重要的知識點:

波特率,數據傳輸的速度,如上圖設置為9600,那么程序中也要設置為9600

硬件連接,接收、發送交叉連接,如上圖TxD-》RxD,RxD-》TxD

停止位

奇偶校驗

硬件數據流

其中,后3項一般不需要改變。

學會串口通信能做什么

學過C語言的人都知道,程序開發需要不斷調試不斷驗證。很多的語言編程軟件都有很完整的程序調試功能。使用起來很方便。而我們的開發雖然也是用C語言,但我們的程序最終運行的環境不是在我們的開平臺而是在真正的硬件系統中運行。這時想要查看程序的運行過程或者結果就不像編程軟件那么方便了。

想要解決這個問題,我們這時就可以借助串口通信來把我們需要知道的結果又或者是程序運行的關鍵步驟發送到電腦上,我們就知道程序在硬件系統中運行是否出現問題。51單片機可以用串口來調試,STM32可以用串口來調試,Linux開發板也是使用串口來調試。

當你學會串口通信時,你可以開始玩WIFI模塊、GSM模塊、藍牙模塊、GPS模塊、以及各種使用串口通信的傳感器等等。有能力你還可以編寫上位機軟件通過串口通信來控制設備。

串口通信需要什么

如果你只有STM32核心板,那么你還需要一個串口轉USB模塊和一個串口數據接收軟件還有幾根杜邦線就可以了。

如果你的是比較完整的一款開發板的話,一般都已經帶有串口轉USB模塊,這樣使用起來就更簡單了。聰明的你是不是發現還缺少了點什么,對。沒錯因為還缺少了最重要的程序。想要使用串口通信當然還需要寫串口通信的程序。

下文就教你如何去用,而不是寫。

串口實驗

關于串口的實驗,之前錄過一個基于HAL庫來實現的視頻,可以點擊查看。

STM32打印數據到串口助手

而下文中的實驗基于標準庫實現的,與HAL相比思路是一樣的。

在做一個實驗時,最好把這個實驗分割成幾個關鍵的步驟,這樣做的好處就是可以清晰的知道自己需要做什么,以及做完了哪些。還有哪些還沒做。

下面把串口實驗分成幾個關鍵的步驟:

1)串口通信使用到的GPIO引腳配置

STM32F103系列的芯片一般都有三個串口以上,用來調試使用的串口一般都是使用USART1。其他的串口配置都是一樣的。

下面這段就是串口配置的程序:

GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能USART1,GPIOA時鐘//USART1_TX GPIOA.9GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //復用推挽輸出GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOA.9//USART1_RX GPIOA.10初始化GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; //PA10GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空輸入GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化GPIOA.10

串口使用的的GPIO口是PA9和PA10,所以只需配置這兩個IO口的輸入輸出模式就可以了。

2)串口主要參數設置(直接看程序)

USART_InitTypeDef USART_InitStructure;//USART 初始化設置USART_InitStructure.USART_BaudRate = bound;//串口波特率USART_InitStructure.USART_WordLength = USART_WordLength_8b;//數據格式,8位USART_InitStructure.USART_StopBits = USART_StopBits_1;//一個停止位USART_InitStructure.USART_Parity = USART_Parity_No;//無奇偶校驗位USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//無硬件數據流控制USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//收發模式USART_Init(USART1, &USART_InitStructure); //初始化串口1USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//開啟串口接受中斷

串口參數配置無非就是配置串口的波特率、數據格式、停止位、奇偶校驗、硬件流、收發模式。除了波特率需要改變其他的參數都不需要管。直接復制拿來用。

3)串口中斷配置

串口如果使用中斷接收,那么就需要配置串口的中斷參數,配置項無非就是配置那個的中斷源和中斷的優先級。

NVIC_InitTypeDef NVIC_InitStructure;//Usart1 NVIC 配置NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ; //搶占優先級3NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子優先級3NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能NVIC_Init(&NVIC_InitStructure); //根據指定的參數初始化VIC寄存器

4)串口使能

就是你需要什么時候開始使用串口功能,就是一句原有的函數。

USART_Cmd(USART1, ENABLE); //使能串口1

5)編寫串口中斷處理函數

使用庫函數開發,所有的中斷函數都是已經存在的,只是中斷函數里面沒有處理任何事情而已。中斷函數如下:

完整的串口中斷函數:

void USART1_IRQHandler(void){int Res=0; //定義一個變量用來接收串口數據集if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中斷(接收到的數據必須是0x0d 0x0a結尾) { Res =USART_ReceiveData(USART1); //讀取接收到的數據 USART_SendData(USART1,Res ); //把接收到的數據通過串口1發送出去 }}

串口數據的接收和發送的函數都是庫函數提供的,想用時只需找到它直接拿來用就可以了。

6)實驗現象

把程序編譯燒寫到STM32然后用串口轉USB模塊連接到電腦,在串口調試工具設置好波特率,打開串口。正常的話,那發送什么到STM32單片機,串口工具上就會收到什么。

總結

以上就完成了一個最簡單的串口實驗。

本文章主要是說明串口的重要性,用來調試程序很方便。

責任編輯:haq

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

    關注

    6040

    文章

    44592

    瀏覽量

    636895
  • STM32
    +關注

    關注

    2270

    文章

    10915

    瀏覽量

    356754
  • 串口
    +關注

    關注

    14

    文章

    1557

    瀏覽量

    76735

原文標題:學習STM32單片機,繞不開的串口

文章出處:【微信號:gh_c7d03a7ab5ff,微信公眾號:高速PCB硬件設計】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    RS232串口連接方式及注意事項

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

    HAL庫在STM32開發中的重要性

    HAL庫(Hardware Abstraction Layer Library,硬件抽象層庫)在STM32開發中扮演著至關重要的角色。以下是HAL庫在STM32開發中的重要性分析: 一
    的頭像 發表于 12-02 13:35 ?465次閱讀

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

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

    波特率設置在串口通信中的重要性

    在現代通信技術中,串口通信作為一種基本的數據傳輸方式,扮演著不可或缺的角色。無論是在計算機與外部設備的連接,還是在工業自動化系統中的數據交換,串口
    的頭像 發表于 11-22 09:51 ?699次閱讀

    使用RS232串口進行設備調試的技巧

    在電子和通信領域,RS232串口是一種廣泛使用的串行通信接口。盡管隨著USB等新技術的興起,RS232的應用有所減少,但在某些特定場合,如工業控制、嵌入式系統調試等,RS232仍然扮演著重要
    的頭像 發表于 11-21 09:38 ?741次閱讀

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

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

    RS232串口連接設備的注意事項

    RS232串口是一種廣泛使用的串行通信接口,它允許計算機與外部設備(如調制解調器、鼠標、打印機等)進行數據傳輸。在使用RS232串口連接設備時,需要注意以下幾個方面以確保通信的穩定性和
    的頭像 發表于 11-21 09:29 ?730次閱讀

    RS232串口通信協議詳解

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

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

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

    快速實現C2000串口程序升級

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

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

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

    485串口可以用can協議嗎

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

    求助,ADC接地的重要性

    ADC接地的重要性
    發表于 06-04 07:56

    論RISC-V的MCU中UART接口的重要性

    的適用重要性。在某些應用場景中,只需要異步通信能力的UART接口就能滿足需求,從而簡化了系統設計和實現。 綜上所述,RISC-V的MCU中UART接口的重要性在于其廣泛的適用
    發表于 05-27 15:52

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

    ZDP1440串口屏應用開發如何使用虛擬串口調試呢?本文將詳細方法分享給大家。
    的頭像 發表于 01-25 11:32 ?1742次閱讀
    ZDP1440<b class='flag-5'>串口</b>屏應用開發如何使用虛擬<b class='flag-5'>串口</b>調試
    主站蜘蛛池模板: yellow中文字幕久久网| 六月激情丁香| 天堂va欧美ⅴa亚洲va一国产| 年下攻高h好涨| 一区二区三区网站在线免费线观看| 49vv婷婷网| 国语一区| 91av视频网站| 特黄特a级特别特级特毛片| 李丽莎尤物福利视频| 欧美性精品| www夜夜操com| 黄色网址播放| 巨臀中文字幕一区二区翘臀| 亚洲伊人久久大香线蕉影院| 天天摸天天做天天爽水多| 人人干97| 欧洲妇女成人淫片aaa视频| 免费视频爰爱太爽了| 欧美性爽xxxⅹbbbb| 狠狠色狠狠色综合网| 久青草视频在线| 成人激情站| 国产3p在线播放| 午夜手机福利视频| 丁香婷婷综合网| 日本免费在线视频| 特级毛片视频在线| 特级做a爰片毛片免费看一区| 日韩三级免费观看| 国产色女人| 天堂网www在线资源网| 人人澡人人澡人人看青草| 狠狠色噜噜狠狠狠狠97不卡 | cijilu刺激 国产| 国产裸露片段精华合集链接| bt种子在线www天堂官网| 看草逼| 亚洲网站视频| 四虎国产精品免费入口| 日韩第二页|