一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

教你們STM32如何收發(fā)float類型數(shù)據(jù)

FPGA之家 ? 來源:開源博客 ? 作者:學(xué)以解憂 ? 2021-04-09 16:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

實際應(yīng)用中,我們可能需要兩個設(shè)備通過串口傳輸浮點數(shù)據(jù):

fedd4e54-990e-11eb-8b86-12bb97331649.png

本篇筆記為了方便演示,使用串口助手模擬其中一個設(shè)備,本篇筆記內(nèi)容如下:

02044fa6-990f-11eb-8b86-12bb97331649.png

我們創(chuàng)建一個用于管理float類型數(shù)據(jù)的共用體:

unionfloat_data { floatf_data; uint8_tbyte[4]; };

數(shù)據(jù)的流向如:

02316d10-990f-11eb-8b86-12bb97331649.png

本次使用串口助手模擬發(fā)送設(shè)備,省略了第一步,主要看第②、③步。

創(chuàng)建兩個共用體變量,用于發(fā)送與接收:

unionfloat_datarx_float_data,tx_float_data;

收發(fā)相關(guān)代碼:

左右滑動查看全部代碼>>>

// if(HAL_UART_Receive(&huart3,rx_float_data.byte,4,1000)==HAL_OK) { printf("rx_float_data.byte[0]=%.2x(addr:%#x) ",rx_float_data.byte[0],&rx_float_data.byte[0]); printf("rx_float_data.byte[1]=%.2x(addr:%#x) ",rx_float_data.byte[1],&rx_float_data.byte[1]); printf("rx_float_data.byte[2]=%.2x(addr:%#x) ",rx_float_data.byte[2],&rx_float_data.byte[2]); printf("rx_float_data.byte[3]=%.2x(addr:%#x) ",rx_float_data.byte[3],&rx_float_data.byte[3]); printf("rx_float_data.f_data=%f(addr:%#x) ",(float)rx_float_data.f_data,&rx_float_data.f_data); tx_float_data.f_data=rx_float_data.f_data+1.0f; printf("tx_float_data.f_data=%f ",tx_float_data.f_data); HAL_UART_Transmit(&huart3,tx_float_data.byte,4,1000); }

代碼很簡單,UART3接收到串口助手發(fā)送的float類型對應(yīng)的16進制數(shù)據(jù)存于rx_float_data.byte中,并打印輸出rx_float_data.byte的各個字節(jié),此時rx_float_data.f_data就是我們接收的浮點數(shù)據(jù),接收到的數(shù)據(jù)加上1.0后賦予tx_float_data.f_data再通過UART3把tx_float_data.byte發(fā)送出去。

運行結(jié)果:

029ca5da-990f-11eb-8b86-12bb97331649.png

這里以傳輸數(shù)據(jù)1.28為例,1.28對應(yīng)的十六進制數(shù)據(jù)是什么呢?

我們可以通過一些在線網(wǎng)站查看,比如

http://www.styb.cn/cms/ieee_754.php

02c9b12e-990f-11eb-8b86-12bb97331649.png

1.28對應(yīng)的十六進制為:3FA3D70A。因為STM32是小端模式,所以使用串口助手發(fā)送時需要進行一個逆序,即發(fā)送0AD7A33F。從實驗結(jié)果可以看到:

02edf03e-990f-11eb-8b86-12bb97331649.png

STM32收到1.28之后,加上1.0之后通過UART3發(fā)回上位機,2.28對應(yīng)4011EB85:

02fba01c-990f-11eb-8b86-12bb97331649.png

這里我們使用串口助手來模擬一個設(shè)備,所以需要查一下我們要發(fā)送的float數(shù)據(jù)對應(yīng)的十六進制數(shù)據(jù)。實際兩個設(shè)備之間做傳輸是不需要這么做的,想發(fā)什么就傳什么就可以:

032a68ac-990f-11eb-8b86-12bb97331649.png

編輯:jq

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

    關(guān)注

    15

    文章

    1586

    瀏覽量

    79562
  • STM
    STM
    +關(guān)注

    關(guān)注

    1

    文章

    557

    瀏覽量

    43100
  • float
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    7883

