0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

MCU死機(jī)跑馬燈不跑了怎么解決

GReq_mcu168 ? 來源:工程師的廢紙簍 ? 作者:Tony Yang ? 2021-11-03 09:16 ? 次閱讀

銷售GG在工作群里:“弟兄們,快醒醒,咱現(xiàn)場(chǎng)的跑馬燈不跑了?!?/p>

還在加班的程序猿:“已經(jīng)查過了,程序沒Bug?!?/p>

帶娃玩的硬件攻城獅:“硬件沒問題,這都是照官方Demo弄的?!?/p>

刷劇的測(cè)試MM小聲嘀咕:“我可都是按用例測(cè)的,沒出問題啊?!?/p>

還是攻城獅有主意:“要不叫FAE過來看看?”

“好好好”,意見終于統(tǒng)一了,F(xiàn)AE也該起床換衣服了。..。..

作為21世紀(jì)的嵌入式攻城獅,誰還沒見過MCU死機(jī)啊,作為一個(gè)二手的程序猿,也見過大大小小的事故現(xiàn)場(chǎng),于是乎,經(jīng)過半個(gè)多月的思想斗爭(zhēng),我最后做出了一個(gè)違背祖宗的決定,把祖?zhèn)靼倌甑拿胤o償?shù)墨I(xiàn)給國家。

1. 現(xiàn)場(chǎng)講故事弟兄們終于盼來了FAE,拉上手,快坐下,咱們說說知心話:“是你芯片問題吧,快點(diǎn)認(rèn)了哈,這才好給老板交代啊。”

FAE:“GG,這恐怕不好吧,咱先看是不是馬累了,跑不動(dòng)了,要休息啊?!?/p>

程序猿:“不會(huì)的,我一直給它喂狗的?!?/p>

FAE:“沒關(guān)系,我們還是先坐下,從頭捋一把,看看下面這張圖,聽我講講故事吧。”

2. 故事開始MCU死機(jī)一定是有原因的,往往有的流于表面,有的隱藏很深,特別是那種偶發(fā)的故障,直讓人掉頭發(fā),遇到這種情況,最擔(dān)心的恐怕就是程序猿了,所以看一個(gè)程序猿的水平從脫帽開始,而死機(jī)的問題,需要從查找現(xiàn)象開始。下面的故事分享會(huì)按照?qǐng)D中的現(xiàn)象標(biāo)號(hào)來講述,我們先進(jìn)入第一個(gè)故事:

1.1.1電源的故事MCU上電就不能工作,肯定會(huì)先看電源,結(jié)果有兩種:

電源有問題:這種情況下,硬件攻城獅應(yīng)該就沖上來了,檢查硬件設(shè)計(jì)或生成問題,比如峰值電源超過設(shè)計(jì)Spec,原理圖/PCB是否設(shè)計(jì)有問題,板子焊接是否正確。

電源沒問題:等等,電源沒問題,怎么還能歸出這個(gè)問題呢?當(dāng)然有可能,你見過畫PCB封裝時(shí)把Top和Bottom層畫反了的么?

1.1.2 晶體的故事上了點(diǎn)年紀(jì)的攻城獅應(yīng)該還記得,現(xiàn)在很火的一款MCU早年間(大概07,08年)剛推出的時(shí)候,大面積出現(xiàn)晶體不起振的問題,民間傳說已經(jīng)到了拍下桌子就停振的程度。實(shí)際測(cè)試發(fā)現(xiàn)只有少數(shù)的日系晶體能完美規(guī)避該問題,以至后來官方給出Application Note(AN2867)去講解晶體的選型,以及該MCU推薦使用的晶體型號(hào)。

6495bbb2-37bd-11ec-82a8-dac502259ad0.png

