操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    單片機開發經驗總結

    [摘 要]總結單片機C語言編程的經驗和教訓。

    [關鍵詞]經驗教訓,單片機,函數,編程

    中圖分類號:TP273.4;TP18 文獻標識碼:A 文章編號:1009-914X(2017)14-0335-02

    [] up the and of C .

    [Key words] and ; -Chip / ; ; ;

    一、引言

    c 編寫的串口調試助手_c語言實現串口助手_c語言串口通信程序

    單片機,也被稱為“單片微型計算機”、“微控制器”和“嵌入式微控制器”[1],是指在一個集成芯片中,集成微處理器、定時/計數器、存儲器、通信部件和基本的I/O接口,即在一個芯片上實現一臺微型計算機的基本功能[2]。雖然它存儲量小、接口簡單、功能較低,但是控制能力強、可靠性高、低功耗、低電壓、系統擴展容易[1],體積小、價格便宜可大大降低各類開發的成本。

    最近幾年特別是開始從事3D打印開發工作以來,逐漸接觸了單片機,并開始做了一些單片機C語言編程的工作,到現在已經5、6年了,感覺是總結一下的時候了。

    二、經驗

    1.找到入口

    開始學習時總是一頭霧水,看示例程序也總感覺那么多文件不知從何開始c語言實現串口助手,后來想起以前用任何語言編任何程序實際都有一個整個程序開始的入口位置,仔細觀察果然發現單片機程序實際也都是從一個main函數開始進入的。就是在用戶程序中沒找到main函數的,也在所使用軟件的核心程序中找到了(比如軟件).

    不僅如此,單片機的main函數的內容都很有規律,一般都是前面做初始化工作,然后就是一個循環一直運行。以軟件為例,針對AVR系列單片機的核心main函數如圖1:

    c語言串口通信程序_c 編寫的串口調試助手_c語言實現串口助手

    其中init()是單片機核心部分的系統初始化函數,()是核心部分的變量初始化函數,setup()是用戶的硬件和變量的初始化函數,loop()是用戶運行的循環函數,其余.()、()是對串口設備的連接、中斷處理的通用函數。這樣一來用戶程序中基本就只需要編寫setup和loop就可以了,無需編寫main函數。

    找到了入口,就一下子找到了頭,可以對示例程序一步步研究下去,自己編程也知道從何開始了。

    2.單獨的設備測試程序

    在新增加一些外部設備時,我感覺不要一開始就把它加到整個程序中去,那樣經常會把自己弄混,出了錯都不知道原因在哪。

    最好先排除其他全部設備或盡量把無關的設備排除掉,單獨做一個簡單的專門針對這個設備的程序來測試,成功后再把它加入到整個工程中去。就是說要先基本確定這個設備單獨的初始化、運行都是正常的,再把它混合到大系統中觀察與其他設備的聯合運行情況,至少可以先排除某些錯誤、確定某些問題,在實踐中我感覺這樣做很有用。

    3.使用工具

    c語言實現串口助手_c 編寫的串口調試助手_c語言串口通信程序

    在增加比如LCD、EPROM之類的外部設備時,開始調試期間總是這樣那樣的不順利,特別是一些元件的協議不清楚的情況下。找供應商拿例程、上網查找資料當然是必要的,但我感覺這種時候示波器、邏輯分析儀之類也是很有用的c語言實現串口助手,至少可以先看清楚信號是否發送,是否發送得準確,然后可以再檢查其他部分,確定是哪部分的原因,是硬件接線出錯還是對它的設置出錯,給自己調試確定一個方向。

    比如有一次增加一個I2C的LCD屏,寫好程序后測試LCD屏卻無法顯示,開始一心以為是程序對屏的初始化設置有問題造成數據沒有發送出去,不斷修改參數卻一直無效,后來想起用示波器,一看才發現信號都是正確發出的,趕緊去檢查其他部分,很快發現是地址錯誤,一修改正確馬上就顯示正常了。

    所以適當的時候使用工具是編程測試中很好的輔助。

    三、教訓

    1.別忘了"喂狗"

    由于單片機自身抗干擾能力不強,尤其在一些條件比較惡劣、電磁干擾較強的場合,常會出現單片機因受外界干擾而導致死機或程序跑飛的現象,造成系統不能正常工作,業界通常采用"看門狗"技術來防止單片機死機,將死機的系統重新復位并使其正常工作[3]。常用的"看門狗"技術分為軟件"看門狗"和硬件"看門狗"。

    c 編寫的串口調試助手_c語言實現串口助手_c語言串口通信程序

    這里要討論的是軟件"看門狗"的問題。所謂軟件"看門狗"一般采用高級中斷的方式執行,通過在中斷程序中設置系統復位寄存器或對程序計數器賦予初始值的方式進行系統復位。同時在系統正常的主循環中適當插入"喂狗"指令來重置定時器值,說明系統是正常運行不需重新啟動。這樣當程序真正跑飛或進入死循環時,定時器因計時完成執行復位程序,就使系統復位[3]。

    用軟件實現"看門狗"時,最要緊的一條就是別忘記了"喂狗"。

    記得有一次,改造一個3D打印機的控制程序,因為新機型不需要加熱,于是把所有有關溫度的部分都刪掉,自認為減少了工作量肯定沒問題,結果一測試就發現程序不斷的重新啟動,費了一番力氣查找,才發現是不小心把"喂狗"的工作也給刪掉了,造成不斷重新啟動。所以很多時候要小心這些"喂狗"的使用,在循環等待的部分都要注意增加相關語句,而且喂狗時間的間隔必須小于設置的定時器中斷時間。

    2.小心設置中斷級別

    對于中斷級別的問題,一開始因為編寫的都是簡單程序,一般只有1、2個中斷,所以我是非常不重視的。

    直到有一次,工作中需要把單片機的CPU換掉,按照原來的程序把所有功能都原樣移植過去,好不容易把所有單獨的各元件功能都調通了,組合起來工作后大部分功能也都正常,卻發現有一個功能只是從通過SPI設備讀取接受命令換成了直接用串口接受命令,就經常出現死機無法正常工作的現象。當時一頭霧水,把軟件相關的很多部分拆開分析、測試、單步執行都沒有發現問題,又因為是一個隨機出現的問題,無法跟蹤,讓我頭疼了很久,直到有一天其他同事提醒我關于中斷級別的問題,我還有些不以為然,覺得以前都沒問題,現在也不應該有問題,但因為沒有頭緒,就抱著試試看的心態嘗試把幾個相關中斷級別降低了,結果奇跡發生,真的沒有再出問題了。事后考慮,換了新CPU,它對中斷級別的設置與原來的不同,造成實際串口中斷采用的是最高級別,其他的幾個定時器之類的中斷級別實際也是最高級別的,同時工作,在串口通訊頻繁的情況下,很容易造成沖突,出現工作不正常也就不奇怪了。

    c 編寫的串口調試助手_c語言實現串口助手_c語言串口通信程序

    通過這件事,讓我明白了設置中斷級別的重要性,以后每換一個新的CPU芯片都先去查資料,弄清楚它的中斷設置是如何設置的才確定各個功能的中斷級別,不再想當然。

    四、總結

    總之,這就是我這幾年編寫單片機C語言程序的一點心得和體會,希望對大家有用。

    參考文獻

    [1] 張迎新等.單片機初級教程-單片機基礎[M].北京:北京航空航天大學出版社,2006:2-5.

    [2] 陳黃飛.單片機計數的發展及應用探析[J].軟件導刊,2011,10(6):5-6.

    [3] 趙洪軍.軟硬件看門狗技術研究[J].電子世界,2012,04:13-15.

    作者簡介

    徐文,女,1973.4,湖南長沙人,碩士研究生,高級工程師,主要進行數據庫管理、圖象處理、運動控制、3D打印等的研究。

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有