日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

使用UART IDLE中斷接收不定長(zhǎng)數(shù)據(jù)

jf_pJlTbmA9 ? 來(lái)源:jf_pJlTbmA9 ? 作者:jf_pJlTbmA9 ? 2023-09-18 15:41 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

在串口通信過(guò)程中,我們常常用到接受和發(fā)送中斷,相信大家都不陌生。這里還有另一個(gè)非常有用的中斷可能被大家所忽略,即總線空閑狀態(tài)IDLE中斷。當(dāng)一幀數(shù)據(jù)傳輸結(jié)束之后,總線會(huì)維持高電平空閑,此時(shí)會(huì)觸發(fā)MCU的IDLE中斷。在本文中,將介紹使用該中斷來(lái)進(jìn)行不定長(zhǎng)串口數(shù)據(jù)接收的辦法。通過(guò)該中斷,可以省卻用于檢測(cè)數(shù)據(jù)傳輸是否完成的判斷操作。

實(shí)驗(yàn)環(huán)境

· STM32F411RE-NUCLEO

· STM32CubeMX

總線狀態(tài)分析

下圖是發(fā)送0xAA 0x55的所抓取到的波形。從圖中我們可以看到在發(fā)送該幀之前和之后,總線時(shí)鐘處于IDLE狀態(tài)。在該幀中,字節(jié)與字節(jié)之間,沒(méi)有IDLE狀態(tài)出現(xiàn),即不會(huì)出現(xiàn)IDLE誤觸發(fā)的情況。

pYYBAGIB2ruAK7asAAAJ1iXmiBY719.png

不定長(zhǎng)數(shù)據(jù)接收

本次制作的工程是基于HAL庫(kù)的。在原生的HAL庫(kù)中,并沒(méi)有集成IDLE中斷的處理。所以,在本文我們介紹的方法中,需要修改一些庫(kù)文件來(lái)實(shí)現(xiàn)。

使用 STM32CubeMX 生成實(shí)驗(yàn)工程

工程的配置如下圖:

1. 系統(tǒng)始終配置為100MHz

2. 配置USART2為Asynchrones,管腳配置為PA2,PA3。

3. USART2參數(shù):9600Bits/s, 8bits, None,1Stop

poYBAGIB2ryAKS5xAADTPWjcfpA532.png

pYYBAGIB2r6AIsXyAACHbK8PFR4493.png

poYBAGIB2r-AZXcsAADD6STAHOc650.png

為了方便打印接收到的相關(guān)信息,需要對(duì)生成的工程做如下修改來(lái)映射print函數(shù)。

main.c-聲明

pYYBAGIB2sCAQo9RAAAQTYVDia4196.png

main.c-Code

poYBAGIB2sGAEYnOAAAXTk9Q6ZY189.png

修改工程代碼

增加接收Buffer

main.c

poYBAGIB2sKASZIAAAAJ_8lvAmw882.png

stm32f4xx_hal_uart.c

pYYBAGIB2sSAfq5UAAAE4CWSJUM525.png

在接收函數(shù)中使能IDLE中斷

stm32f4xx_hal_uart.c -> HAL_UART_Receive_DMA()函數(shù)

pYYBAGIB2sWAB1BGAAAIVE8Qk5Q721.png

處理IDLE中斷

stm32f4xx_hal_uart.c -> HAL_UART_IRQHandler ()函數(shù)

pYYBAGIB2saAMhvDAAAYwDy1wgA338.png

接收完成處理(IDLE產(chǎn)生,一幀數(shù)據(jù)傳輸完成)

stm32f4xx_hal_uart.c -> HAL_UART_AbortReceive_IT ()函數(shù)

poYBAGIB2seASNN2AAAM7-VWD_U560.png

main.c

pYYBAGIB2siAFAo3AAAjfA7rieg785.png

使能接收

main.c

poYBAGIB2sqAEIhJAAALZw_Zw64305.png

實(shí)驗(yàn)結(jié)果