原文標(biāo)題:STM32如何收發(fā)float類型數(shù)據(jù)?

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

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

    IEC101協(xié)議可以傳輸什么類型數(shù)據(jù)

    IEC101協(xié)議作為電力系統(tǒng)遠(yuǎn)動通信的核心標(biāo)準(zhǔn),其核心能力在于支持多種類型數(shù)據(jù)的傳輸,滿足調(diào)度端與場站端(如變電站、發(fā)電廠)的實時監(jiān)控、控制及狀態(tài)感知需求。以下從數(shù)據(jù)類型、傳輸模式及典型應(yīng)用場景三個
    的頭像 發(fā)表于 05-21 11:37 ?162次閱讀

    STM32F103x8 STM32F103xB單片機數(shù)據(jù)手冊

    STM32F103x8STM32F103xB單片機數(shù)據(jù)手冊
    發(fā)表于 04-14 14:55 ?2次下載

    設(shè)計了一個基于浮點數(shù)運算的協(xié)處理器,使用C語言編程時沒法輸入float數(shù)據(jù),請問有哪些部分需要修改?

    我設(shè)計了一個基于浮點數(shù)運算的協(xié)處理器,使用C語言編程時沒法輸入float數(shù)據(jù),請問有哪些部分需要修改?SDK,EXU_decoder浮點寄存器都需要修改嗎,謝謝
    發(fā)表于 03-07 16:03

    IO-Link收發(fā)器怎么數(shù)據(jù)讀取

    扮演著關(guān)鍵角色,它們負(fù)責(zé)數(shù)據(jù)的發(fā)送和接收。本文將深入探討IO-Link收發(fā)器如何讀取數(shù)據(jù),包括其工作原理、硬件和軟件要求、數(shù)據(jù)類型及應(yīng)用場景等,為您提供一份詳盡的技術(shù)指南。
    的頭像 發(fā)表于 02-02 16:34 ?647次閱讀

    分布式云化數(shù)據(jù)庫有哪些類型

    分布式云化數(shù)據(jù)庫有哪些類型?分布式云化數(shù)據(jù)庫主要類型包括:關(guān)系型分布式數(shù)據(jù)庫、非關(guān)系型分布式數(shù)據(jù)
    的頭像 發(fā)表于 01-15 09:43 ?447次閱讀

    Air780E模組LuatOS開發(fā)實戰(zhàn) —— 手把手教你搞定數(shù)據(jù)打包解包

    本文要說的是低功耗4G模組Air780E的LuatOS開發(fā)實戰(zhàn),我將手把手教你搞定數(shù)據(jù)打包解包。
    的頭像 發(fā)表于 12-03 11:17 ?596次閱讀
    Air780E模組LuatOS開發(fā)實戰(zhàn) —— 手把手<b class='flag-5'>教你</b>搞定<b class='flag-5'>數(shù)據(jù)</b>打包解包

    請問TLV320AIC3106怎么轉(zhuǎn)換32位float數(shù)據(jù)

    TLV320AIC3106怎么轉(zhuǎn)換32位float數(shù)據(jù)?
    發(fā)表于 11-05 08:07

    如何設(shè)計一個射頻收發(fā)

    在上期的文章中,我們介紹了常見的射頻收發(fā)類型和相應(yīng)的應(yīng)用場景。那么如何才能設(shè)計一個性能優(yōu)異的射頻收發(fā)機呢? 系統(tǒng)架構(gòu) 射頻收發(fā)機設(shè)計的第一步是確定系統(tǒng)性能指標(biāo),各項指標(biāo)的需求將直接決
    發(fā)表于 09-20 15:08 ?686次閱讀
    如何設(shè)計一個射頻<b class='flag-5'>收發(fā)</b>機

    鴻蒙原生應(yīng)用元服務(wù)開發(fā)-倉頡基礎(chǔ)數(shù)據(jù)類型整數(shù)類型

    是整數(shù)類型或浮點類型。 % 的操作數(shù)只支持整數(shù)類型。 ** 的左操作數(shù)只能為 Int64 類型Float64
    發(fā)表于 09-13 14:55

    鴻蒙原生應(yīng)用元服務(wù)開發(fā)-倉頡基礎(chǔ)數(shù)據(jù)類型元組類型

    二元,例如,(Int64, Float64) 表示一個二元組類型,(Int64, Float64, String) 表示一個三元組類型。 元組的長度是固定的,即一旦定義了一個元組
    發(fā)表于 09-12 11:02

    鴻蒙原生應(yīng)用元服務(wù)開發(fā)-倉頡基礎(chǔ)數(shù)據(jù)類型浮點類型

    浮點類型包括 Float16、 Float32 和 Float64,分別用于表示編碼長度為 16-bit、 32-bit 和 64-bit 的浮點數(shù)(帶小數(shù)部分的數(shù)字,如 3.1415
    發(fā)表于 09-10 10:22

    常見的遙感數(shù)據(jù)源有哪些類型

    遙感技術(shù)是一種通過衛(wèi)星、飛機或其他載體上的傳感器系統(tǒng),從遠(yuǎn)距離收集地球表面信息的技術(shù)。遙感數(shù)據(jù)源的類型非常多樣,它們可以根據(jù)不同的原理、平臺、傳感器類型、分辨率、光譜范圍等特征進行分類。以下是一些
    的頭像 發(fā)表于 09-04 14:33 ?1929次閱讀

    如何提高單片機的運算效率之FPU

    只要STM32或者其他32位單片機,自帶FPU功能,就可以加速float類型數(shù)據(jù)的加減乘除運算。在STM32中要啟用FPU,需要啟動滿足兩個
    的頭像 發(fā)表于 08-30 11:47 ?1191次閱讀
    如何提高單片機的運算效率之FPU

    收發(fā)器的接口類型及安裝和維護

    收發(fā)器(Optical Transceiver)是一種用于光纖通信系統(tǒng)中的光電轉(zhuǎn)換設(shè)備,它將電信號轉(zhuǎn)換為光信號,或?qū)⒐庑盘栟D(zhuǎn)換為電信號。在現(xiàn)代通信系統(tǒng)中,光收發(fā)器被廣泛應(yīng)用于各種場景,如數(shù)據(jù)
    的頭像 發(fā)表于 08-23 10:16 ?1167次閱讀

    i2s_read返回的內(nèi)存指針可以是float類型的數(shù)組嗎?

    (aux in輸入的音頻信號),如果我把float 改成int16_t就沒有問題了,但是我后續(xù)的數(shù)據(jù)處理精度需要是float數(shù)據(jù)類型,誰能給解答一下?i2s_read返回的到底是整形還
    發(fā)表于 06-28 08:07