多年以后的今天,有些MCU已經(jīng)支持檢測(cè)到外部晶體失效后自動(dòng)切換到內(nèi)部時(shí)鐘,并觸發(fā)中斷的功能。不少用戶也在產(chǎn)品測(cè)試的過程中,加入短接晶體的測(cè)試來驗(yàn)證系統(tǒng)運(yùn)行的可靠性。

1.1.3 硬件配置的故事MCU為了實(shí)現(xiàn)靈活的功能,會(huì)提供一些Boot配置管腳,MCU在上電Boot過程中會(huì)采樣這些管腳狀態(tài)來進(jìn)入不同的模式,正常啟動(dòng)后就可以用作普通IO,常見的有從內(nèi)部Flash啟動(dòng),SD卡啟動(dòng),QSPI啟動(dòng),或者進(jìn)入ISP模式等。所以當(dāng)Boot管腳配置出現(xiàn)錯(cuò)誤時(shí),MCU斷然時(shí)無法正常啟動(dòng)的。

前不久就有過這樣一次不同尋常的加班之旅:使用德系MCU的新板子做回來了,該系列MCU不是第一次用,這次只是做了些外設(shè)的改動(dòng),不牽扯最小系統(tǒng)的修改,但是,仿真器始終連不上板子,奇怪的是10塊板子中,只有2塊有該問題。硬件GG比較給力,一晚上就發(fā)現(xiàn)了問題:出問題的板子MCU配置管腳電平與默認(rèn)配置不符,該芯片的配置管腳可以定義Debug口Pin的位置,由于錯(cuò)誤的配置導(dǎo)致連接仿真器的Pin已經(jīng)不具備Debug功能,而錯(cuò)誤的電平是由于硬件設(shè)計(jì)時(shí),MCU管腳可能不夠用,故將配置管腳也連到FPGA上備用,恰巧出問題的板子FPGA燒的測(cè)試固件沒有將未用到的管腳設(shè)置高阻。

65937450-37bd-11ec-82a8-dac502259ad0.png

有些時(shí)候,ROM確實(shí)是一只攔路虎,當(dāng)你發(fā)現(xiàn)配置管腳都正確的時(shí)候,芯片居然還不能工作。故事是這樣的,用戶首次使用MCU,根據(jù)自己的需求按照參考設(shè)計(jì)裁剪了一部分電路,打板回來后發(fā)現(xiàn),無法連接仿真器,硬件GG對(duì)比參考板測(cè)量了所有信號(hào)都滿足要求,從芯片內(nèi)部的DCDC輸出也正常,說明芯片已經(jīng)正常跑起來了,最后還是老馬識(shí)途,反復(fù)Review原理圖后,大神發(fā)現(xiàn)自己的板子裁掉了EVK的USB電路,由于是新做的板子,flash里沒有可以跑起來的正常代碼,ROM會(huì)進(jìn)入串口下載模式,而進(jìn)入該模式前,ROM已經(jīng)關(guān)閉了JTAG接口,因?yàn)橥獠繘]有給USB供電,所以ROM對(duì)USB的初始化會(huì)失敗而卡死在這里,而解決方案也很簡(jiǎn)單,只要給USB VDD供電即可。

這里還有個(gè)51單片機(jī)的故事,當(dāng)年這個(gè)產(chǎn)品支持熱插拔,背板通過RS485進(jìn)行數(shù)據(jù)通訊,實(shí)際現(xiàn)場(chǎng)發(fā)現(xiàn),新掛設(shè)備后,會(huì)有非常小的概率上報(bào)錯(cuò)誤幀。經(jīng)過仔細(xì)檢查發(fā)現(xiàn),該單片機(jī)默認(rèn)上電會(huì)有短暫的ISP模式,該模式下如果總線上有數(shù)據(jù)能對(duì)上ISP協(xié)議,單片機(jī)就會(huì)發(fā)送數(shù)據(jù),所以插拔過程中可能會(huì)出現(xiàn)錯(cuò)誤的數(shù)據(jù)發(fā)送到RS485總線上形成沖突。解決方案是再生產(chǎn)燒寫的時(shí)候配置2個(gè)bit位,讓其上電后不進(jìn)入ISP模式即可。

