|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
SCI口輸入float類型數(shù)據(jù) |
| 作者:cuoai 欄目:DSP技術 |
我需要從PC機上接收float類型數(shù)據(jù),在DSP中也以float類型來存儲,只有SCI口可以用,我接收到8位的數(shù)據(jù)后要怎樣處理咧,先謝謝各位大蝦了。 |
| 2樓: | >>參與討論 |
| 作者: liqf 于 2007/4/27 8:25:00 發(fā)布:
用指針 * |
|
| 3樓: | >>參與討論 |
| 作者: cuoai 于 2007/4/27 13:37:00 發(fā)布:
謝謝liqf 謝謝你,不過我還是沒做好,能不能說詳細一點或者給一段簡單的代碼我看看 |
|
| 4樓: | >>參與討論 |
| 作者: computer00 于 2007/4/27 14:44:00 發(fā)布:
float的數(shù)據(jù)可不是8位的 你先搞清楚它的存儲格式吧。通常是4個字節(jié)的,你把這4個字節(jié)讀出來看看。 在PC上和在DSP中分別寫一個一樣的浮點數(shù),然后讀出來比較一下,或許你會發(fā)現(xiàn)一些規(guī)律..... 如果這兩者用的都是同一種格式的(通常是IEEE的),那么直接按字節(jié)復制過去就行了(注意大、小端模式)。 |
|
| 5樓: | >>參與討論 |
| 作者: xwj 于 2007/4/27 15:02:00 發(fā)布:
用聯(lián)合 |
|
| 6樓: | >>參與討論 |
| 作者: cuoai 于 2007/4/27 17:22:00 發(fā)布:
怎樣寫具體的中斷程序 謝謝各位,我用的存儲格式是IEEE,我是說接收和發(fā)送緩存器都是8位int格式啊,32位的浮點數(shù)據(jù)不能直接向緩存器寫和讀,我要怎樣做才可以讀和寫? |
|
| 7樓: | >>參與討論 |
| 作者: cuoai 于 2007/4/27 17:25:00 發(fā)布:
我用的是lf2407a 我用的是lf2407a的SCI口外接MAX232. |
|
| 8樓: | >>參與討論 |
| 作者: cuoai 于 2007/4/27 17:35:00 發(fā)布:
謝computer00 我也試過想按字節(jié)發(fā)送,但浮點數(shù)據(jù)格式不能移位,我要怎樣把一個浮點數(shù)分解成4個字節(jié)咧?用浮點數(shù)據(jù)指針也不能移位啊 |
|
| 9樓: | >>參與討論 |
| 作者: computer00 于 2007/4/27 18:07:00 發(fā)布:
強制類型轉(zhuǎn)換啊 取它的地址,然后把它強制轉(zhuǎn)換為CHAR型的指針,然后用這個指針讀接下來的4個地址,就可以得到4個字節(jié)了。 |
|
| 10樓: | >>參與討論 |
| 作者: cuoai 于 2007/4/28 17:58:00 發(fā)布:
我那樣做老是提示錯 computer00:謝謝您給我的指導,但我那樣做不能編譯。 我寫的代碼是: float ff=12.3; CHAR *cp; cp=(CHAR*)&ff; 編譯時報錯為: "main.c", LINE 17: [F088] redeclaration of 'cp' with incompatible type <earlier declaration: LINE 16> "main.c", LINE 17: [E152] initializer for 'cp' has incompatible type "main.c", LINE 17: [F098] declaration must have type or storage class 我不知道是不是我的寫法有問題,請computer00及路過的各位大蝦給我指點一下,先謝謝各位了。 |
|
| 11樓: | >>參與討論 |
| 作者: chen3bing 于 2007/4/28 20:16:00 發(fā)布:
RE 根據(jù)錯誤提示,你前面好象聲明過一個cp指針,重復了. |
|
| 12樓: | >>參與討論 |
| 作者: computer00 于 2007/4/29 0:51:00 發(fā)布:
可以啊 unsigned CHAR buf[4]; float f; f=123.456; buf[0]=((unsigned CHAR *)&f)[0]; buf[1]=((unsigned CHAR *)&f)[1]; buf[2]=((unsigned CHAR *)&f)[2]; buf[3]=((unsigned CHAR *)&f)[3]; 執(zhí)行完后 buf[0]=0x79, buf[1]=0xE9, buf[2]=0xF6, buf[3]=0x42. |
|
| 13樓: | >>參與討論 |
| 作者: cuoai 于 2007/4/29 16:57:00 發(fā)布:
謝謝各位大蝦 現(xiàn)在好了,謝謝computer00及chen3bing等大蝦給我的指點,我把cp=(CHAR*)&ff這個語句和全局變量寫到一起了,低級錯誤,耽誤大家的時間實在不好意思。 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |