明確目標以及不要過早優化

2022-02-13 19:23:04 字數 2325 閱讀 3562

上週的嵌入式實驗課做了乙個關於adc的實驗,即用從5v中用變阻器分出一部分電壓,用adc取樣量化作為輸入訊號,要求是使led閃爍頻率隨這個訊號限值(包括上限a上和下限a下)的幅度的增大而變快。

設輸入訊號幅度是a,乙個思路是用延時,a-a下  越大,兩次亮燈之間的延時越小,這樣也就是閃得越快了。低於下限的時候同理。不過這篇隨筆主要不是講這個思路有多好(一般都能想到這個思路),而是要說它的實現。

先說說當時是怎麼做的吧。。由於已經給了例程,一般情況下為了圖方便省事是直接修改,或者呼叫裡面的函式(而且是只看介面不看內部)。一般情況下都有這麼乙個delay的函式

extern __io uint32_t timingdelay;

void

delay(__io uint32_t ntime)

在寫中斷原始檔中

__io uint32_t timingdelay = 0;

void systick_handler(void

)

當然還要配置systick,開啟定時器,這樣才能進入systick_handler中斷

可是上面這些都配置好了以後,這個delay函式只能在main.c 中呼叫,但問題是 led亮滅(閃爍)本身就是在中斷裡面完成的

void adc1_2_irqhandler(void

)

如果在stm32f10x_it.c中呼叫delay,即

void adc1_2_irqhandler(void

)

(下面才是本文重點要說的)

這時候朱哥提醒了我,要不用for迴圈來做延時得了。一試如夢初醒茅塞頓開!然後一下子有了很多想法(主要是反思)思維又被限制了好嗎!

1.

//

說明:adc給過來的值的範圍a是0~4096,a

上是2816,a

下是768

//   

系統晶振是25m

//  

3000是放大因子

void adc1_2_irqhandler(void

)else

printf(

"interrupt occur\r");

stm_eval_ledoff(led1);

if(adc_getconversionvalue(adc1)>2000

)else

printf("\r

");/*

clear adc1 awd pending interrupt bit

*/adc_clearitpendingbit(adc1, adc_it_awd);

}

試驗效果ok,達到要求。

2.剛學51的時候,郭天祥老師的書上教了兩種延時的方法:可以直接在其中用for迴圈來耗掉時間,這種方法中間不能做其他事,而且不是很精確;

//<

新概念51微控制器c語言教程》中用來延時n毫秒的方法

//當然也可以只用乙個for

void delay_ms(uint

n)

也可以用中斷來實現,這樣可以在期間做其他事情,既保證了效率又可以更精確計時。

但是,並非所有場合都必須要用中斷!在要求不高(時間精度或者功耗要求等)的場合,for延時夠用了!簡單方便,測試看延時的效果夠用了。

要把學過的東西融匯貫通,思維不要被約束和限制,明確目的!這裡的目的首先是要達到要求,其次才是看你會不會正確用中斷什麼的

3.3.1

《黑客與畫家》的譯者總結,原著作者paul graham有一套完整的創業哲學,他的創業公式是:

(1)搭建原型

(2)上線運營(別管bug)

(3)收集反饋

(4)調整產品

(5)成長壯大

paul graham還指出,不要過早優化你的產品,在這次實驗中也有異曲同工之妙。先完成作業要求,而不要一開始就想著出乙個完美的作品,然後再進一步優化,至少在完成要求後心態更好頭腦清晰不會有焦慮之急,有利於優化工作的進行。

3.2看上去更近的路不一定是捷徑(比如直接從另乙個工程裡面把與delay函式有關的的抄過來,在這裡就是用不了),繞遠路可能更快,這樣的例子在生活中很常見。

至少需要先思考一下再行動,大腦這個智慧型cpu不是白給的。

明確目標,努力執行

做開發三年,對於自己的能力不敢說怎麼樣。有很多想法,作為乙個開發人員來說,這一點很令我受益匪淺,經常地去了解一些前沿的技術,經常地去想一些有趣的東西,有時候,我覺得我的想法如果真的實現了的話,我一定能獲得一大筆財富。肯付出,對於工作,我願意用心去做。乙個任務交給我,我一定會努力去完成,不管什麼時候,...

精力管理7 明確目標

意志力量是目標最充足的源泉,意志精力 於深層價值取向和超越個人利益的目標。目標會激發決心。它促成了我們的全情投入,希望將精力集中在某件事情或某個目標上。只有真正深刻地關心自己所為真正有意義,人們才有可能做到全情投入。使命感是我們的火種,我們動力,也是我們的精神食糧。從培訓角度看,英雄之旅的意義在於調...

必須為下屬明確目標 ZZ

看了一篇比較通俗的目標管理,實際上就是 1 要有乙個schedule,2 至於這個schedule質量,那才是要看專案管理者的水準了。領導者們應當為下屬們確定目標,並把自己的意圖明明白白地傳達給他們,這是一種令人鼓舞的方式,是協調工作的基礎。鮑勃 湯森在 步步高公升 一書中說 領導 人的重要作用之一...