国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

串口如何接收數(shù)據(jù) STM32串口接收數(shù)據(jù)

冬至子 ? 來源:紛紜雜談 ? 作者:CY_CHEN ? 2023-07-21 17:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

圖片

圖片

根據(jù)寄存器配置中斷

//設置中斷
  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中斷

圖片

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

中斷函數(shù)

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


void USART1_IRQHandler()
{
  static u16 cnt = 0;

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

主函數(shù)

#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)//判斷接收到的數(shù)據(jù)
        Usart1_SendStr("Hi!rn"); 
      else 
        Usart1_SendStr("What do you say?rn");
    }
  }
}

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

圖片

圖片

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

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

    關注

    68

    文章

    20255

    瀏覽量

    252413
  • STM32
    +關注

    關注

    2310

    文章

    11162

    瀏覽量

    373513
  • 數(shù)據(jù)寄存器

    關注

    0

    文章

    33

    瀏覽量

    8242
  • 串口中斷
    +關注

    關注

    0

    文章

    67

    瀏覽量

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

    關注

    0

    文章

    39

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

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

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

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

    STM32串口是如何去實現(xiàn)數(shù)據(jù)發(fā)送與接收

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

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

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

    labview串口接收數(shù)據(jù)_labview串口被動接收數(shù)據(jù)

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

    STM32串口接收陀螺儀數(shù)據(jù)-2016-04-15

    stm32f103串口接收MPU6050數(shù)據(jù)
    發(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'>數(shù)據(jù)</b>-2016-04-15

    STM32串口通信數(shù)據(jù)亂碼的相關問題

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

    STM32串口接收不定長數(shù)據(jù)的程序免費下載

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

    stm32 串口接收不定長度數(shù)據(jù)及黏包處理 + 串口DMA接收

    ,那么stm32串口是如何實現(xiàn)接收不定長度數(shù)據(jù)的呢? 串口接收
    發(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'>數(shù)據(jù)</b>及黏包處理 + <b class='flag-5'>串口</b>DMA<b class='flag-5'>接收</b>

    stm32串口DMA數(shù)據(jù)接收不完整問題說明

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

    關于STM32串口3的使用,接收并解析一幀數(shù)據(jù)

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

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

    STM32串口數(shù)據(jù)接收 --環(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'>數(shù)據(jù)</b><b class='flag-5'>接收</b> --環(huán)形緩沖區(qū)

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

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

    stm32虛擬串口接收數(shù)據(jù)處理

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