1.1.4 MCU上電的故事有不少的MCU會(huì)在Datasheet中規(guī)定上電的時(shí)序的要求,如果設(shè)計(jì)不能滿足該要求,有可能會(huì)出現(xiàn)上電無法工作的現(xiàn)象。有些MCU在這種情況下,可以通過外部復(fù)位的方式重新運(yùn)行,這樣可以通過添加外部看門狗來規(guī)避該問題,有些MCU外部Pin的復(fù)位也無法讓它重新正常工作,只能重新上下電,那就必須通過電源設(shè)計(jì)來保證。

65b4f0da-37bd-11ec-82a8-dac502259ad0.png

敲黑板啦,這張圖并不是單單講上電哦,還有掉電的過程,當(dāng)板子突然掉電,從3.3V掉到1.xV后又重新恢復(fù)到3.3V,那也是有可能無法正常工作的,掉電必須到200mV以下再上電才會(huì)比較安全。

從圖上也能看出,一般都是要求斜率盡可能的陡一些,上電快一些,當(dāng)然也有一些芯片太快了也不行,具體還要看手冊(cè)。有了這個(gè)參數(shù)可并不一定能滿足哦,硬件設(shè)計(jì)時(shí),攻城獅從成本考慮往往會(huì)選擇不帶使能的LDO,這種芯片基本前級(jí)有電壓后級(jí)就輸出,所以前級(jí)上電慢,輸出就會(huì)比較緩。MCU一般標(biāo)稱最低工作電壓1.8V,但實(shí)際在1.1V左右就開始POR了,代碼可能低于1.8V就開始跑起來了,如果此時(shí)代碼加大負(fù)載,比如開啟PLL,而此時(shí)LDO的輸出能力也有限,VDD就會(huì)掉一個(gè)個(gè)坑,后面就真的是一個(gè)坑了。..。..

所以,使用帶使能端的LDO可以讓輸入電壓達(dá)到比較高的值后再打開輸出,以保證后級(jí)輸出的線性及斜率夠快。

如果真掉到坑里會(huì)出現(xiàn)什么結(jié)果呢,送大家?guī)讉€(gè)知識(shí)點(diǎn):

MCU停機(jī)無法啟動(dòng),這是大家都不愿意看到的

MCU偏偏能啟動(dòng),還能工作,但是內(nèi)部模塊初始化不完全導(dǎo)致功能異常,最常見的是Memory

MCU能正常工作,這種產(chǎn)品往往都是有住持開過光的,售價(jià)應(yīng)該不菲

硬件改不了,那有沒有降低問題概率的軟件workaround呢?能想到的就是軟件上來就把看門狗,BOD/LVD都打開(有些芯片默認(rèn)是關(guān)的),如果能設(shè)置閾值就調(diào)到合理值。

還有些電源域比較復(fù)雜的MCU,需要通過PSWITCH管腳來控制內(nèi)部DCDC的輸出,當(dāng)主VDD出現(xiàn)瞬間掉電(假設(shè)200ms后恢復(fù)),外部的復(fù)位電路會(huì)對(duì)POR進(jìn)行復(fù)位,但是由于時(shí)間太短不足以上PSWITCH產(chǎn)生復(fù)位信號(hào)去復(fù)位內(nèi)部的DCDC模塊,最后會(huì)看到出現(xiàn)VDD回溝后,MCU的DCDC掛了,外部高速晶振也無法起振。簡(jiǎn)單粗暴的解決方案就是把POR的復(fù)位信號(hào)和PSWITCH接到一起。

下面還有個(gè)和上電有關(guān)的故事,但和時(shí)序無關(guān)。

