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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
樓主: Similarv
打印 上一主題 下一主題
收起左側

請工程化,定制化你的單片機代碼

    [復制鏈接]
回帖獎勵 40 黑幣 回復本帖可獲得 2 黑幣獎勵! 每人限 1 次
161#
ID:668298 發表于 2020-1-3 08:37 | 只看該作者
講的真好,從實用角度出發,給出解決方案。
回復

使用道具 舉報

162#
ID:682611 發表于 2020-1-7 08:50 | 只看該作者
說到的東西非常有用
回復

使用道具 舉報

163#
ID:553941 發表于 2020-1-7 14:29 | 只看該作者
Similarv 發表于 2019-6-20 13:30
用靜態變量去統計按鍵的時間,隨后對此時間進行裁決。
延時只會讓你的程序卡在那里一段時間,動彈不得。

如果我只需要執行一次按鍵之后的程序,為了避免按鍵長按導致的重復運行,就用一個變量,在每次進入中斷檢測到這個按鍵按下的時候加一,然后判斷這個變量的值,必須在要求的范圍內才執行,這樣是不是就能解決按鍵消抖和長按的問題了
回復

使用道具 舉報

164#
ID:195830 發表于 2020-1-7 15:01 | 只看該作者
絕世好帖!
回復

使用道具 舉報

165#
ID:283883 發表于 2020-1-7 18:48 | 只看該作者
很好,謝謝分享
回復

使用道具 舉報

166#
ID:636210 發表于 2020-1-8 08:57 | 只看該作者
很牛的分析
回復

使用道具 舉報

167#
ID:323102 發表于 2020-1-8 14:50 | 只看該作者
可不可以把文檔資料發上來?
回復

使用道具 舉報

168#
ID:682588 發表于 2020-1-9 15:49 | 只看該作者
在按鍵處理過程中,使用狀態機控制可以釋放CPU的資源
回復

使用道具 舉報

169#
ID:108573 發表于 2020-1-11 10:04 | 只看該作者
絕世好貼,就是不知道PDF文檔發在哪了?
回復

使用道具 舉報

170#
ID:590770 發表于 2020-1-11 18:07 | 只看該作者
這個得頂啊,老鐵
回復

使用道具 舉報

171#
ID:488782 發表于 2020-1-11 23:53 | 只看該作者
豁然開朗啊
回復

使用道具 舉報

172#
ID:77675 發表于 2020-1-12 21:05 | 只看該作者
有種使人豁然開郎的感覺,正規化流程。
回復

使用道具 舉報

173#
ID:59168 發表于 2020-1-12 23:40 | 只看該作者

專家講解,學習了。
回復

使用道具 舉報

174#
ID:599678 發表于 2020-1-13 09:20 | 只看該作者
這種針對代碼量小的項目實時性沒有問題。但代碼量大的整個程序架構就會顯得臃腫,也需針對同一個事情,在主函數中不同時基處都要處理。比較好的做法是把定時器做成指針回調,需要一個定時器,就定義一個變量,通過注冊函數把地址給底層函數,應用層看只是申明一個變量,并且通過注冊函數給個地址,底層看只是檢測到該地址有效,然后定時加1加到最大(不溢出)。兩層分開各自管理方便維護。
回復

使用道具 舉報

175#
ID:130230 發表于 2020-1-13 09:34 | 只看該作者
先別照抄別人的,給個思路。定時器中斷+flg+狀態機實現一個阻塞式的時間片程序結構。。。自己試一下不難的在看這篇文章。
回復

使用道具 舉報

176#
ID:476527 發表于 2020-1-13 16:52 | 只看該作者
本帖最后由 Similarv 于 2020-1-13 18:07 編輯
13303022280 發表于 2020-1-7 14:29
如果我只需要執行一次按鍵之后的程序,為了避免按鍵長按導致的重復運行,就用一個變量,在每次進入中斷檢 ...

你的做法當然也沒有問題,不過我是這么做的:
按鍵就只是做按鍵檢測,并且設置相應的“按鍵已觸發”標志(bit變量);至于按鍵的功能則是在別處比如狀態機中去執行。
例子:當按鍵按下之后開/關燈

key.c 文件:
bit key_flag_light;  //當按鍵觸發時為1,否則為0, 此變量是給狀態機使用的
static bit key_press_light; //當按鍵按下時為1,未按下為0,此變量僅在key.c內使用。
函數1-keyScan()  -- 功能:檢測按鍵是否按下,若按鍵按下則將key_press_light置一,否則清零。
函數2-keyDeal()   -- 功能:使用某靜態變量統計key_press_light的時間;當key_press_light從1變為0的時候,檢查靜態變量的值是否大于消抖值,若大于消抖時間則將key_flag_light設置為1;

state.c文件
函數1-StateMachine() -- 功能:當key_flag_light==1時,取反led_flag_out的值,隨后將key_flag_light設置為0.

led.c文件
bit led_flag_out; //當該值==1,開燈;當該值==0;關燈
函數1-ledOutput() -- 功能:根據led_flag_out的取值開燈或者關燈

main.c文件
在10ms或者20ms的時基中依次調用
keyScan();
keyDeal();
StateMachine();
在100ms的時基中調用
ledOutput();

/******/
稍微修改一下,剛剛沒有認真審題,你需要做長按的判定,我這個架構是基于短按的。
修改的地方位于keyDeal()部分,
短按 —— 是等待按鍵松開時裁決靜態變量的計時值。
長按 —— 則是直接在靜態變量等于‘長按時間點’的時刻將key_flag_light置一即可。key_flag_light==1的時候,狀態機自然會處理長按事件,此后keyDeal()里的靜態變量會在按鍵繼續按著的時候繼續加,但其值已經‘大于’‘長按時間點’了,所以key_flag_light不會被重復置一,當按鍵釋放之后,此靜態變量清零,一切重新開始。


回復

使用道具 舉報

177#
ID:476527 發表于 2020-1-13 17:46 | 只看該作者
hubj627 發表于 2020-1-13 09:20
這種針對代碼量小的項目實時性沒有問題。但代碼量大的整個程序架構就會顯得臃腫,也需針對同一個事情,在主 ...

進階教程尚待壇友們自己修行,鄙人不才,只能帶路到這了
回復

使用道具 舉報

178#
ID:108573 發表于 2020-1-13 22:21 | 只看該作者
Similarv 發表于 2020-1-13 17:46
進階教程尚待壇友們自己修行,鄙人不才,只能帶路到這了

樓主是否在其他帖子發布了PDF及源碼?想下載先來,沒事多看看,望回復
回復

使用道具 舉報

179#
ID:476527 發表于 2020-1-14 09:11 | 只看該作者
神出沒 發表于 2020-1-13 22:21
樓主是否在其他帖子發布了PDF及源碼?想下載先來,沒事多看看,望回復

暫時還沒有別的文章,此文獨此一份,有沒有盜貼我就不清楚了
回復

使用道具 舉報

180#
ID:685918 發表于 2020-1-14 09:47 | 只看該作者
多謝樓主分享
回復

使用道具 舉報

181#
ID:59151 發表于 2020-1-18 00:24 | 只看該作者
很好的文章,不止內容好,就連寫的文章都是那么文理清晰,有可能文章寫得好的人寫單片機代碼都是特別清晰的,因為作者的思路太棒了
回復

使用道具 舉報

182#
ID:661513 發表于 2020-1-21 16:33 來自手機 | 只看該作者
寫的真好,對定時器有了更深的理解
回復

使用道具 舉報

183#
ID:615823 發表于 2020-1-23 17:56 | 只看該作者

學習了 非常好 期待后續
回復

使用道具 舉報

184#
ID:544092 發表于 2020-1-26 12:06 | 只看該作者
shenyuqiu 發表于 2019-8-10 10:38
樓主這文章比那些所謂的教科書好多了,那些教科書按鍵消抖動不動就是delay(20ms),真是誤人子弟,真正出來 ...

