在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

當單片機遇到多個模塊的數據需要處理,應該怎么辦?

貿澤電子設計圈 ? 來源:未知 ? 作者:李倩 ? 2018-03-09 13:51 ? 次閱讀

這里利用一個實際發生的例子,針對初級工程師經常犯的一個小錯誤,或者經常要走的一個彎路,做了針對性的糾正。希望可以幫到大家,文筆不好,文章中有敘述不清的地方大家多多指教。

這篇文章我不是想說編程的規范性的東西,如果你想讓自己的程序文件最起碼直觀的看起來美觀、可讀性強,推薦找華為的“C語言編程規范”。

我只想說一說當我們的單片機遇到多個模塊的數據需要處理,類似于“多任務”時我們應該怎么辦?

背景是這樣的,9月份開始安排一個工程師開始做電動汽車交流充電樁機械設計部分由公司機械結構部門負責。充電樁的電子部分總體上分為X個部分(用到的資源),電阻觸摸屏(RS232),M1卡讀寫(RS232),電能計量表(RS485),語音提示(SPI),電力開關(繼電器IO),通訊接口(RS485、CAN)。

工程師做的過程非常勤奮,期間也是困難重重,改了很多個版本,第二年6月總算把充電樁立起來了。

咱們來驗收一下吧,結果發現讀卡的時候不能處理觸摸屏,播放語音的時候不能處理讀卡,語音播放不能打斷或者跳躍,反正就是所有事件必須一個一個按部就班的來,一旦操作錯誤就需要多次執行、等待、甚至重新來過。

一個工作3年多的工程師怎么會把產品做成這樣呢?看看程序吧!

一看不要緊,嚇一跳!整個的程序是沒有邏輯的,一條線就往下寫……