有個(gè)應(yīng)用,需要每次上電的時(shí)候從外部的SPI Flash中拷貝固件到MCU內(nèi)部的Flash中運(yùn)行,產(chǎn)品本身生成很多年了,突然有個(gè)現(xiàn)場(chǎng)發(fā)現(xiàn)好幾個(gè)模塊不能正常工作。取回板卡發(fā)現(xiàn),MCU內(nèi)部的一段Flash無法訪問了。查手冊(cè)發(fā)現(xiàn),該芯片對(duì)內(nèi)部Flash操作時(shí),如果對(duì)相同地址進(jìn)行多次編程但不擦寫就會(huì)出現(xiàn)該sector無法訪問的問題。出問題的模塊是通過POE進(jìn)行供電的,出問題的現(xiàn)場(chǎng)由于是臨時(shí)供電,所以經(jīng)常斷電,每次上電都會(huì)進(jìn)行編程操作,由于業(yè)務(wù)邏輯復(fù)雜存在這樣的風(fēng)險(xiǎn)。安全一點(diǎn)的做法應(yīng)該是加入檢驗(yàn)機(jī)制,如果內(nèi)部的Flash固件已經(jīng)是最新的,則不需要反復(fù)燒寫。畢竟內(nèi)部的Flash也有擦寫壽命的。

1.1.5~8 IO口的故事MCU需要通過IO口來輸入輸出,所以它需要與外部連接。那它就有一些規(guī)范需要遵守,比如極限的電壓、電流,靜電等級(jí)

設(shè)計(jì)上要盡量避免IO口先上電的情況,圖中芯片所講的5V tolerant是指VDD 》 1.8V的情況,如果實(shí)際情況 《 1.8V呢?廠家肯定是不保的啊。

硬件設(shè)計(jì)IO的時(shí)候,該做隔離就隔離,別為了省點(diǎn)小錢兒后面再大整改,有些用戶發(fā)現(xiàn)產(chǎn)線上有個(gè)別芯片工作正常,但是功耗特別大,快到1A了,拆下來做IV測(cè)試發(fā)現(xiàn)個(gè)別管腳已經(jīng)燒掉了,仔細(xì)一琢磨,這片子還是不錯(cuò)的,畢竟沒給燒壞嘍。

講到IO就不得不提下熱插拔,絕大多數(shù)的芯片都是不支持的,帶電反復(fù)熱插拔都會(huì)對(duì)芯片造成一定的損傷,如果確實(shí)無法避免,可以考慮長短針的方式讓電源和GND先接觸,就像USB那樣。

1.2.1 初始化的故事作為曾經(jīng)的程序猿小白,能Ctrl + C來的代碼絕不會(huì)多看它一眼,直接就上板跑了。搞了很多的笑話,不同的硬件設(shè)計(jì),用了同一份代碼,有的跑飛了,有的直接就不能連仿真器了,更絕的還會(huì)燒MOS。總之,板子的初始化最好拉硬件攻城獅一起,細(xì)細(xì)的對(duì)一遍,或者做一個(gè)表格讓硬件GG填好。

針對(duì)時(shí)鐘初始化,不要使用while()這樣的等待,如果長時(shí)間失敗,有可能外部晶體電路有問題,可以切換到內(nèi)部的FRO繼續(xù)工作,如果需要也可以通過對(duì)外接口將晶體初始化失敗上報(bào)。

