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

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

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

3天內不再提示

串口調試助手如何將數據發送至STM32

貿澤電子設計圈 ? 來源:互聯網 ? 作者:佚名 ? 2017-09-26 14:41 ? 次閱讀
本例程通過PC機的串口調試助手將數據發送至STM32,接收數據后將所接收的數據又發送至PC機,具體下面詳談。。。

實例一:

void USART1_IRQHandler(u8 GetData){u8 BackData;if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //中斷產生{USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中斷標志.GetData = UART1_GetByte(BackData); //也行GetData=USART1->DR;USART1_SendByte(GetData); //發送數據GPIO_SetBits(GPIOE, GPIO_Pin_8 ); //LED閃爍,接收成功發送完成delay(1000);GPIO_ResetBits(GPIOE, GPIO_Pin_8 );}}

這是最基本的,將數據接收完成后又發送出去,接收和發送在中斷函數里執行,main函數里無其他要處理的。

優點:簡單,適合很少量數據傳輸。

缺點:無緩存區,并且對數據的正確性沒有判斷,數據量稍大可能導致數據丟失 。

實例二:

void USART2_IRQHandler(){if(USART_GetITStatus(USART2,USART_IT_RXNE) != RESET) //中斷產生{USART_ClearITPendingBit(USART2,USART_IT_RXNE); //清除中斷標志Uart2_Buffer[Uart2_Rx_Num] = USART_ReceiveData(USART2);Uart2_Rx_Num++;}

if((Uart2_Buffer[0] == 0x5A)&&(Uart2_Buffer[Uart2_Rx_Num-1] == 0xA5)) //判斷最后接收的數據是否為設定值,確定數據正確性Uart2_Sta=1;

if(USART_GetFlagStatus(USART2,USART_FLAG_ORE) == SET) //溢出{USART_ClearFlag(USART2,USART_FLAG_ORE); //讀SRUSART_ReceiveData(USART2); //讀DR}}

if( Uart2_Sta ){for(Uart2_Tx_Num=0;Uart2_Tx_Num USART2_SendByte(Uart2_Buffer[Uart2_Tx_Num]); //發送數據Uart2_Rx_Num = 0; //初始化Uart2_Tx_Num = 0;Uart2_Sta = 0;}

這是加了數據頭和數據尾的接收方式,數據頭和尾的個數可增加,此處只用于調試之用。中斷函數用于接收數據以及判斷數據的頭尾,第二個函數在main函數里按照查詢方式執行。

優點:較簡單,采用緩存區接收,對提高數據的正確行有一定的改善 。

缺點:要是第一次數據接收錯誤,回不到初始化狀態,必須復位操作 。

實例三:

void USART2_IRQHandler(){if(USART_GetITStatus(USART2,USART_IT_RXNE) != RESET) //中斷產生{USART_ClearITPendingBit(USART2,USART_IT_RXNE); //清除中斷標志.Uart2_Buffer[Uart2_Rx] = USART_ReceiveData(USART2);Uart2_Rx++;Uart2_Rx &= 0x3F; //判斷是否計數到最大}if(USART_GetFlagStatus(USART2,USART_FLAG_ORE) == SET) //溢出{USART_ClearFlag(USART2,USART_FLAG_ORE); //讀SRUSART_ReceiveData(USART2); //讀DR}}if( Uart2_Tx != Uart2_Rx ){USART2_SendByte(Uart2_Buffer[Uart2_Tx]); //發送數據Uart2_Tx++;Uart2_Tx &= 0x3F; //判斷是否計數到最大}

采用FIFO方式接收數據,由0x3F可知此處最大接收量為64個,可變,中斷函數只負責收,另一函數在main函數里執行,FIFO方式發送。

優點:發送和接收都很自由,中斷占用時間少,有利于MCU處理其它。

缺點:對數據的正確性沒有判斷,一概全部接收。

實例四:

void USART2_IRQHandler(){if(USART_GetITStatus(USART2,USART_IT_RXNE) != RESET) //中斷產生{USART_ClearITPendingBit(USART2,USART_IT_RXNE); //清除中斷標志Uart2_Buffer[Uart2_Rx] = USART_ReceiveData(USART2);Uart2_Rx++;Uart2_Rx &= 0xFF;}if(Uart2_Buffer[Uart2_Rx-1] == 0x5A) //頭Uart2_Tx = Uart2_Rx-1;if((Uart2_Buffer[Uart2_Tx] == 0x5A)&&(Uart2_Buffer[Uart2_Rx-1] == 0xA5)) //檢測到頭的情況下檢測到尾{Uart2_Len = Uart2_Rx-1- Uart2_Tx; //長度Uart2_Sta=1; //標志位}if(USART_GetFlagStatus(USART2,USART_FLAG_ORE) == SET) //溢出{USART_ClearFlag(USART2,USART_FLAG_ORE); //讀SRUSART_ReceiveData(USART2); //讀DR}}if( Uart2_Sta ){for(tx2=0;tx2 <= Uart2_Len;tx2++,Uart2_Tx++)USART2_SendByte(Uart2_Buffer[Uart2_Tx]); //發送數據Uart2_Rx = 0; //初始化Uart2_Tx = 0;Uart2_Sta = 0;}

數據采用數據包的形式接收,接收后存放于緩存區,通過判斷數據頭和數據尾(可變)來判斷數據的“包”及有效性,中斷函數用于接收數據和判斷頭尾以及數據包長度,另一函數在main函數里執行,負責發送該段數據。

優點:適合打包傳輸,穩定性和可靠性很有保證,可隨意發送,自動挑選有效數據。

缺點:緩存區數據長度要根據“包裹”長度設定, 要是多次接收后無頭無尾,到有頭有尾的那一段數據恰好跨越緩存區最前和最后位置時,可能導致本次數據丟失,不過這種情況幾乎沒有可能。

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

    關注

    48

    文章

    1005

    瀏覽量

    103205
  • STM32
    +關注

    關注

    2266

    文章

    10876

    瀏覽量

    354925

原文標題:今天,你Get了嗎?STM32串口接收數據的幾種不同方式

文章出處:【微信號:Mouser-Community,微信公眾號:貿澤電子設計圈】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    串口調試助手中發送圖片并接收問題

    請教一下大神,我們用某串口調試助手發送JPG格式圖片,串口調試
    發表于 06-03 23:46

    如何通過PC機的串口調試助手數據發送至STM32

    如何通過PC機的串口調試助手數據發送至STM32
    發表于 12-09 07:05

    PC機的串口調試助手STM32是如何進行數據收發的

    怎樣通過PC機的串口調試助手數據發送至STM32
    發表于 12-09 07:17

    如何通過PC機的串口調試助手數據發送至STM32

    如何通過PC機的串口調試助手數據發送至STM32
    發表于 12-13 07:26

    STM32采集溫濕度是怎樣通過串口發送至AIR800的呢

    STM32采集溫濕度是怎樣通過串口發送至AIR800的呢?怎樣通過nrf24l01實現點對點通信呢?
    發表于 12-17 07:03

    stm32串口接收數據的幾個方式

    stm32串口接收數據的幾個方式本例程通過PC機的串口調試助手
    發表于 01-26 06:56

    怎樣使用RXTXxcomm信息通過串口方式發送至單片機上呢

    怎樣使用RXTXxcomm信息通過串口方式發送至單片機上呢?發送過程中有何問題?怎樣去解決呢?
    發表于 02-14 06:49

    串口調試助手_Android版

    常用的串口調試助手,方便進行串口數據顯示,
    發表于 11-19 15:27 ?0次下載

    串口調試助手2.1

    串口調試助手用于串口數據收發,可用16進制發送和接收。
    發表于 04-28 16:30 ?50次下載

    串口調試助手怎么用_串口調試助手使用方法

    串口是嵌入式開發和單片機開發中不可缺少的外設設備,通用也要運用于整個平臺。所以如何利用串口調試助手是十分重要的,接下來為大家介紹下如何使用串口
    發表于 11-28 16:22 ?7.2w次閱讀
    <b class='flag-5'>串口</b><b class='flag-5'>調試</b><b class='flag-5'>助手</b>怎么用_<b class='flag-5'>串口</b><b class='flag-5'>調試</b><b class='flag-5'>助手</b>使用方法

    基于STM32串口DMA發送

    使用STM32串口進行DMA發送(Noraml模式),在某個任務中連續調用兩次發送函數log_printf(),但是發回的數據
    發表于 06-08 08:13 ?2.2w次閱讀
    基于<b class='flag-5'>STM32</b>的<b class='flag-5'>串口</b>DMA<b class='flag-5'>發送</b>

    通過PC機的串口調試助手數據發送至STM32資料下載

    電子發燒友網為你提供通過PC機的串口調試助手數據發送至ST
    發表于 04-10 08:50 ?29次下載
    通過PC機的<b class='flag-5'>串口</b><b class='flag-5'>調試</b><b class='flag-5'>助手</b><b class='flag-5'>將</b><b class='flag-5'>數據</b><b class='flag-5'>發送至</b><b class='flag-5'>STM32</b>資料下載

    STM32STM32CUBEMX+UART串口調試,循環接受發送數據

    STM32CUBEMX+UART串口調試,循環接受發送數據芯片型號:STM32F411VET6工
    發表于 12-27 18:33 ?4次下載
    【<b class='flag-5'>STM32</b>】<b class='flag-5'>STM32</b>CUBEMX+UART<b class='flag-5'>串口</b><b class='flag-5'>調試</b>,循環接受<b class='flag-5'>發送</b><b class='flag-5'>數據</b>

    串口調試助手免費下載

    一個非常好用的串口調試助手,可以多條命令同時發送
    發表于 07-05 15:31 ?14次下載

    QT 串口示波器的串口調試助手功能

    串口調試助手功能: 支持傳統的串口調試助手的基本收發功能,同時可以刷新大量的
    發表于 07-07 15:26 ?2688次閱讀