微控制器 MATLAB浮點數(float32)通訊

2021-08-03 09:57:50 字數 926 閱讀 3654

// 程式思路:

/*描述:把float型資料原封不動的按照儲存4位元組傳送

輸入:要傳送的浮點數

輸出:無

*/void float_send(float data)}/*

這裡想請教一下大家,為什麼add = (unsigned char *)&data;中要帶(unsigned char *)?

不然就給waring:point to different objects?

假如浮點數的位址是四位元組的首位址,取址之後那就是字元型位址變數,直接賦給add沒毛病;

假如浮點數的位址是全部四個位元組,我另外定義unsigned long *add_long,

直接賦值:add_long = &pitch;會報同樣的警告。

*/

% matlab 程式

function

single_32 = uchar32_single32

(char1,char2,char3,char4)

% 描述:將32位字元型資料在串列埠傳送的4位元組,轉化為32位單精度浮點型資料

% 輸入:四位元組(eg:『47','f1','20','00』)

% 輸出:32位single float(eg:123456)

% 首先將4位元組拼接成32位元組(dex2dec不可省去),轉化為十進位制整型資料

dec_32 = hex2dec(char1)*256^3 + hex2dec(char2)*256^2 + hex2dec(char3)*256 + hex2dec(char4);

% 然後直接轉化為浮點型資料,matlab預設為double型浮點型,所以要加'single'

single_32 = typecast(uint32(dec_32),'single');

end

在微控制器中的浮點數程式設計

問題背景 在使用8bit微控制器進行開發,不支援浮點數運算。但是開發必須用到sin,cos,arctan等浮點數函式。苦想了兩天,才發現,自己要當一回 計算機 微控制器不支援浮點數,可是程式設計卻一定要用到小數。這時,只好自定義 定點小數 了。所需的浮點數範圍有兩個區域 1 1,60 60。精度就按...

關於微控制器通過串列埠傳送浮點數資訊

最近弄乙個小東西的時候,需要將ad採集的資料,通過串列埠傳送上位機。由於還得在下位機部分顯示出來,所以這個ad採集的資料轉換之後傳送到串列埠,比較容易點。但是問題來了,以前的串列埠,只有從gps模組接收的資訊是浮點型別外。其他的東西,都只是把字元型別或者字串型別的資料發到串列埠。查閱了一點資料,這裡...

浮點數加法 北大機試題

整數部分存入棧中,方便計算 小數部分先存入字元陣列中,等相加以後,再把結果存入棧中 再計算整數部分,結果存入棧中 不難,就是寫起來有點麻煩 include include includeusing namespace std stackx1inter,x2inter stackresultfloat...