久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1755|回復: 8
收起左側

全局變量滿天飛怎么優化程序

[復制鏈接]
ID:734017 發表于 2024-2-29 12:34 | 顯示全部樓層 |閱讀模式
bit HIM_page_Waterlight_flag =0;

bit Ion_A_flow_clean_start = 0;                                        //清洗
u8 xdata Ion_A_flow_continued_temp = 0;        //清洗計數

u8         Ion_A_flow =0;                                                                             //流量
bit Ion_A_flow_start = 0;                                                                //流量開關
u16 xdata Ion_A_flow_continued = 0;
u8 Ion_A_RF_EMS_mode =0;                                                               
bit Ion_A_RF_EMS_mode0 =0;                                                //自動模式切換
        
u8 Ion_A_Energy=0;                                                                                //電A強度
u8 Ion_A_Energy_temp=38;                                                        //電A強度

u8 Ion_A_mode =0;                                                                                        //電mode
bit start_Ion =0;                                                                                        //電獨立開關
bit overturn_Ion_A=0;                                                                        //翻轉
        
bit switch_delayed =0;        

u16         Ion_PWM_Counter =0;
u16 Ion_mode_PWM_Counter =0;
u16        RF_ion_autoIon_Counter =0;

隨著功能模塊增加,變量堆爆了,以上是其中一個模塊的變量。程序經過一年增大到10個模塊。有時候跑單個,或者同時跑多個。數據處理頭大了。
請教前輩這方面的經驗,方法。謝謝

回復

使用道具 舉報

ID:883242 發表于 2024-2-29 13:22 | 顯示全部樓層
如果是主程序和中斷共享的變量,那就不能優化。如果不共享那就封裝到函數的局部變量好了。
回復

使用道具 舉報

ID:458247 發表于 2024-2-29 14:08 | 顯示全部樓層
分模塊寫代碼,模塊之間不應該有耦合變量,模塊內部的變量定義成static類型,若兩個模塊真的有需要共用的變量,提取到rte.c里面,并且一樣定義成static類型,在rte.c文件中增加該變量的接口,模塊使用這個接口進行訪問。
回復

使用道具 舉報

ID:41656 發表于 2024-2-29 14:41 | 顯示全部樓層
對于相關的變量或者針對某個任務的可以做個結構體,這樣方便管理。不必要的變量可以用局部變量
回復

使用道具 舉報

ID:401564 發表于 2024-2-29 15:49 | 顯示全部樓層
二三十個變量并不算多
大程序盡量用局部變量
某個類型需要用到變量多的,就用結構體
宏定義也要合理的用上,調試程序的時候會方便修改
回復

使用道具 舉報

ID:1107043 發表于 2024-2-29 16:58 | 顯示全部樓層
3樓和4樓的方法很好的。你可以在每個模塊都建立一個結構體的變量。當這個模塊需要增加變量時,直接在結構體增加就行。至于通用的變量,你可以單獨寫一個.c文件。這樣子查詢和修改都方便
回復

使用道具 舉報

ID:883242 發表于 2024-2-29 19:42 | 顯示全部樓層
static局部變量是按全局變量分配空間的。雖然不能被其他函數訪問,按軟件工程的概念安全了,但沒有真正的局部變量復用內存節約空間的能力,沒事兒瞎加static是很浪費資源的。

軟件工程是針對大型軟件來說的,對于單片機這種螺螄殼里面做道場的應用,很多情況下都是錯誤的。
回復

使用道具 舉報

ID:420836 發表于 2024-3-1 08:55 | 顯示全部樓層
首先要做的是確定所有可以優化的變量。 對于超過數千行的程序來說,這可能非常耗時。
回復

使用道具 舉報

ID:491577 發表于 2024-3-1 19:26 | 顯示全部樓層
單個的全局變量怎么可能多?除非是上千的數組才叫多,樓主是低估了現在的單片機,51單片機內存有8K,STM32的內存幾十K,一千以下的變量小意思。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久吹潮 | 欧美亚洲国产一区二区三区 | 日韩视频免费 | 国产在线a视频 | 黄色毛片在线观看 | 久久久999免费视频 999久久久久久久久6666 | 毛片一级片 | 亚洲免费一区二区 | 日韩欧美手机在线 | gav成人免费播放视频 | av成年人网站 | 久久999| 亚洲狠狠 | 精品成人在线视频 | 中文字幕 在线观看 | 午夜精品一区二区三区在线观看 | 久久久久香蕉视频 | 91操操操| 亚洲免费网址 | 在线视频一区二区 | 伊人网伊人网 | 夜久久| 国产日韩欧美激情 | 国产在线视频在线观看 | 爱爱视频网 | av资源网站 | 亚洲一卡二卡 | 国产精品毛片一区二区三区 | 日韩欧美在线不卡 | 中文字幕av一区 | 8x国产精品视频一区二区 | 日韩精品一区二区三区四区视频 | 欧美一区二区三区在线 | 亚洲天堂中文字幕 | 国产亚洲精品久久午夜玫瑰园 | 亚洲免费成人av | 亚洲精品免费在线观看 | 亚洲国产精品视频 | 国产精品九九九 | 亚洲一区二区久久 | 欧美九九九 |