工作了7個月之久,對單片機的編程也開始慢慢熟悉起來,以前總是知道單片機就是定時器,狀態機,中斷這些東西結合起來效率是相當高的,但是自從接手開發GPF這個芯片之后,我發現了另外一種單片機的開發技巧,高手請繞道。
我們都知道,在程序中,延時會影響單片機的實時性能,導致效率明顯降低,但是在GPF這個芯片的開發中,系統延時和初始化被供應商做到了一塊,所以調用程序,必須要做一定的loop才能使得程序能夠正常的跑起來,其實我也不知道她們為什么要這么做。
在工作中,改一份源碼不是隨隨便便就可以改的,當時做了這么一個程序,源碼我就不公開了,寫個案例解釋:
void test()
{
int i = 0 ;
int tick ;
int BatteryStatus = 0;
int Voltage ;
int count = 0 ;
int Voltage_value ;
char ch ;
scanf("%d",&BatteryStatus);
while(1)
{
delay_20ms();
switch(BatteryStatus)
{
case
1:
if(count == 50)
{
printf("0x%x\n",0xE1);
count = 0 ;
};break ;
case 2:
if(count == 50)
{
printf("0x%x\n",0x90); //發通用'1'信號
count = 0 ;
};break ;
default:
break ;
}
count++ ;
#if 0
ch = getch(); //假設我在這設立一個按鍵
if(ch == 'q')
{
printf("%x",0x48);
break ;
}
#endif
}
}
在while循環中,首先進去是延時20個ms,然后count計數器加加,當加到50次也就是一秒鐘了,然后清零。此時若按下按鍵,不會受到干擾,程序正常運行,效率依然很高。如果這時候delay_20ms改成delay_1000ms,程序掃描按鍵每次就要等待1s鐘,影響效率。計數值可以自我估計一下,不需要太準,這樣的程序在延時不需要太精準的可以實現和定時器差不多一樣的功能。
上一篇:單片機PWM調制技術
下一篇:單片機連接藍牙4.0心得分享
推薦閱讀
史海拾趣
在電子行業的激烈競爭中,Crosspoint Solutions公司憑借一項革命性的技術創新脫穎而出。公司研發出一款高度集成的交叉點開關芯片,該芯片在數據傳輸速度和穩定性上均達到了行業領先水平。這一創新迅速吸引了各大電子設備制造商的注意,公司因此獲得了大量訂單,市場份額迅速擴大。
隨著業務的發展,Crosspoint Solutions公司意識到單一市場無法滿足其增長需求。于是,公司開始積極尋求國際合作機會,與多家國際知名電子企業建立了戰略合作關系。通過技術共享和市場互補,公司成功打開了多個新的市場,業務遍布全球多個國家和地區。
隨著科技的快速發展,數據處理行業也在不斷變化。為了保持競爭優勢,Datalinear公司投入大量資金進行技術創新。經過數年的研發,公司成功推出了一款基于人工智能的數據分析系統,能夠自動識別數據中的模式并給出預測。這一技術的突破讓Datalinear公司在行業內樹立了技術領先的形象,也贏得了眾多客戶的青睞。
隨著公司的發展,Advanced Power Solutions開始尋求與行業內其他企業的合作。通過與一家知名電子設備制造商建立戰略合作關系,公司成功將其電源管理解決方案集成到對方的產品中。這一合作不僅擴大了公司的市場份額,也提高了公司的品牌知名度。此后,公司陸續與多家企業建立了合作關系,進一步鞏固了其在行業內的地位。
2015年,博通迎來了歷史性的時刻。安華高科技以170億美元現金與200億美元的股票,合計370億美元并購了博通,使其成為安華高科技的子公司。這一并購不僅使博通獲得了更多的資源和支持,也為其后續的快速發展奠定了堅實的基礎。此后,博通通過一系列的并購活動,不斷擴張其業務范圍和市場份額。
隨著全球化的深入發展,博通積極調整戰略,加強全球布局。公司通過設立研發中心、拓展銷售網絡等方式,不斷提升其在全球市場的競爭力。同時,博通還積極與其他行業領軍企業開展戰略合作,共同推動電子行業的發展和創新。
這些故事展示了博通在電子行業中的發展歷程和成就。從初創時期的艱難起步,到困境中的重生,再到并購擴張和技術創新,博通始終保持著堅韌不拔的精神和追求卓越的態度。正是這樣的精神和態度,使博通能夠在激烈的市場競爭中脫穎而出,成為電子行業的佼佼者。
你的操作員接口終端是否會給你帶來痛楚?我不是指只是由于不能正確發揮功能而引起的失望和沮喪。我指的是真實的感同身受的痛楚,如同任何真正的計算機終端,一個HMI會遭遇到健康以及與安全有關的使用問題等。當結合HMI工作時,一般說來,正確的符合 ...… 查看全部問答∨ |
proteus 7.4出來了,是完美破解版,不自動退出,很辛苦找回來的,大家需要就下載吧!本人人格保證用了一天都沒有自動退出!哦,這次是第一次發貼,不好的別罵我,我下次改正! … 查看全部問答∨ |
實驗臺的數據采集系統,看看下面的程序哪里有問題???????圖一,為硬件電路圖, 圖二,為計算機方面的軟件界面(用VB做的) dvYK6QHA.jpg (120.87 KB) 傳感器數據采集系統 2009-10-30 19:30 eYdgAiLe.jpg (171.23 KB) 傳感器數 ...… 查看全部問答∨ |
內部晶振改為外部晶振,timer中斷是好的,但是串口發出信息外邊接收不到,高分求解 void UART0Init(void) { unsigned char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page SFRPAGE = 0x00; SSTA0 = 0x1a; &n ...… 查看全部問答∨ |
isd1420語音芯片通過編程可以實現分段錄放音,循環放音等功能。 我今天編了下,只實現了分段錄音的功能,錄完之后怎么讓它把多段錄音一次性給放出來呢?弄不出來,做過的人請教下… 查看全部問答∨ |
想問一下用c#編寫WinCE的串口通信和編寫Windows有區別嗎?我使用SerialPort類能否實現?我在模擬器上跑這個程序,寫串口時模擬器會死掉,誰知道是什么原因?… 查看全部問答∨ |
安裝完J-LINK驅動后,打開keil開始調試,出現如下提示后,自動關閉,請問這是什么問題? [ 本帖最后由 dongsy2012 于 2013-11-28 18:09 編輯 ]… 查看全部問答∨ |
|
已經按很多地方上面說的改了,但是還是亂碼。 system_stm32f4xx.h、conf.h、f4xx.h三個地方都已經改成8M的啦,不知道為什么還是不行,求大神教教或者給我個例程參考一下… 查看全部問答∨ |
#include \"DSP28_Device.h\" #include \"stdio.h\" #include \"math.h\" #include \"float.h\" #define NX 404 #define PI 3.1415925 float M=0.8; int k0,h1,h2; double a[NX]; extern int tp = 1250; void zkb(); interru ...… 查看全部問答∨ |