While(1){//上電進入主程序 或 觸發觸摸屏//播放提示語音Delay();//等待播放完畢//讀取M1卡信息Delay();//等待讀卡數據返回//播放提示語音Delay();//等待播放完畢//M1卡數據交互,判定下一步操作及提示Delay();//等待數據處理完畢…………}

這里說這個工程師基本上對于自己設計的產品沒有任何的整體概念,或者說對自己開發的程序用到設計上會有怎樣的實際效果根本就不清楚。

他犯了幾個我們在程序開發過程中最忌諱的幾個問題:

1、 delay(死等)這類函數只在應該實驗室驗證某個功能過程中用到,在實際的產品開發時無論是主循環while中,還是其調用的函數中,亦或是中斷服務程序中絕對不可以用到。

2、 產品設計的各個子模塊之間的邏輯關系太強,例如:必須等待播音完畢才能讀卡進入下一步操作等。

我們講,產品設計中只有各個事件處理模塊間的邏輯關系弱化,才能更加靈活地進行處理。例如:兩個事件A和B,如果程序開發時將A做成B事件的必要條件,B事件的觸發就必須等待A事件的發生。反之,如果A事件作為B事件處理的一個特殊情況,那么程序開發起來就變得靈活很多。

3、 沒有考慮到單片機本身是一個單核單任務的架構,每一個事件都會獨占CPU內核,當多個任務模塊同時存在時我們應該對各個事件進行區分,我們應當分情況、分事件實時性要求等區分對待。

那么針對于這樣的問題,或者是遇到類似的項目我們應該如何處理呢?

幾條建議:

1、將硬件系統區分為獨立單元單獨做成底層驅動函數和應用函數,并且函數正常應該有參數和返回值,其中返回值是必要的。如何衡量這類函數呢?這類函數可移植性強,只要一個.h文件和一個.c文件就可以隨意放到任何工程中。例如:語音播放、M1讀卡、485處理等等。

2、將1中的所有函數進行時間評估,評估點有兩個。一個是函數的執行時間t,第二個是函數的周期性發生的時間T,一個最基本的條件是t < T,理想情況應該是t << T。

3、建立一個集中邏輯處理函數,在這個函數中對1中的各個函數進行調度。這個函數發揮的作用相當于嵌入式系統中的系統調度。這種調度是整個硬件邏輯中所有事件處理的調度,它的目的是完成一個處理過程,但是絕不依賴于任意事件的必要處理過程。這樣就將問題2中提到的事件間的邏輯關系弱化了,處理起來變得十分靈活,使得各個關系不在相互必要。

4、為了保證前面內容的正常實施還需要針對各類事件的周期,建立一個必要的時間管理函數,時間函數的基礎一般情況下由一個內部定時器的中斷來完成,中斷的周期一般我們考慮5-10ms。按照實際需求將N個定時器中斷定義為一個事件處理的周期TT,這個周期應該保證處理完最惡劣情況可能發生的所有t,且保證TT < T。

5、 這其中也有例外,一些實時性要求高的事件應當用中斷完成。其中中斷處理函數的處理事件應盡量短,時間要求參見2。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6039

    文章

    44583

    瀏覽量

    636526
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10882

    瀏覽量

    212236

原文標題:當單片機遇到多個模塊的數據需要處理,應該怎么辦?

文章出處:【微信號:Mouser-Community,微信公眾號:貿澤電子設計圈】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    52單片機測控轉速怎么辦

    52單片機測控轉速怎么辦?程序怎么寫?上位機采用MODBUS協議數值設置速度,經驗數據控制轉速。。。怎么辦啊?
    發表于 06-25 23:35

    如何利用單片機高效地并行處理多個外設通信?

    現在寫代碼一直會遇到這樣的問題:單片機處理某一個外設請求的時候,如何兼顧到其他的外設請求,簡而言之就是單片機如何能高效地并行處理
    發表于 10-14 22:10

    NRF24L01模塊無法實現電腦向單片機數據怎么解決?

    有兩塊NRF24L01模塊,一塊是轉USB串口,另一塊是插在開發板上的,目前可以實現單片機向電腦傳數據,無法實現電腦向單片機數據
    發表于 06-10 09:25

    一個系統中需要用到多個按鍵的時候怎么辦

    需要用到多個按鍵的時候怎么辦呢?就像數碼管一樣,該如何解決多個按鍵輸入問題?這里就引入矩陣鍵盤的概念:鍵盤中按鍵數量較多時,為了減少I/O口的占用,通常將按鍵排列成矩陣形式。在矩陣式
    發表于 01-21 07:49

    DMA有何功能?多個DMA請求一起來怎么辦

    DMA有哪些功能呢?與DMA相關庫函數有哪些呢?DMA有何功能?多個DMA請求一起來怎么辦?
    發表于 01-27 07:11

    請問單片機串口不夠用怎么辦

    做一個設計用的STC12C5A60S2單片機,有三個模塊需要用RXD和TXD串口,但是單片機只有兩個串口怎么辦?三個
    發表于 09-20 06:49

    51單片機不能識別紅外循跡模塊發出的的高電平怎么辦

    51單片機不能識別紅外循跡模塊發出的的高電平怎么辦
    發表于 10-18 06:09

    51單片機不能識別紅外循跡模塊發出的的高電平怎么辦

    51單片機不能識別紅外循跡模塊發出的的高電平怎么辦
    發表于 10-23 07:02

    主板壞了怎么辦

    主板壞了怎么辦? 大家用組裝機的朋友,常遇到主板壞了,不懂的常不知如何處理,其實有些故障是很容易排除的,現在這個時代,將主板拿出去
    發表于 05-22 08:54 ?1.2w次閱讀

    單片機的程序開發經常會出現那些錯誤

    的東西,如果你想讓自己的程序文件最起碼直觀的看起來美觀、可讀性強,推薦找華為的“C語言編程規范”。我只想說一說當我們的單片機遇到多個模塊數據需要
    的頭像 發表于 01-09 10:41 ?4949次閱讀

    單片機遇到狀態機 入門QP

    單片機遇到狀態機前言前些日子在微信上看到李肖遙的公眾號,里面系統講述了QP框架,我很有感觸。我用QP框架很多年了,一開始是使用QM和QPC++,到后來拋棄了QM,直接使用QPC裸寫程序,到后來
    發表于 01-17 12:03 ?9次下載
    <b class='flag-5'>當</b><b class='flag-5'>單片機遇到</b>狀態機 入門QP

    單片機遇到多個模塊數據需要處理應該怎么辦

    這篇文章我不是想說編程的規范性的東西,如果你想讓自己的程序文件最起碼直觀的看起來美觀、可讀性強,推薦找華為的“C語言編程規范”。我只想說一說當我們的單片機遇到多個模塊數據
    發表于 02-09 10:44 ?2次下載
    <b class='flag-5'>當</b><b class='flag-5'>單片機遇到</b><b class='flag-5'>多個</b><b class='flag-5'>模塊</b>的<b class='flag-5'>數據</b><b class='flag-5'>需要</b><b class='flag-5'>處理</b>,<b class='flag-5'>應該</b><b class='flag-5'>怎么辦</b>?

    器件的工作頻率較高時怎么辦

    器件的工作頻率較高時怎么辦 隨著科技的不斷進步,許多電子器件需要工作在較高頻率下以滿足越來越復雜的應用需求。然而,較高的工作頻率也意味著器件面臨著更多的挑戰和問題。因此,器件的工作
    的頭像 發表于 08-29 16:25 ?835次閱讀

    單片機沒有DAC外設功能怎么辦

    在消費電子行業,難免有時為了省成本而出現需要用到DAC而單片機沒有DAC外設的情況,那么遇到這種情況怎么辦呢?
    的頭像 發表于 09-14 16:46 ?1783次閱讀
    <b class='flag-5'>單片機</b>沒有DAC外設功能<b class='flag-5'>怎么辦</b>

    linux用gdb調試遇到函數調用怎么辦

    linux用gdb調試遇到函數調用怎么辦? 在Linux上使用GDB調試時,遇到函數調用是一個常見的情況。函數調用可能涉及到多個函數、多個
    的頭像 發表于 01-31 10:33 ?735次閱讀
    主站蜘蛛池模板: 中文字幕一区二区在线观看| 亚洲一区二区三区免费| 欧美另类69| 性欧美1819hd| 在线观看免费精品国产| 国产在线操| 天天综合天天色| 五月天婷婷在线观看高清| 国产色视频一区| 色噜噜狠狠色综合欧洲| 色天使色婷婷丁香久久综合| 欧美高清视频一区| 色老头久久久久久久久久| 日本成本人三级在线观看2018| 男人的天堂天堂网| 日本高清视频成人网www| 免费亚洲成人| 俺去久久| 国产 高清 在线| 教官的好爽好深h片段| 免费毛片软件| 国产毛片一区二区三区精品| 久久久久久久国产精品电影| 国产片翁熄系列乱在线视频| 亚洲最新黄色网址| 亚洲精品mv在线观看| 欧美午夜一区| 欧美极品在线| 伊人久久亚洲综合| 最新久久免费视频| 天天噜噜噜| 可以免费看的黄色片| 美女张开腿让男人桶爽| 国产98色在线| 免费看又爽又黄禁片视频1000| 欧美成人性高清观看| 国产精品久久久久久久成人午夜| 四虎4545www国产精品| 狠狠色丁香婷婷综合小时婷婷| 好色999| 在线www 天堂网在线|