91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

STM32串口通信的重要性

hLf3_gh_c7d03a7 ? 來源:STM32嵌入式開發(fā) ? 作者:STM32嵌入式開發(fā) ? 2021-08-24 14:51 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

但是數(shù)據(jù)相關(guān)的實驗是學習單片機和STM32的一道坎,此時就需要用好本文要說的串口這個調(diào)試工具。

串口通信介紹

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

STM32串口通信基本原理

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

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

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

波特率,數(shù)據(jù)傳輸?shù)乃俣龋缟蠄D設(shè)置為9600,那么程序中也要設(shè)置為9600

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

停止位

奇偶校驗

硬件數(shù)據(jù)流

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

學會串口通信能做什么

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

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

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

串口通信需要什么

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

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

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

串口實驗

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

STM32打印數(shù)據(jù)到串口助手

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

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

下面把串口實驗分成幾個關(guān)鍵的步驟:

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

STM32F103系列的芯片一般都有三個串口以上,用來調(diào)試使用的串口一般都是使用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)串口主要參數(shù)設(shè)置(直接看程序)

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

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

3)串口中斷配置

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

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

4)串口使能

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

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

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

使用庫函數(shù)開發(fā),所有的中斷函數(shù)都是已經(jīng)存在的,只是中斷函數(shù)里面沒有處理任何事情而已。中斷函數(shù)如下:

完整的串口中斷函數(shù):

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

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

6)實驗現(xiàn)象

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

總結(jié)

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

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

責任編輯:haq

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

    關(guān)注

    6076

    文章

    45495

    瀏覽量

    670466
  • STM32
    +關(guān)注

    關(guān)注

    2309

    文章

    11162

    瀏覽量

    373482
  • 串口
    +關(guān)注

    關(guān)注

    15

    文章

    1619

    瀏覽量

    82841

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

文章出處:【微信號:gh_c7d03a7ab5ff,微信公眾號:高速PCB硬件設(shè)計】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    STM32驅(qū)動串口屏,STM32F103C8T6串口發(fā)送指令控制HMI串口

    僅是一部分常用的基礎(chǔ)指令,更多更仔細的指令或者函數(shù)可以訪問陶晶馳資料官網(wǎng)。 硬件和接線 硬件需要一塊STM32F103C8T6的開發(fā)板,杜邦線諾干,2.4寸串口屏一塊 接線 串口STM32
    的頭像 發(fā)表于 02-10 17:07 ?150次閱讀
    <b class='flag-5'>STM32</b>驅(qū)動<b class='flag-5'>串口</b>屏,<b class='flag-5'>STM32</b>F103C8T6<b class='flag-5'>串口</b>發(fā)送指令控制HMI<b class='flag-5'>串口</b>屏

    串口調(diào)試步驟(適合免驅(qū)動的232串口設(shè)備)

    密碼切換到root超級管理下 apt update 更新插件 apt-get install cutecom 安裝系統(tǒng)自帶的串口調(diào)試工具 cutecom 輸入串口測試的指令會彈出一個圖形界面如下圖 32串口協(xié)議測試需要將第2和第
    的頭像 發(fā)表于 12-17 17:23 ?1455次閱讀
    <b class='flag-5'>串口</b>調(diào)試步驟(適合免驅(qū)動的232<b class='flag-5'>串口</b>設(shè)備)

    提升可靠,防水透氣膜的多重功能的重要性

    提升可靠,防水透氣膜的多重功能的重要性
    的頭像 發(fā)表于 12-03 17:34 ?499次閱讀
    提升可靠<b class='flag-5'>性</b>,防水透氣膜的多重功能的<b class='flag-5'>重要性</b>

    UWB650串口測距通信定位模塊規(guī)格書

    UWB650串口測距通信定位模塊規(guī)格書
    發(fā)表于 11-03 17:40 ?1次下載

    關(guān)于stm32f4zgt6和mspm0g3507串口通信問題

    本人在使用stm32f4zgt6和mspm0g3507串口通信時出現(xiàn)問題,情況如下: m0芯片使用軟件超時解析進行數(shù)據(jù)接收,使用標準庫的transmit函數(shù)進行數(shù)據(jù)發(fā)送。 stm32使
    發(fā)表于 09-01 11:11

    120Ω的秘密:CAN總線終端電阻的重要性

    CAN總線作為一種廣泛應用的工業(yè)通信協(xié)議,其終端電阻的作用不容忽視。本文將詳細探討CAN總線終端電阻的重要性及其在通信中的關(guān)鍵作用。CAN總線終端電阻的重要性CAN總線終端電阻顧名思義
    的頭像 發(fā)表于 08-08 11:35 ?1119次閱讀
    120Ω的秘密:CAN總線終端電阻的<b class='flag-5'>重要性</b>

    STM32串口發(fā)送數(shù)據(jù),USART_FLAG_TC無法置位怎么解決?

    STM32串口發(fā)送數(shù)據(jù),在經(jīng)過一段時間的數(shù)據(jù)發(fā)送,大概200ms發(fā)送一下,一次發(fā)送大概二三十個字節(jié)的數(shù)據(jù),有可能會發(fā)生USART_FLAG_TC不置位的情況,如何解決或者避免?輪詢發(fā)送,后卡在了
    發(fā)表于 07-29 11:44

    ESP32用作經(jīng)典藍牙串口透傳模塊與手機進行串口通信

    本文介紹了如何把ESP32用作一個藍牙串口透傳設(shè)備使用,其功能和常用的HC-05/06串口藍牙設(shè)備一樣。并與手機藍牙串口APP進行雙向藍牙通信。
    的頭像 發(fā)表于 06-20 17:45 ?3005次閱讀
    ESP32用作經(jīng)典藍牙<b class='flag-5'>串口</b>透傳模塊與手機進行<b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    PL2303串口驅(qū)動

    PL2303串口驅(qū)動
    發(fā)表于 04-09 16:02 ?4次下載

    PL2303串口驅(qū)動win10版本用

    PL2303串口驅(qū)動win10版本用
    發(fā)表于 04-09 16:02 ?1次下載

    cp2102串口驅(qū)動

    cp2102串口驅(qū)動
    發(fā)表于 04-09 16:01 ?10次下載

    STM32串口下載軟件(FLYMCU)

    STM32串口下載軟件(FLYMCU),經(jīng)典版本,親試可用。
    發(fā)表于 04-09 15:59 ?11次下載

    STM32G4串口無法發(fā)送正確的信息是怎么回事?

    STM32G4串口無法發(fā)送正確的信息
    發(fā)表于 03-14 07:14

    PCB拼板設(shè)計全解析:重要性、優(yōu)勢與應用實踐

    一站式PCBA智造廠家今天為大家講講PCB拼板設(shè)計的重要性表現(xiàn)哪些方面?PCB拼板設(shè)計的基本概念及其重要性。在電子制造行業(yè),SMT貼片工藝中,PCB拼板設(shè)計是一項極為關(guān)鍵的步驟。通過優(yōu)化PCB拼板
    的頭像 發(fā)表于 03-13 09:35 ?1375次閱讀
    PCB拼板設(shè)計全解析:<b class='flag-5'>重要性</b>、優(yōu)勢與應用實踐

    STM32串口通信,上電和斷電串口助手會返回數(shù)是怎么回事?

    STM32串口通信,上電和斷電串口助手會返回數(shù),是為什么呢
    發(fā)表于 03-12 07:57