1.2.2 硬件問題的軟件事故幾年前遇到一個(gè)量產(chǎn)的項(xiàng)目,發(fā)現(xiàn)有1ps的板子無法正常工作,回退軟件版本不能解決問題,由于是量產(chǎn)項(xiàng)目,沒有預(yù)留仿真器接口,而且對(duì)外只有1個(gè)UART通訊接口,還無法正常通訊,單從板子上也看不出什么問題,只有1個(gè)LED燈上電后會(huì)亮起,通過查看原理圖發(fā)現(xiàn),默認(rèn)LED是不會(huì)亮起了,應(yīng)該是軟件點(diǎn)的,或者M(jìn)CU壞掉了。檢查代碼發(fā)現(xiàn),軟件會(huì)初始化包括串口和LED在內(nèi)的外設(shè),然后去外部EEPROM中讀取配置信息,如果配置信息有特殊字符,則進(jìn)入測(cè)試模式,而測(cè)試模式代碼并未實(shí)現(xiàn)任何功能。最終發(fā)現(xiàn),問題是測(cè)試人員通過上位機(jī)修改了EEPROM中的內(nèi)容,讓MCU進(jìn)入了沒有任何功能的測(cè)試模式。這個(gè)問題其實(shí)也可以通過ABA替換測(cè)試,發(fā)現(xiàn)問題跟著板子走,從而定位到root cause

1.2.3 BOD/LVD配置之前已經(jīng)見過這哥倆的重要性了,如果有閾值的配置,也需要結(jié)合自身板子的設(shè)計(jì)來,之前有遇到過用戶把LVD設(shè)置到2.5V產(chǎn)生解復(fù)位,但板子的VDD供電才1.8V。

2.1.1 看門狗的故事相信有一些攻城獅并不知道,看門狗正常喂也會(huì)給MCU咬死。

舉例1. 德系品牌MCU內(nèi)部的看門狗默認(rèn)開啟恒復(fù)位功能,芯片第二次產(chǎn)生看門狗復(fù)位后立即鎖定芯片并將IO口保持,這個(gè)對(duì)PLC的應(yīng)用還是蠻重要的,它可以避免因?yàn)檐浖霈F(xiàn)問題后反復(fù)持續(xù)的復(fù)位而導(dǎo)致被控設(shè)備的誤操作

舉例2. 美系品牌MCU內(nèi)部的看門狗,即使不開window模式,復(fù)位間隔依舊不能太快,必須大于20個(gè)bus clock,否則也會(huì)咬死。

看門狗使用時(shí)切記使用芯片內(nèi)部專用的時(shí)鐘,如果使用外部時(shí)鐘或者總線時(shí)鐘,一旦時(shí)鐘掛了,看門狗一樣無法把MCU拉回來。

2.1.2 MCU復(fù)位死機(jī)MCU能復(fù)位就說明它不想死,但往往最終還是架不住掛掉的命運(yùn)。所以,復(fù)位源往往就是死機(jī)的一個(gè)前兆,通過它我們就能分析到大致的死因,就好比老西醫(yī)看片子,老中醫(yī)看舌苔。這里我們?cè)俳榻B一個(gè)類似老中醫(yī)的硬件問題:EMC問題

經(jīng)測(cè)試,由它導(dǎo)致的MCU復(fù)位可以獲取到不同的復(fù)位源,包括電源復(fù)位,Reset Pin復(fù)位,看門狗復(fù)位。導(dǎo)致的死機(jī)也包括HardFault_Handler,BusFault_Handler, UsageFault_Handler等等。

考慮到產(chǎn)品的穩(wěn)定可靠,有些MCU支持禁止reset pin或者可以將其復(fù)用為輸出以降低受到干擾后復(fù)位的現(xiàn)象。但是有些MCU不支持該功能,這種情況下就比較考驗(yàn)硬件攻城獅的經(jīng)驗(yàn)了。最后再嘮10塊錢兒的,工藝越先進(jìn),EMC越有挑戰(zhàn)。

2.1.3 Flash編程大多數(shù)MCU都是內(nèi)置Flash并支持IAP的,使用過程中,還是要注意些好。當(dāng)年美系大廠收購的Cortex-M3的MCU據(jù)說僅支持上百次的擦寫。還有些MCU的等待延時(shí)需要設(shè)置大一些,否則也會(huì)出現(xiàn)讀寫不一致的情況。相關(guān)的參數(shù)Datasheet一般都會(huì)列出:

