欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

3天內不再提示

串口如何接收數據 STM32串口接收數據

冬至子 ? 來源:紛紜雜談 ? 作者:CY_CHEN ? 2023-07-21 17:07 ? 次閱讀

如果采用查詢接收方式接受串口數據,就會造成接收不及時,還沒接收完數據,下一個數據就發(fā)過來了,就會把上一個數據覆蓋了,造成數據丟失。所以可以通過中斷去接收數據,開啟接收中斷。而發(fā)送數據,是我們自己決定的,只要調用函數就可以了,不需要開啟中斷。

要串口接收數據,需要在昨天串口發(fā)送數據的基礎上,再設置中斷接收函數。接收數據的中斷時間有準備好讀取接收到的數據、檢測到空閑線路,事件標志分別為RXNE、IDLE。對應狀態(tài)寄存器(USART_SR)的位5和位4。相應的使能控制位RXNEIE、IDLEIE在控制寄存器 1 (USART_CR1)的位5和位4。

圖片

圖片

根據寄存器配置中斷

//設置中斷
  USART1- >SR       =    0;                    //清中斷標志
  //外設中斷
  USART1- >CR1      |=    1< 5;                  //開接收中斷
  USART1- >CR1      |=    1< 4;                  //開空閑中斷
  //nvic
  prigroup = NVIC_GetPriorityGrouping();        //得到優(yōu)先級分組
  priority = NVIC_EncodePriority(prigroup,1,2);  //優(yōu)先級編碼
  NVIC_SetPriority(USART1_IRQn,priority);        //設置中斷優(yōu)先級
//    //
//  NVIC- >ISER[EXTI2_IRQn/32] = 1< 
  NVIC_EnableIRQ(USART1_IRQn);                  //使能USART1中斷

圖片

接著就是中斷函數來接收并處理得到的數據。需要標志判斷是否進入接收中斷,還要設置一個一定長度的數組保存數據寄存器的數據。

中斷函數

u8 Usart1_buf[USART1_BUF_SIZE] = {0};      //定義數組保存數據
u8 Usart1_OK = 0;                          //接收數據標志位


void USART1_IRQHandler()
{
  static u16 cnt = 0;

  if((USART1- >SR & (1< 5)) != 0)              //接收中斷
  {
    Usart1_buf[cnt] = USART1- >DR;              //把數據寄存器的值保存到數組中
    cnt++;
    if(cnt == USART1_BUF_SIZE - 1)            //判斷數組是否裝滿
    {
      Usart1_buf[cnt] = '?';
      Usart1_OK = 1;                          //接收數據標志
      cnt = 0;
    }
  }
  else if((USART1- >SR & (1< 4)) != 0)          //空閑中斷
  {
    Usart1_buf[cnt]  = '?';
    Usart1_OK = 1;                            //接收數據標志
    cnt = 0;
  }
  else
    USART1- >SR = 0;
}

主函數

#include "stm32f4xx.h"
#include "usart.h"
#include "stdio.h"
#include "string.h"


int main()
{
  Usart1_Init(9600);

  while(1)
  {
    if(Usart1_OK == 1)
    {
      Usart1_OK = 0;
      if(strcmp((const char *)Usart1_buf,"Hello!") == 0)//判斷接收到的數據
        Usart1_SendStr("Hi!rn"); 
      else 
        Usart1_SendStr("What do you say?rn");
    }
  }
}

在昨天發(fā)送程序的基礎上,再加上以上程序,就可以進行中斷接收數據了。其中string.h頭文件中,有很多函數可以處理字符串,可以用來方便地處理串口接收的數據。

圖片

圖片

最后編譯完燒入程序,從串口發(fā)送數據到STM32,達到預期效果,串口中斷接收就成功了。

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

    關注

    68

    文章

    19435

    瀏覽量

    231306
  • STM32
    +關注

    關注

    2273

    文章

    10926

    瀏覽量

    357767
  • 數據寄存器
    +關注

    關注

    0

    文章

    33

    瀏覽量

    7799
  • 串口中斷
    +關注

    關注

    0

    文章

    67

    瀏覽量

    14019
  • 狀態(tài)寄存器

    關注

    0

    文章

    39

    瀏覽量

    7154
