| 5 | 1/1 | 返回列表 |
| 查看: 2023 | 回復: 4 | ||
zhangricky新蟲 (初入文壇)
|
[求助]
單片機C語言編程中的自定義函數(shù)使用問題
|
|
void v_Lcd12864PutString_f (unsigned char x, unsigned char y, unsigned char *pData) unsigned char n1; v_Lcd12864PutString_f( 2,0,&n1); 編譯能成功,但是LCD無法顯示n1這個變量的內(nèi)容,如果是靜態(tài)的字符串就沒問題。是什么原因呢? 如果改成這樣 void v_Lcd12864PutString_f (unsigned char x, unsigned char y, unsigned char *pData) unsigned char *p1; p1=&n1; v_Lcd12864PutString_f( 2,0,p1); 編譯通過,可是還是亂碼。 其中n1是取自時鐘芯片DS1302。 unsigned char n1;n1=Time->Hour/10;所以n1應該等于小時的高位,只有可能是字符“1”或者字符“2”。請高人指點。 |
銀蟲 (初入文壇)
|
根據(jù)我的經(jīng)驗來推測,這個問題跟變量的生命周期有關(guān)。 你如果不加static關(guān)鍵字,n1變量所屬的程序分支結(jié)束之后,n1所在的地址也就被收回了,里面存了什么數(shù)據(jù)就不好說了,而你調(diào)用的lcd顯示函數(shù)仍然引用n1之前的地址,而這個老地址里面的數(shù)據(jù)已經(jīng)不是你所期望的1或者2了。而你如果加了static關(guān)鍵字,n1這個變量就會被分配在靜態(tài)數(shù)據(jù)區(qū),不會被收回,數(shù)據(jù)永遠是1或者2,顯示也就不會錯。 由于樓主沒有貼出完整的程序,所以我猜測一般來說,是你調(diào)用lcd顯示函數(shù)之前,n1變量的生命周期就結(jié)束了。 當然還有另一種情況,由于單片機的內(nèi)存是很小的,IAR這種工具都是有編譯優(yōu)化的,也就是說編譯器會自動的省去一些它認為不必要的代碼段和數(shù)據(jù)段。這種情況下,編譯器有可能認為n1這個引用是沒有意義的,從而產(chǎn)生傳址錯誤。這種情況我也見過。如果不是第一種情況,你就把編譯器里的代碼優(yōu)化選項給去掉。 如果還有問題可以把完整的代碼貼出來看看 |
木蟲 (職業(yè)作家)
銀蟲 (初入文壇)
| 5 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 293求調(diào)劑 +6 | 加一一九 2026-03-24 | 6/300 |
|
|---|---|---|---|---|
|
[考研] 生物學學碩求調(diào)劑 +6 | 小羊睡著了? 2026-03-23 | 6/300 |
|
|
[考研] 材料調(diào)劑 +5 | 匹克i 2026-03-23 | 5/250 |
|
|
[考研] 一志愿南航材料專317分求調(diào)劑 +4 | 炸呀炸呀炸薯條 2026-03-23 | 4/200 |
|
|
[考研] 085600材料與化工調(diào)劑 +7 | A-哆啦Z夢 2026-03-23 | 12/600 |
|
|
[考研] 333求調(diào)劑 +3 | ALULU4408 2026-03-23 | 3/150 |
|
|
[考研] 工科0856求調(diào)劑 +5 | 沐析汀汀 2026-03-21 | 5/250 |
|
|
[考研] 接收2026碩士調(diào)劑(學碩+專碩) +4 | allen-yin 2026-03-23 | 6/300 |
|
|
[考研] 323求調(diào)劑 +6 | 洼小桶 2026-03-18 | 6/300 |
|
|
[考研] 一志愿華中農(nóng)業(yè)071010,總分320求調(diào)劑 +5 | 困困困困坤坤 2026-03-20 | 6/300 |
|
|
[基金申請] 山東省面上項目限額評審 +4 | 石瑞0426 2026-03-19 | 4/200 |
|
|
[考研] 一志愿南大,0703化學,分數(shù)336,求調(diào)劑 +3 | 收到VS 2026-03-21 | 3/150 |
|
|
[考研] 296求調(diào)劑 +4 | www_q 2026-03-20 | 4/200 |
|
|
[考研] 299求調(diào)劑 +6 | △小透明* 2026-03-17 | 6/300 |
|
|
[考研] 化學求調(diào)劑 +4 | 臨澤境llllll 2026-03-17 | 5/250 |
|
|
[考研] 一志愿西南交大,求調(diào)劑 +5 | 材化逐夢人 2026-03-18 | 5/250 |
|
|
[考研] 321求調(diào)劑 +9 | 何潤采123 2026-03-18 | 11/550 |
|
|
[考研] 求調(diào)劑,一志愿:南京航空航天大學大學 ,080500材料科學與工程學碩,總分289分 +4 | @taotao 2026-03-19 | 4/200 |
|
|
[考研] 329求調(diào)劑 +9 | 想上學吖吖 2026-03-19 | 9/450 |
|
|
[考研] 【同濟軟件】軟件(085405)考研求調(diào)劑 +3 | 2026eternal 2026-03-18 | 3/150 |
|