當(dāng)然,這里面還有一個(gè)比較重要的問題就是每個(gè)sector的大小,因?yàn)槲覀冎繤lash都需要先擦再寫,所以一些解耦的變量希望各自獨(dú)占一個(gè)sector,sector越小其利用率越高。

2.2 要命的低功耗做低功耗的產(chǎn)品,對(duì)設(shè)計(jì)的要求會(huì)更高,因?yàn)樗枰?xì)細(xì)的扣每一個(gè)模塊甚至每一個(gè)pin的功耗。而死機(jī)與無法喚醒本身又非常的相似,處理起來還是比較棘手的。這里僅提供些思路

如果是軟件喚醒后對(duì)標(biāo)志判斷出錯(cuò)導(dǎo)致的問題,功耗往往會(huì)比低功耗模式要大。

有些低功耗模式BOD和看門狗是關(guān)著的,所以電源的波動(dòng)確實(shí)會(huì)可能死機(jī)。

電池供電的產(chǎn)品最好硬件上能獲取電量并通知MCU做相應(yīng)的處理。

2.3 程序猿的夢(mèng)魘還有些時(shí)候,MCU在受到一些外部干擾的時(shí)候,會(huì)出現(xiàn)一些錯(cuò)誤,有些錯(cuò)誤是可以軟件恢復(fù)的,只要clear下寄存器就可以了,有些是不可恢復(fù)的,這個(gè)一般要靠看門狗。早幾年遇到一個(gè)項(xiàng)目,現(xiàn)場(chǎng)發(fā)現(xiàn)一個(gè)板子無法工作,現(xiàn)象是Modbus通訊失敗,但主循環(huán)的LED燈還在閃爍,說明MCU本身沒有死掉,掛上仿真器查看,原來是UART口上出現(xiàn)了幀錯(cuò)誤,而軟件沒有做相關(guān)的處理導(dǎo)致接收失敗。只要在軟件中添加相關(guān)的中斷服務(wù)函數(shù)即可修復(fù)該Bug。

還有些時(shí)候,程序猿睡的太晚,迷迷糊糊做出一些Bug導(dǎo)致業(yè)務(wù)出錯(cuò),這也時(shí)常有的事情,比如使用RTOS時(shí)沒考慮優(yōu)先級(jí)反轉(zhuǎn),幾個(gè)任務(wù)相互卡死。..。..

3. 故事結(jié)束通過這些故事,我們明白了一個(gè)道理,想讓燈兒不停,馬兒就要吃飽。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17312

    瀏覽量

    352207
  • 硬件
    +關(guān)注

    關(guān)注

    11

    文章

    3377

    瀏覽量

    66378
  • 電池
    +關(guān)注

    關(guān)注

    84

    文章

    10672

    瀏覽量

    130829