收藏 人收藏

    評論

    相關推薦

    STM32串口發(fā)送數據接收數據方式總結

    STM32串口發(fā)送數據接收數據方式總結
    的頭像 發(fā)表于 09-19 09:14 ?7951次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>發(fā)送<b class='flag-5'>數據</b>和<b class='flag-5'>接收</b><b class='flag-5'>數據</b>方式總結

    STM32串口發(fā)送數據接收數據方式

    STM32串口發(fā)送數據接收數據方式總結!
    發(fā)表于 01-25 06:54

    STM32串口發(fā)送數據接收數據的方式有哪些?

    STM32串口發(fā)送數據接收數據的方式有哪些?
    發(fā)表于 12-02 07:15

    STM32串口是如何去實現數據發(fā)送與接收

    什么是串口復位呢?STM32串口是如何去實現數據發(fā)送與接收的?
    發(fā)表于 12-10 06:16

    STM32串口發(fā)送數據接收數據淺析

    STM32串口發(fā)送數據最直接的方式是什么呢?STM32串口接收
    發(fā)表于 02-18 06:09

    labview串口接收數據_labview串口被動接收數據

    字節(jié)的數據。最后,用一個狀態(tài)機來實現相鄰兩個字符的判斷。如果串口在相鄰兩個字符之間接收時間大于50ms,則判斷為兩個獨立的字符
    發(fā)表于 01-15 15:49 ?6.7w次閱讀
    labview<b class='flag-5'>串口</b><b class='flag-5'>接收</b><b class='flag-5'>數據</b>_labview<b class='flag-5'>串口</b>被動<b class='flag-5'>接收</b><b class='flag-5'>數據</b>

    STM32串口接收陀螺儀數據-2016-04-15

    stm32f103串口接收MPU6050數據
    發(fā)表于 05-23 10:24 ?21次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>接收</b>陀螺儀<b class='flag-5'>數據</b>-2016-04-15

    STM32串口通信數據亂碼的相關問題

    STM32串口通信以及溫度采集搞定,其中主要遇到STM32系列單片機時鐘樹的問題,串口通信遇到串口調試助手能夠
    發(fā)表于 06-22 08:01 ?1.2w次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>通信<b class='flag-5'>數據</b>亂碼的相關問題

    STM32串口接收不定長數據的程序免費下載

    本文檔的主要內容詳細介紹的是STM32串口接收不定長數據的程序免費下載。
    發(fā)表于 08-26 08:00 ?62次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>接收</b>不定長<b class='flag-5'>數據</b>的程序免費下載

    stm32 串口接收不定長度數據及黏包處理 + 串口DMA接收

    ,那么stm32串口是如何實現接收不定長度數據的呢? 串口接收
    發(fā)表于 12-23 19:09 ?27次下載
    <b class='flag-5'>stm32</b> <b class='flag-5'>串口</b><b class='flag-5'>接收</b>不定長度<b class='flag-5'>數據</b>及黏包處理 + <b class='flag-5'>串口</b>DMA<b class='flag-5'>接收</b>

    stm32串口DMA數據接收不完整問題說明

    stm32串口DMA數據接收不完整問題說明最近做了一個項目需要用串口接收模塊端的應答
    發(fā)表于 12-24 19:37 ?21次下載
    <b class='flag-5'>stm32</b><b class='flag-5'>串口</b>DMA<b class='flag-5'>數據</b><b class='flag-5'>接收</b>不完整問題說明

    關于STM32串口3的使用,接收并解析一幀數據

    關于STM32串口3的使用,接收并解析一幀數據stm32串口1被使用時,我們可以使用其他
    發(fā)表于 12-28 19:15 ?40次下載
    關于<b class='flag-5'>STM32</b><b class='flag-5'>串口</b>3的使用,<b class='flag-5'>接收</b>并解析一幀<b class='flag-5'>數據</b>

    STM32串口數據接收 --環(huán)形緩沖區(qū)

    STM32串口數據接收 --環(huán)形緩沖區(qū)環(huán)形緩沖區(qū)簡介??在單片機中串口通信是我們使用最頻繁的,使用串口
    發(fā)表于 12-28 19:24 ?31次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>數據</b><b class='flag-5'>接收</b> --環(huán)形緩沖區(qū)

    STM32串口中斷接收不定長報文介紹

    本項目中,需要使用STM32的USART6串口與FPGA板(下位機)通信,需要發(fā)送和接收數據,有報文應答機制。
    的頭像 發(fā)表于 10-26 11:01 ?1230次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>中斷<b class='flag-5'>接收</b>不定長報文介紹

    stm32虛擬串口接收數據處理

    STM32中使用虛擬串口時,我們需要處理接收數據。接收到的數據可能是來自其他設備的傳感器
    的頭像 發(fā)表于 12-20 11:22 ?2464次閱讀