回想一下自己在剛開始學的時候是什么樣子,你是明白了單片機編程,回頭說教科書爛。教科書是面向初學者的,目的是引人入門。初學者,你給他講狀態機編程,他能搞明白?搞不明白不說,反而會打擊學習興趣。這些東西在初學的時候都不重要,重點關注單片機本身的基本功能和應用,等有一定的知識和經驗之后,在來學這些也不遲。
回復

使用道具 舉報

185#
ID:117930 發表于 2020-1-27 00:33 | 只看該作者
對于我等初學者來說 確實有很大的啟示  謝謝
回復

使用道具 舉報

186#
ID:68468 發表于 2020-1-28 23:09 | 只看該作者
好貼,頂樓主!
回復

使用道具 舉報

187#
ID:494559 發表于 2020-1-30 12:44 | 只看該作者

很好的文章,請繼續。感謝!
回復

使用道具 舉報

188#
ID:76606 發表于 2020-3-13 22:34 | 只看該作者
好文章 要分享
回復

使用道具 舉報

189#
ID:413383 發表于 2020-3-14 00:18 | 只看該作者
不錯的文章,希望有后續
回復

使用道具 舉報

190#
ID:692599 發表于 2020-3-14 10:50 | 只看該作者
很不錯的文章,樓主的這個按鍵程序應該是按鍵彈起后才響應的吧
回復

使用道具 舉報

191#
ID:542948 發表于 2020-3-14 16:53 | 只看該作者

看完受益匪淺,希望有后續
回復

使用道具 舉報

192#
ID:258004 發表于 2020-3-14 19:51 | 只看該作者
學習了。留個記號。觸類旁通。其他語言也同樣。
回復

使用道具 舉報

193#
ID:695749 發表于 2020-3-14 22:48 | 只看該作者
理念在不斷的突破,再次學習,受益中,謝謝分享!
回復

使用道具 舉報

194#
ID:585390 發表于 2020-3-16 17:02 | 只看該作者
點贊,謝謝分享,學習一下
回復

使用道具 舉報

195#
ID:709387 發表于 2020-3-16 17:58 | 只看該作者
感謝感謝    學習了
回復

使用道具 舉報

196#
ID:709685 發表于 2020-3-16 20:28 | 只看該作者
作為新手的我想了解更多。
回復

使用道具 舉報

197#
ID:707109 發表于 2020-3-16 21:11 | 只看該作者
非常喜歡,希望有后續
回復

使用道具 舉報

198#
ID:21545 發表于 2020-3-16 21:43 | 只看該作者
學習了,謝謝!!!
回復

使用道具 舉報

199#
ID:705241 發表于 2020-8-20 17:27 | 只看該作者
講的好,有收獲啊
回復

使用道具 舉報

200#
ID:813486 發表于 2020-8-22 10:27 | 只看該作者
受益匪淺
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本免费一区二区三区 | 亚州成人 | 成人在线观看黄 | 四虎影院一区二区 | 精品国产区 | 99精品欧美 | 久久久精品日本 | 日韩av高清 | 亚州精品天堂中文字幕 | 天堂精品 | 91精品国产91久久综合桃花 | 久久久久久999 | 久久黄网 | 国产精品毛片久久久久久久 | 在线一区 | 日韩欧美亚洲 | 国产精品免费视频一区 | 西西裸体做爰视频 | 国产日韩一区二区 | 国产精品无码久久久久 | 在线观看日本高清二区 | 国产区视频在线观看 | 嫩草国产 | 久久专区 | 久色激情| 国产精品免费在线 | 国产精品久久 | 全免费a级毛片免费看视频免费下 | 欧美男人天堂 | 久久99精品久久久久久秒播九色 | 国产一区二区三区久久久久久久久 | 黄色三级在线播放 | 天堂视频免费 | 亚洲激情一区二区 | 真人毛片 | 久久久久国产精品午夜一区 | 久久国产免费 | 成人精品一区 | 欧美精品久久 | 欧美国产亚洲一区二区 | 一区二区三区免费在线观看 |