最近在公司維護(hù)的項(xiàng)目中碰到一個(gè)解決了定位很久的bug , bug找到的時(shí)候發(fā)現(xiàn)犯了很低級(jí)的錯(cuò)誤——在中斷處理函數(shù)中調(diào)用了printf函數(shù),因?yàn)橹袛嗵幚砗瘮?shù)的調(diào)用了不可重入函數(shù),導(dǎo)致中斷丟失和系統(tǒng)位置錯(cuò)誤,這里直接導(dǎo)致嵌入式linux系統(tǒng)應(yīng)用進(jìn)程中的所有線程停掉,進(jìn)而導(dǎo)致看門狗進(jìn)程得不到喂狗,設(shè)備重啟。
本節(jié)主要是分享光城的實(shí)習(xí)期間如何快速閱讀一些源代碼,以及快速閱讀一些開(kāi)源庫(kù)。
PID,就是“比例(proportional)、積分(integral)、微分(derivative)”,是一種很常見(jiàn)的控制算法。
在使用 lvgl 庫(kù)的時(shí)候,筆者使用的V7版本的庫(kù),使用過(guò)程中發(fā)現(xiàn)網(wǎng)上關(guān)于V7版本的資料非常少,官網(wǎng)有文檔介紹其如何使用,但有些方面還不是很全面,而且網(wǎng)上現(xiàn)在的中文教程大多數(shù)是針對(duì)于V6版本的,V6和V7使用上的差異在有些方面還是挺大的,所以筆者也就想把自己在使用V7版本的庫(kù)的時(shí)候的一些心得記錄下來(lái)。
es在數(shù)據(jù)量很大的情況下(數(shù)十億級(jí)別)如何提高查詢效率?。窟@個(gè)問(wèn)題是肯定要問(wèn)的,說(shuō)白了,就是看你有沒(méi)有實(shí)際干過(guò) es,因?yàn)樯??其?shí) es 性能并沒(méi)有你想象中那么好的。
單片機(jī)程序?qū)懞弥?,我們都要把程序下載到單片機(jī)的內(nèi)存中,單片機(jī)才會(huì)按照程序員的邏輯執(zhí)行命令實(shí)現(xiàn)功能。之前也講過(guò)下載單片機(jī)的幾種方式,比如ISP下載,JTAG下載,下載文件的格式最常見(jiàn)的是hex文件,這個(gè)格式大家都是知道的,還有一種bin文件是單片機(jī)的下載文件。本文詳細(xì)介紹了這兩種格式的區(qū)別。
if...else 是所有高級(jí)編程語(yǔ)言都有的必備功能。但現(xiàn)實(shí)中的代碼往往存在著過(guò)多的 if...else。雖然 if...else 是必須的,但濫用 if...else 會(huì)對(duì)代碼的可讀性、可維護(hù)性造成很大傷害,進(jìn)而危害到整個(gè)軟件系統(tǒng)。現(xiàn)在軟件開(kāi)發(fā)領(lǐng)域出現(xiàn)了很多新技術(shù)、新概念,但 if...else 這種基本的程序形式并沒(méi)有發(fā)生太大變化。使用好 if...else 不僅對(duì)于現(xiàn)在,而且對(duì)于將來(lái),都是十分有意義的。今天我們就來(lái)看看如何“干掉”代碼中的 if...else,還代碼以清爽。
首先設(shè)定一個(gè)兩周入門計(jì)劃: 所謂的“兩周”,根據(jù)每個(gè)人的時(shí)間安排不同而不同。這里列出一個(gè)思路,僅供參考。
完成一個(gè)大的硬件工程,需要考慮的事情很多。所以,這對(duì)工程師的要求就高了些。且看下面是一個(gè)很牛叉的硬件工程師做的分享,希望能幫助到各位。
分享一篇比較好的文章,主要介紹編程規(guī)范和編程思想,對(duì)編程學(xué)習(xí)非常有指導(dǎo)意義,內(nèi)容有點(diǎn)長(zhǎng),和大家分分享一下。
Segger提供的ST例程都是使用J-Link進(jìn)行調(diào)試的,如果我們只有ST-Link仿真器那又該怎么辦呢?本文我們將介紹如何在Segger Embedded Studio 中使用ST-Link進(jìn)行調(diào)試。
學(xué)習(xí)單片機(jī)需要?jiǎng)邮?,不是照著課本去死記硬背。 所以學(xué)習(xí)單片機(jī)的第一個(gè)概念:確定好所學(xué)習(xí)的單片機(jī)具體型號(hào)。
網(wǎng)友說(shuō)自己做了兩年單片機(jī)相關(guān)的工作,最后發(fā)現(xiàn)不喜歡硬件,想轉(zhuǎn)到互聯(lián)網(wǎng)軟件,有沒(méi)有可能?單片機(jī)也分為軟件和硬件,只不過(guò)在小公司,軟件、硬件都是一個(gè)人在做,不會(huì)細(xì)分的很細(xì)。
8*8點(diǎn)陣是一種應(yīng)用廣泛的顯示器件,像戶外的顯示屏、點(diǎn)陣屏都是由點(diǎn)陣拼接而成。而點(diǎn)陣其實(shí)是發(fā)光二極管LED的矩陣。 在驅(qū)動(dòng)點(diǎn)陣時(shí),雖然具有專用的點(diǎn)陣驅(qū)動(dòng)芯片,如MAX7219,但是該芯片價(jià)格比較高,所以應(yīng)用并沒(méi)有很普遍。而74HC595和74HC138的組合來(lái)驅(qū)動(dòng)點(diǎn)陣應(yīng)用卻非常廣泛。
單片機(jī)的GPIO口驅(qū)動(dòng)能力有限,不能直接驅(qū)動(dòng)較大功率的負(fù)載,如果負(fù)載的功率較大必須要考慮采用驅(qū)動(dòng)功率器件的方式,比如說(shuō)三極管、MOS管以及其他的專用驅(qū)動(dòng)芯片。下面結(jié)合幾個(gè)典型的例子來(lái)介紹一下如何提高單片機(jī)的驅(qū)動(dòng)能力。
單片機(jī)和嵌入式,其實(shí)沒(méi)有什么標(biāo)準(zhǔn)的定義來(lái)區(qū)分他們,對(duì)于進(jìn)行過(guò)單片機(jī)和嵌入式開(kāi)發(fā)的開(kāi)發(fā)者來(lái)說(shuō),都有他們自己的定義,接下來(lái),就談?wù)勥@兩個(gè)概念的深入理解。
算法(Algorithm)指計(jì)算機(jī)解題的基本思想方法和步驟。算法的描述是對(duì)要解決一個(gè)問(wèn)題或要完成一項(xiàng)任務(wù)所采取的方法和步驟的描述,包括需要什么數(shù)據(jù)(輸入什么數(shù)據(jù)、輸出什么結(jié)果)、采用什么結(jié)構(gòu)、使用什么語(yǔ)句以及如何安排這些語(yǔ)句等。通常使用自然語(yǔ)言、結(jié)構(gòu)化流程圖、偽代碼等來(lái)描述算法。
很久之前就聽(tīng)說(shuō)st出了一個(gè)新版本的庫(kù),用于代替原來(lái)的標(biāo)準(zhǔn)庫(kù),非常好奇,但是一直沒(méi)有機(jī)會(huì)去體驗(yàn)。這次借著做畢設(shè)的機(jī)會(huì),嘗試著切換到新庫(kù)。官網(wǎng)介紹說(shuō),hal是一層硬件的抽象,看到這里,我非常激動(dòng),看來(lái)st終于意識(shí)到原來(lái)標(biāo)準(zhǔn)庫(kù)的問(wèn)題了,原來(lái)的標(biāo)準(zhǔn)庫(kù)非常依賴于具體硬件細(xì)節(jié),很難體現(xiàn)出使用庫(kù)的優(yōu)勢(shì),而且很難移植。同時(shí)我也非常好奇,st到底是如何把不同系列mcu的操作給封裝起來(lái)的,是不是足夠抽象,方便移植。
今天和客戶談技術(shù)需求的時(shí)候,談到了數(shù)據(jù)的有效性,客戶要求任何寫參數(shù)的數(shù)據(jù)都必須進(jìn)行校驗(yàn),校驗(yàn)算法可以自定義、也可以遵循常用的算法。校驗(yàn)的目的,是為了防止誤操作時(shí)刻保證數(shù)據(jù)的有效性。今天和大家分享一下幾種常用的校驗(yàn)算法。
單片機(jī)是一種可編程器件,單片機(jī)的出現(xiàn)使硬件設(shè)計(jì)變得更為簡(jiǎn)單,產(chǎn)品的功能也更強(qiáng)大,而程序就是單片機(jī)的靈魂。 目前功能稍微復(fù)雜一點(diǎn)的電子產(chǎn)品,都是以單片機(jī)為核心,再加以不通的外設(shè)電路實(shí)現(xiàn)不通的功能需求。 單片機(jī)的編程可以通過(guò)匯編語(yǔ)言和C語(yǔ)言來(lái)實(shí)現(xiàn)。