使用串口調(diào)試,通過(guò)STLINK的虛擬串口發(fā)送數(shù)據(jù),MCU會(huì)返回接收多少個(gè)字節(jié)的數(shù)據(jù),并將接收到的數(shù)據(jù)打印出來(lái)。下圖是發(fā)送0xAA 0x55的實(shí)驗(yàn)結(jié)果。

poYBAGIB2suAKSwGAAAsSMEe1ec074.png

小結(jié)

合理使用串口總線空閑狀態(tài)中斷,在接收那些數(shù)據(jù)量不確定的場(chǎng)合會(huì)非常方便,同時(shí)也能很好地優(yōu)化代碼設(shè)計(jì)。

審核編輯:彭菁

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

    關(guān)注

    147

    文章

    19160

    瀏覽量

    404831
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7349

    瀏覽量

    95057
  • 參數(shù)
    +關(guān)注

    關(guān)注

    11

    文章

    1870

    瀏覽量

    34044
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1322

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    FreeRTOS串口中斷接收不定長(zhǎng)數(shù)據(jù)與二值信號(hào)量的使用

    FreeRTOS例程,使用串口中斷接收不定長(zhǎng)數(shù)據(jù),以及二值信號(hào)量的使用
    的頭像 發(fā)表于 09-26 09:02 ?6432次閱讀
    FreeRTOS串口<b class='flag-5'>中斷</b><b class='flag-5'>接收</b><b class='flag-5'>不定長(zhǎng)</b>的<b class='flag-5'>數(shù)據(jù)</b>與二值信號(hào)量的使用

    請(qǐng)問(wèn)如何用uart使用udma接收不定長(zhǎng)數(shù)據(jù)的方法?

    目前在做的一個(gè)項(xiàng)目會(huì)用uart接收移動(dòng)模塊的數(shù)據(jù),為了提高效率想使用uart配合udma收發(fā)數(shù)據(jù),但是
    發(fā)表于 08-17 07:48

    stm32fo72用IDLE接收不定長(zhǎng)數(shù)據(jù)

    求助??stm32fo72用IDLE接收不定長(zhǎng)數(shù)據(jù),
    發(fā)表于 08-18 06:48

    STM32單片機(jī)的接收不定長(zhǎng)度字節(jié)數(shù)據(jù)的方法

    STM32串口使用IDLE中斷接收不定長(zhǎng)數(shù)據(jù)原理與源程序轉(zhuǎn)載 2016年07月16日 18:20:24原文來(lái)自 今天說(shuō)一下STM32單片機(jī)的
    發(fā)表于 08-04 09:05

    不定長(zhǎng)數(shù)據(jù)接收的原理IDLE空閑中斷介紹

    (STM32Cube MCU Package for STM32F1xx Series)本文內(nèi)容:不定長(zhǎng)數(shù)據(jù)接收的原理IDLE空閑中斷介紹串
    發(fā)表于 08-16 07:42

    如何利用IDLE中斷進(jìn)行串口不定長(zhǎng)數(shù)據(jù)接收

    利用IDLE中斷進(jìn)行串口不定長(zhǎng)數(shù)據(jù)接收有何優(yōu)勢(shì)?如何利用IDLE
    發(fā)表于 12-08 07:04

    STM32單片機(jī)是如何利用IDLE中斷接收不定長(zhǎng)字節(jié)數(shù)據(jù)

    IDLE中斷什么時(shí)候發(fā)生?如何配置好IDLE中斷?STM32單片機(jī)是如何利用IDLE中斷
    發(fā)表于 12-09 07:02

    UART是如何使用IDLE中斷去接收不定長(zhǎng)度數(shù)據(jù)

    UART是什么?UART是如何使用IDLE中斷去接收不定長(zhǎng)度數(shù)據(jù)的?
    發(fā)表于 12-10 07:43

    利用STM32單片機(jī)的IDLE空閑中斷接收不定長(zhǎng)數(shù)據(jù)

    定長(zhǎng)數(shù)據(jù),無(wú)法穩(wěn)定接收不定長(zhǎng)數(shù)據(jù),本章介紹利用STM32單片機(jī)的IDLE空閑
    發(fā)表于 12-13 06:46

    求分享STM32_H750串口接收不定長(zhǎng)數(shù)據(jù)及初始化進(jìn)入idle中斷的解決方法

    求分享STM32_H750串口接收不定長(zhǎng)數(shù)據(jù)及初始化進(jìn)入idle中斷的解決方法
    發(fā)表于 12-16 07:40

    uart pdma方式接收不定長(zhǎng)數(shù)據(jù)如何解決?

    目前測(cè)試過(guò)用uart接收超時(shí)中斷在pdma方式接收時(shí)不起作用,那么有其他方式來(lái)解決接收不定長(zhǎng)
    發(fā)表于 08-23 08:25

    STM32CubeMX HAL庫(kù)串口+DMA+IDLE空閑中斷不定長(zhǎng)度數(shù)據(jù)接收和發(fā)送

    (STM32Cube MCU Package for STM32F1xx Series)本文內(nèi)容:不定長(zhǎng)數(shù)據(jù)接收的原理IDLE空閑中斷介紹串
    發(fā)表于 12-07 11:36 ?25次下載
    STM32CubeMX HAL庫(kù)串口+DMA+<b class='flag-5'>IDLE</b>空閑<b class='flag-5'>中斷</b><b class='flag-5'>不定長(zhǎng)度數(shù)據(jù)</b><b class='flag-5'>接收</b>和發(fā)送

    STM32之串口DMA接收不定長(zhǎng)數(shù)據(jù)

    使用stm32或者其他單片機(jī)的時(shí)候,會(huì)經(jīng)常使用到串口通訊,那么如何有效地接收數(shù)據(jù)呢?假如這段數(shù)據(jù)不定長(zhǎng)的有如何高效接收呢?同學(xué)A:
    發(fā)表于 12-24 19:03 ?30次下載
    STM32之串口DMA<b class='flag-5'>接收</b><b class='flag-5'>不定長(zhǎng)</b><b class='flag-5'>數(shù)據(jù)</b>

    使用UART IDLE中斷接收不定長(zhǎng)數(shù)據(jù)

    在本文中,將介紹使用該中斷來(lái)進(jìn)行不定長(zhǎng)串口數(shù)據(jù)接收的辦法。通過(guò)該中斷,可以省卻用于檢測(cè)數(shù)據(jù)傳輸是
    發(fā)表于 02-08 15:29 ?6次下載
    使用<b class='flag-5'>UART</b> <b class='flag-5'>IDLE</b><b class='flag-5'>中斷</b><b class='flag-5'>接收</b><b class='flag-5'>不定長(zhǎng)</b><b class='flag-5'>數(shù)據(jù)</b>

    STM32CubeMX之串口接收不定長(zhǎng)數(shù)據(jù)

    基本串口通信通常只能接收定長(zhǎng)數(shù)據(jù),無(wú)法穩(wěn)定接收不定長(zhǎng)數(shù)據(jù),本章介紹利用STM32單片機(jī)的
    的頭像 發(fā)表于 05-11 09:59 ?5178次閱讀
    STM32CubeMX之串口<b class='flag-5'>接收</b><b class='flag-5'>不定長(zhǎng)</b><b class='flag-5'>數(shù)據(jù)</b>
    江油市| 叶城县| 石楼县| 江安县| 奎屯市| 竹溪县| 屏山县| 佛教| 响水县| 抚顺县| 景东| 当涂县| 凉城县| 日照市| 阳高县| 罗田县| 吴堡县| 清水河县| 丘北县| 安新县| 寿宁县| 石嘴山市| 昌江| 太白县| 砚山县| 海原县| 北辰区| 金川县| 池州市| 宁化县| 安泽县| 平昌县| 抚宁县| 德阳市| 包头市| 衡阳市| 翁源县| 遂平县| 海伦市| 靖远县| 米泉市|