實際應用中,我們可能需要兩個設(shè)備通過串口傳輸浮點數(shù)據(jù):
本篇筆記為了方便演示,使用串口助手模擬其中一個設(shè)備,本篇筆記內(nèi)容如下:
我們創(chuàng)建一個用于管理float類型數(shù)據(jù)的共用體:
unionfloat_data { floatf_data; uint8_tbyte[4]; };
數(shù)據(jù)的流向如:
本次使用串口助手模擬發(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類型對應的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é)果:
這里以傳輸數(shù)據(jù)1.28為例,1.28對應的十六進制數(shù)據(jù)是什么呢?
我們可以通過一些在線網(wǎng)站查看,比如
http://www.styb.cn/cms/ieee_754.php
1.28對應的十六進制為:3FA3D70A。因為STM32是小端模式,所以使用串口助手發(fā)送時需要進行一個逆序,即發(fā)送0AD7A33F。從實驗結(jié)果可以看到:
STM32收到1.28之后,加上1.0之后通過UART3發(fā)回上位機,2.28對應4011EB85:
這里我們使用串口助手來模擬一個設(shè)備,所以需要查一下我們要發(fā)送的float數(shù)據(jù)對應的十六進制數(shù)據(jù)。實際兩個設(shè)備之間做傳輸是不需要這么做的,想發(fā)什么就傳什么就可以:
上一篇:STM32操作系統(tǒng)系列使用C語言的教程
下一篇:在STM32G4片內(nèi)不同存儲空間運行的速度差異
推薦閱讀最新更新時間:2025-06-30 03:09




設(shè)計資源 培訓 開發(fā)板 精華推薦
- Microchip 升級數(shù)字信號控制器(DSC)產(chǎn)品線 推出PWM 分辨率和 ADC 速度業(yè)界領(lǐng)先的新器件
- 意法半導體STM32MP23x:突破成本限制的工業(yè)AI應用核心
- 意法半導體推出用于匹配遠距離無線微控制器STM32WL33的集成的匹配濾波芯片
- ESP32開發(fā)板連接TFT顯示屏ST7789跳坑記
- 如何讓ESP32支持analogWrite函數(shù)
- LGVL配合FreeType為可變字體設(shè)置字重-ESP32篇
- 使用樹莓派進行 ESP32 Jtag 調(diào)試
- ESP32怎么在SPIFFS里面存儲html,css,js文件,以及網(wǎng)頁和arduino的通訊
- ESP32 freeRTOS使用測試
- LTC3806 反激式控制器改善了多輸出應用的交叉調(diào)節(jié)
- BTS 723 GW智能高端電源開關(guān)典型應用電路
- 具有正電源的 LT3091HDE 500mA LED 驅(qū)動器的典型應用
- SG3525A驅(qū)動功率場效應管用于脈寬調(diào)制器控制電路的典型應用
- LTC2945IMS-1 隔離式寬范圍 I2C 功率監(jiān)視器的典型應用
- 用于 LED 照明的 DC 到 DC 單路輸出電源
- STEVAL-ILL015V2,基于 LED2472G 和 STM32 HB LED 驅(qū)動器的評估板,具有診斷功能
- 使用 ROHM Semiconductor 的 BD45471 的參考設(shè)計
- MAP9004,使用 MAP9004 高壓交流 LED 驅(qū)動器的典型應用電路,用于 4 通道復合解決方案
- LTC3100,具有電壓排序功能的單節(jié)電池雙輸出轉(zhuǎn)換器
- PCIe M.2接口測試的現(xiàn)狀、挑戰(zhàn)與泰克解決方案
- ABB在中國推出面向電子制造業(yè)的兩大全新機器人系列
- ABB在中國推出PoWa協(xié)作機器人系列
- 西門子 NX 新增 AI 助手等多項功能
- 貿(mào)澤即日起開售適用于數(shù)據(jù)中心和網(wǎng)絡應用的 全新TE Connectivity QSFP 112G SMT連接器
- ABB推出三大全新機器人系列,強化中國機器人市場領(lǐng)導地位
- 新思科技關(guān)于美國解除近期對華出口限制的聲明
- Wolfspeed 1700 V MOSFET 技術(shù),助力重塑輔助電源系統(tǒng)的耐用性和成本
- 英飛凌大中華區(qū) 2025 生態(tài)創(chuàng)新峰會,究竟探討了哪些創(chuàng)新與生態(tài)合作?
- Microchip攜手Nippon Chemi-Con和NetVision 打造日本汽車市場首個ASA-ML攝像頭開發(fā)生態(tài)系統(tǒng)