[問題] 簡單的指標問題(已解)

作者: kingzero (一起迷路)   2014-07-03 10:01:49
開發平台(Platform): Ansi C 32bit MCU
額外使用到的函數庫(Library Used): 自訂lib.用來控制底層硬體
問題(Question):
I2C無法寫入正確的資料.
EEPROM_Black BOX內已經有預先放了幾筆dummy資料了.
使用指標無法傳入正確的值.全寫入四個全部都是 0xB4.
餵入的資料(Input):
EEPRO_Balck_BOX array裡面的資料
預期的正確結果(Expected Output):
Black_BOX.ROM.EEPROM[0]~[2]的資料正確送出
送出結果應該是 01,02,03
錯誤結果(Wrong Output):
0xB4 0xB4 0xB4
程式碼(Code):(請善用置底文網頁, 記得排版)
我放在這裡了.
好讀版
http://ideone.com/aMGVK5
補充說明(Supplement):
下面的這一個可以正常寫入
LDByteReadI2C(EE_ADDR,0x0001,&PFC_value,2);
這一個寫入的結果錯誤
EEPageWriteI2C(EE_ADDR, &Black_BOX.ROM.EEPROM, 3);
我的傳址應該沒有弄錯吧
我一般都使用全域變數在傳資料,這次是特別使用傳址.
會錯誤是是因為變數宣告的關係嗎?
或者我應該這樣子問,call by adress可以使用在struct上面嗎?
作者: saxontai (黑暗,點綴孤零零的星)   2014-07-03 12:21:00
WriteI2C(&data); -> WriteI2C(*data);
作者: LPH66 (-6.2598534e+18f)   2014-07-03 22:11:00
WriteI2C 期望你將一個"值"給他讓他寫入而 data 是個指向"值"的指標, 自然需要 dereference 取值而不是去加 & 取址
作者: saxontai (黑暗,點綴孤零零的星)   2014-07-04 10:11:00
都忘了回來看一下回答有沒有幫助,差點射後不理了 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com