原文標(biāo)題:兄弟們,出事了,咱現(xiàn)場(chǎng)的跑馬燈不跑了

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TPL5010死機(jī)時(shí),DONE一直保持高電平,當(dāng)超過看門狗的設(shè)定時(shí)間后,MCU會(huì)被PL5010復(fù)位嗎?

    項(xiàng)目中需要添加長時(shí)間的硬件看門狗電路,目前考慮使用TPL5010,手冊(cè)中介紹將DONE置為高電平來實(shí)現(xiàn)喂狗操作,現(xiàn)在有一個(gè)疑問,假如MCU死機(jī)時(shí),DONE一直保持高電平,當(dāng)超過看門狗的設(shè)定時(shí)間后,MCU會(huì)被PL5010復(fù)位嗎
    發(fā)表于 11-11 06:07

    電弧打火機(jī)方案開發(fā)-電弧點(diǎn)煙器集成SOC芯片EN40\\EN604系列

    ,主要負(fù)責(zé)如下的功能: 1、開盒蓋接通電源。 2、接通電源時(shí)顯示電量,通常通過LED燈顯示,如4顆LED燈表示不同電量水平。 3、按下開關(guān),電量指示燈顯示為跑馬燈狀態(tài),電弧打火機(jī)點(diǎn)火。 4、點(diǎn)火超過10秒
    發(fā)表于 10-23 11:00

    EN40電弧打火機(jī)集成SOC芯片-電弧點(diǎn)煙器集成MCU定制IC

    %。 3、按下開關(guān),電量指示燈顯示為跑馬燈狀態(tài),電弧打火機(jī)點(diǎn)火。 4、點(diǎn)火超過10秒,自動(dòng)關(guān)閉。 5、充電時(shí),4顆LED指示燈根據(jù)電量百分比25%、50%、75%、100%依次亮起,充滿時(shí)全部點(diǎn)亮
    發(fā)表于 10-23 10:58

    基于51單片機(jī)的跑馬燈/流水燈系統(tǒng)

    具體實(shí)現(xiàn)功能(1)9種LED流水燈模式通過按鍵進(jìn)行切換,數(shù)碼管顯示流水燈模式。(2)通過加減按鍵可以切換每種LED流水燈的速度。仿真演示視頻:設(shè)計(jì)介紹51單片機(jī)簡(jiǎn)介51單片是一種低功耗、高性能CMOS-8位微控制器,擁有靈巧的8位CPU和可編程Flash,使得51單片機(jī)為眾多嵌入式控制應(yīng)用系統(tǒng)提供靈活、高效的解決方案。本設(shè)計(jì)所使用的芯片可兼容以下所有的51系列單片機(jī)(包括AT系列和STC系列)。資料內(nèi)容仿真實(shí)現(xiàn)(protues8.7)本設(shè)計(jì)利用protues8.7軟件實(shí)現(xiàn)仿真設(shè)計(jì),具體如圖。程序(Keil5)本設(shè)計(jì)利用KEIL5軟件實(shí)現(xiàn)程序設(shè)計(jì)。程序運(yùn)行結(jié)果如圖:全部內(nèi)容全部資料包括程序(keil5)、protues仿真(protues8.7)、開發(fā)資料、資料使用介紹、仿真視頻、程序講解視頻、仿真講解視頻、最小系統(tǒng)介紹視頻等。資料獲取https://docs.qq.com/doc/DT2JKeWhQZGZJd2Jm
    的頭像 發(fā)表于 10-22 14:12 ?297次閱讀
    基于51單片機(jī)的<b class='flag-5'>跑馬燈</b>/流水燈系統(tǒng)

    基于51單片機(jī)的多模式音樂跑馬燈

    具體實(shí)現(xiàn)功能 1、16個(gè)發(fā)光二極管做跑馬燈,跑馬燈有10種模式。 2、按鍵可以切換跑馬燈模式,且跑馬燈速度可以用按鍵進(jìn)行控制。 3、數(shù)碼管顯示當(dāng)前的
    的頭像 發(fā)表于 10-22 14:10 ?482次閱讀
    基于51單片機(jī)的多模式音樂<b class='flag-5'>跑馬燈</b>

    Keil uVision5 stm32跑馬燈實(shí)驗(yàn)錯(cuò)誤

    新人剛接觸stm32,距離點(diǎn)亮LED燈編程只有一步之遙了! 還得請(qǐng)教各位老師問題在哪, 對(duì)著《STM32庫開發(fā)實(shí)戰(zhàn)指南》示例已經(jīng)修改了幾次錯(cuò)誤,還是存在錯(cuò)誤
    發(fā)表于 10-18 18:17

    《DNK210使用指南 -CanMV版 V1.0》第十二章 跑馬燈實(shí)驗(yàn)

    第十二章 跑馬燈實(shí)驗(yàn) 本章實(shí)驗(yàn)將介紹如何使用CanMV讓Kendryte K210控制板載的雙色LED閃爍,以實(shí)現(xiàn)跑馬燈的效果。通過本章的學(xué)習(xí),讀者將學(xué)習(xí)到在CanMV下控制Kendryte
    發(fā)表于 10-10 09:27

    在GD32F407跑了freeRTOS,中斷調(diào)用xEventGroupSetBitsFromISR函數(shù)后就會(huì)死機(jī),為什么?

    在GD32F407跑了freeRTOS,串口接收使用了DMA+IDLE中斷來實(shí)現(xiàn)不定長接收,串口的IDLE中斷中接收完數(shù)據(jù)后,通過事件通知線程執(zhí)行解析,但是中斷中調(diào)用xEventGroupSetBitsFromISR函數(shù)后就會(huì)死機(jī)
    發(fā)表于 07-26 06:37

    LED燈帶斷點(diǎn)續(xù)傳是什么意思

    led幻彩跑馬燈帶分帶斷點(diǎn)續(xù)傳和不帶斷點(diǎn)續(xù)傳的。燈帶斷點(diǎn)續(xù)傳是指采用雙信號(hào)線交叉?zhèn)鬏數(shù)姆桨?,?dāng)其中一個(gè)信號(hào)中斷后,另一條備用信號(hào)線能繞開故障點(diǎn),將信號(hào)傳輸?shù)较乱粋€(gè)像素點(diǎn)。簡(jiǎn)單來說就是一個(gè)燈珠壞了
    發(fā)表于 07-18 18:20

    鴻蒙ArkTS聲明式組件:Marquee

    跑馬燈組件,用于滾動(dòng)展示一段單行文本。僅當(dāng)文本內(nèi)容寬度超過跑馬燈組件寬度時(shí)滾動(dòng),不超過時(shí)不滾動(dòng)。
    的頭像 發(fā)表于 06-25 15:52 ?471次閱讀
    鴻蒙ArkTS聲明式組件:Marquee

    CubeMx生成的最簡(jiǎn)單程序Stm32F407用Jlink無法仿真是怎么回事?

    最近了解了一下CubeMX工具,用它生成了最簡(jiǎn)單的GPIO跑馬燈程序,下載到407芯片里無法運(yùn)行,用JLinkV8無法仿真調(diào)試,每當(dāng)程序運(yùn)行到HAL_Init()函數(shù),進(jìn)入函數(shù)后調(diào)用
    發(fā)表于 04-22 06:14

    STM8L151做的跑馬燈PB0和PB4上電閃爍是什么原因?qū)е碌模?/a>

    我用STM8L151做的跑馬燈PB0和PB4上電閃爍,請(qǐng)各位幫忙分析一下,謝謝!
    發(fā)表于 04-11 08:20

    stm32H750使用FreeRTOS有時(shí)死機(jī)的原因?

    stm32H750使用FreeRTOS,偶爾會(huì)出現(xiàn)所有線程停止運(yùn)行的狀況(流水指示燈不閃,程序不跑),此時(shí)點(diǎn)擊觸摸屏觸發(fā)一下串口中斷,所有的線程又會(huì)恢復(fù)運(yùn)行,從堆棧調(diào)用情況看,有點(diǎn)像是串口發(fā)送
    發(fā)表于 03-18 07:54

    請(qǐng)問如何用一個(gè)mcu監(jiān)測(cè)另一個(gè)mcu是否死機(jī)

    板子上有兩個(gè)mcu,如何用小mcu監(jiān)視大mcu是否死機(jī)
    發(fā)表于 03-08 06:06

    TC397的TOM和STM會(huì)沖突怎么解決?

    TC397 我們打開STM中斷和TOM模塊功能,檔兩個(gè)模塊單獨(dú)工作沒有問題,檔兩個(gè)同時(shí)工作,運(yùn)行2秒多,系統(tǒng)中斷就不跑了,各位大俠有什么解決方案嗎,謝謝
    發(fā)表于 02-01 06:17