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

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

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

3天內不再提示

串口在單片機中的重要性

STM32嵌入式開發 ? 來源:STM32嵌入式開發 ? 作者:STM32嵌入式開發 ? 2022-07-14 16:14 ? 次閱讀

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

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

串口通信介紹

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

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

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

b5460dc0-028b-11ed-ba43-dac502259ad0.png

b55b15c6-028b-11ed-ba43-dac502259ad0.png

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

波特率,數據傳輸的速度,如上圖設置為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_RXGPIOA.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_InitTypeDefUSART_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)編寫串口中斷處理函數
使用庫函數開發,所有的中斷函數都是已經存在的,只是中斷函數里面沒有處理任何事情而已。中斷函數如下:

b56730b8-028b-11ed-ba43-dac502259ad0.png

完整的串口中斷函數:

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

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

6)實驗現象

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

總結

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

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

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

文章出處:【微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

審核編輯:彭靜

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

    關注

    242

    文章

    23140

    瀏覽量

    658518
  • 單片機
    +關注

    關注

    6032

    文章

    44519

    瀏覽量

    633069
  • STM32
    +關注

    關注

    2266

    文章

    10872

    瀏覽量

    354830
  • 串口
    +關注

    關注

    14

    文章

    1543

    瀏覽量

    76199

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

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    時鐘對于單片機重要性

    時鐘對于單片機來說是非常重要的,它為單片機工作提供一個穩定的機器周期從而使系統能夠正常運行。時鐘系統猶如人的心臟,一旦有問題整個系統就崩潰。我們知道STM32屬于高級單片機,其內部有很
    發表于 08-12 06:18

    時鐘的重要性

    運行執行指令,才能夠做其他的處理 (點燈,串口,ADC),時鐘的重要性不言而喻。為什么stm32需要多個時鐘源?STM32本身十分復雜,外設非常多但我們實際使用的時候只會用到有限的幾個外設,使用任何外設
    發表于 08-13 07:31

    單片機中斷的重要性

    單片機中斷有什么作用打個比方,你房間看書,看書這個事是持久的,拖延幾分鐘也沒事。突然淘寶買的衣服送到了,鏢局的人敲門,你用書簽做好標記去開門。拿回衣服,回去繼續看書。這個事的發生過程很正常。同樣
    發表于 11-26 07:34

    單片機精確計時的重要性

    的。小到手機,大到汽車飛機,現在幾乎只要是電子器件,就有單片機的身影。精確計時的重要性傳感器能夠感知外界環境,可以說是一切智能機器的基礎。實際工程,常常使用單片機或者控制傳感器工作,
    發表于 12-07 13:18

    led單片機應用重要性

    很多初學者覺得自己學的東西很基礎,擔心今后實際工作用不到。有初學者問了這樣的問題:單片機真正開發產品和學習的時候有什么差別,平時學的LED、ADC這些東西,實際項目中會用到嗎?雖然技術更...
    發表于 02-23 07:09

    單片機程序架構之時間輪片法程序架構重要性解析

    單片機程序架構—時間輪片法程序架構重要性很多人尤其是初學者寫代碼的時候往往都是想一點寫一點,最開始沒有一個整體的規劃,導致后面代碼越寫越亂,bug不斷。最終代碼跑起來看似沒有問題(有可能也真的
    發表于 02-24 06:52

    什么是單片機串口通信?

    串口通信是單片機一個重要的部分,單片機和PC,單片機單片機之間的通信大都用
    發表于 07-25 07:36 ?6.1w次閱讀
    什么是<b class='flag-5'>單片機</b>的<b class='flag-5'>串口</b>通信?

    壓敏電阻電源電路的應用及重要性綜述

    壓敏電阻電源電路的應用及重要性綜述
    發表于 05-25 11:33 ?13次下載

    怎樣去設置單片機串口的工作模式

    單片機串口有四種工作模式。
    的頭像 發表于 10-17 16:04 ?5411次閱讀

    單片機串口實驗 串口介紹 串口原理

    文章目錄1 串口的硬件初步認識2 中間橋梁芯片硬件電路3 電腦如何識別 中間橋梁芯片4 串口調試助手5 為什么需要CH340模塊6 CH340模塊可以換成別的嗎7 單片機開發版設計理念18
    發表于 11-10 20:20 ?16次下載
    <b class='flag-5'>單片機</b>的<b class='flag-5'>串口</b>實驗 <b class='flag-5'>串口</b>介紹 <b class='flag-5'>串口</b>原理

    51單片機串口通信

    51單片機串口通信文章目錄51單片機串口通信串口介紹硬件電路電平標準常見通信接口比較相關術語51單片機
    發表于 11-18 14:06 ?22次下載
    51<b class='flag-5'>單片機</b><b class='flag-5'>串口</b>通信

    51單片機串口通信

    51單片機串口通信文章目錄51單片機串口通信串口介紹硬件電路電平標準常見通信接口比較相關術語51單片機
    發表于 11-21 20:36 ?62次下載
    51<b class='flag-5'>單片機</b><b class='flag-5'>串口</b>通信

    串口傳輸(51單片機版)

    串口傳輸51單片機里是非常重要的一點,這常常是中斷、計數器后面學習,因為不可避免的需要用到中斷。51
    發表于 11-23 16:20 ?0次下載
    <b class='flag-5'>串口</b>傳輸(51<b class='flag-5'>單片機</b>版)

    單片機項目中LED的重要性

    單片機項目中LED的重要性
    的頭像 發表于 09-18 16:19 ?867次閱讀
    <b class='flag-5'>單片機</b>項目中LED的<b class='flag-5'>重要性</b>

    ?51單片機串口通信詳細介紹-小白必看

    51單片機串口通信是單片機與外部設備通信的重要方式,它基于串行通信的原理,以字節為單位進行數據傳輸。51
    的頭像 發表于 04-17 09:33 ?1862次閱讀
    ?51<b class='flag-5'>單片機</b><b class='flag-5'>串口</b>通信詳細介紹-小白必看