日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

高電平穩(wěn)定時(shí)該如何處理呢?

lhl545545 ? 來源:玩轉(zhuǎn)單片機(jī) ? 作者:玩轉(zhuǎn)單片機(jī) ? 2020-06-10 14:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

相信很多道友都有對輸入IO 口進(jìn)行濾波的需求,比如按鍵輸入、紅外對管輸入等。這里魚鷹就以按鍵為例介紹如何進(jìn)行較為高效的濾波。我們以為接入單片機(jī)引腳的按鍵按下后(并彈起)電平變化應(yīng)該是這樣的:

高電平穩(wěn)定時(shí)該如何處理呢?

實(shí)際上卻是這樣的:

高電平穩(wěn)定時(shí)該如何處理呢?

首先思考一個(gè)問題,如果沒有進(jìn)行濾波,會有什么問題?一次按下過程可能被認(rèn)為多次按下,因?yàn)榘聪潞笥卸秳?dòng)過程,這個(gè)過程電平并不穩(wěn)定,導(dǎo)致單片機(jī)在很短的時(shí)間內(nèi)多次檢測到低電平狀態(tài)。這樣一來,本來只按下了一次,程序卻認(rèn)為按下了多次,這對按鍵功能會產(chǎn)生影響。如果將按鍵引腳設(shè)置為外部中斷觸發(fā),那么在極短的時(shí)間內(nèi)CPU將多次進(jìn)入中斷,影響中斷的性能(所以對于非數(shù)字接口,即沒有穩(wěn)定的高低電平的接口,如果不需要非常高的實(shí)時(shí)性,那么魚鷹不建議設(shè)置為外部中斷觸發(fā)方式)。那么我們該如何進(jìn)行處理呢?很自然的,因?yàn)榘聪逻^程中有抖動(dòng)期,我們就會想辦法跳過抖動(dòng)時(shí)間,然后再檢測電平變化,所以,V0.1 版本就應(yīng)運(yùn)而生,這也是郭天祥老師告訴我們初學(xué)者最簡單易懂的方式:V0.1

typedef enum { KEY_LEVEL_DOWN, // 假設(shè)低電平為按下 KEY_LEVEL_UP, }KeyLevelTypedef; KeyLevelTypedef get_key_level(){ return (KeyLevelTypedef)HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0); } // V0.1void key_scan(){ // 歡迎關(guān)注:魚鷹談單片機(jī) if(get_key_level() == KEY_LEVEL_DOWN) { HAL_Delay(20); // 假設(shè)抖動(dòng)時(shí)間 20 ms if(get_key_level() == KEY_LEVEL_DOWN) { key_flag = 1;// 按鍵按下標(biāo)志位 } } }對于初學(xué)者而言,這段代碼簡單易懂,但是對于工作多年的人來說,這種方式效率極其低下。有可能你會說,如果使用操作系統(tǒng),當(dāng)延時(shí)函數(shù)使用系統(tǒng)延時(shí),那么這段時(shí)間就可以切換到其他任務(wù)進(jìn)行處理,而不會浪費(fèi)CPU使其空轉(zhuǎn)了。但是如果這個(gè)任務(wù)本身功能比較復(fù)雜,那么這種處理會嚴(yán)重影響其他功能的執(zhí)行,所以這種代碼應(yīng)該不會出現(xiàn)在工作多年的工程師手中。那么是否有更高效的方式呢?有,就是記錄前后兩次電平的變化,通過比較兩次電平是否相等來確定電平是否穩(wěn)定(這個(gè)方式在《延時(shí)功能進(jìn)化論(合集)》有做簡單介紹)。V1.0

typedef enum { KEY_STATE_IDLE, // 按鍵空閑 KEY_STATE_DOWN, // 按鍵按下 KEY_STATE_FINISH, // 按鍵處理完成(由應(yīng)用程序設(shè)置) }KeyStateTypedef; KeyStateTypedef key_state;KeyLevelTypedef key_last_level; // 上次電平狀態(tài) // V1.0// 函數(shù)調(diào)用周期 20 ms(如何實(shí)現(xiàn)應(yīng)該不需要再說明了吧)void key_scan(){ // 歡迎關(guān)注:魚鷹談單片機(jī) KeyLevelTypedef temp; // 可不可以不使用這個(gè)中間變量? temp = get_key_level(); if(temp != key_last_level){ key_last_level = temp; return; } // 當(dāng)運(yùn)行到這里,說明電平已經(jīng)穩(wěn)定下來了 if(temp == KEY_LEVEL_DOWN){if(key_state == KEY_STATE_IDLE){ // 確保曾經(jīng)釋放過按鍵,這樣可以保證在按下時(shí)不會不停設(shè)置該標(biāo)志位 key_state = KEY_STATE_DOWN;// 按鍵按下標(biāo)志位 } } else{ if(key_state == KEY_STATE_FINISH){ // 防止多線程情況下同時(shí)修改 key_state = KEY_STATE_IDLE; // 釋放按鍵 } }}在這里,使用了兩個(gè)全局變量,一個(gè)是 key_state,一個(gè)是 key_last_level。前者共三種狀態(tài),這是為了防止按鍵掃描和按鍵處理程序不是順序執(zhí)行而設(shè)定的。當(dāng)你按下按鍵后,保證按鍵處理程序必然可以得到按下狀態(tài),同時(shí)只有釋放了按鍵之后才可以更改狀態(tài)位,然后才能再次觸發(fā)。這樣可以保證按鍵掃描和按鍵處理得以順序執(zhí)行(這里面的關(guān)系需要考慮清楚,否則的就會寫出有 BUG 的程序)。而后者只在本函數(shù)使用,所以不存在使用風(fēng)險(xiǎn)(前提是沒有多個(gè)任務(wù)同時(shí)調(diào)用該函數(shù),否則照樣有風(fēng)險(xiǎn))??梢钥吹皆摯a沒有任何延時(shí)函數(shù),簡單、高效,當(dāng)然這里有一個(gè)前提,那就是該函數(shù)的調(diào)用周期必須大于抖動(dòng)時(shí)間,但是也別太長,否則實(shí)時(shí)性不好。假設(shè)抖動(dòng)期時(shí)間為 20 ms,實(shí)現(xiàn) 20 ms 的調(diào)用周期有很多種方法:1、中斷定時(shí)器定時(shí)調(diào)用2、軟件定時(shí)器調(diào)用(需操作系統(tǒng))3、線程內(nèi)周期執(zhí)行該函數(shù)(需操作系統(tǒng))4、使用魚鷹介紹的方式(《延時(shí)功能進(jìn)化論之V2.5~V2.7(魚鷹強(qiáng)烈建議)》)我們再次看這個(gè)圖:

高電平穩(wěn)定時(shí)該如何處理呢?

如果我們使用 V1.0 的方式,我們就會發(fā)現(xiàn),當(dāng)程序運(yùn)行在抖動(dòng)期,因?yàn)楹瘮?shù)調(diào)用的時(shí)間大于抖動(dòng)時(shí)間,那么程序總是可以得到穩(wěn)定后的狀態(tài)。比如空閑狀態(tài)下(key_last_level為高電平),突然按下按鍵,假設(shè)在抖動(dòng)中期程序檢測到高電平,那么20 ms 后檢測的是低電平,顯然這是不相等的(key_last_level更新為低電平),那么程序就會執(zhí)行下一次,下一次即40 ms 后檢測肯定是低電平(如果不是,說明電平不穩(wěn)定),此時(shí)電平相等,即可認(rèn)為電平穩(wěn)定了。而如果在抖動(dòng)中期程序檢測到低電平,那么20 ms 后檢測的應(yīng)該還是低電平,那么程序認(rèn)為此時(shí)電平已經(jīng)穩(wěn)定了,那也沒有問題,因?yàn)樗呀?jīng)跳過了抖動(dòng)期。V2.0如果說,濾波只有按鍵這種抖動(dòng)的話,那么上述方式應(yīng)該算很不錯(cuò)了,但有時(shí)對IO濾波的需求比較復(fù)雜,那么上述方式只可參考,不可直接拿來對任何 IO 進(jìn)行濾波。而且很多時(shí)候,程序需要定時(shí)檢測多個(gè) IO 的電平狀態(tài),當(dāng)電平發(fā)生變化時(shí),我們能及時(shí)通知應(yīng)用層,而且只在電平發(fā)生變化時(shí)才進(jìn)行通知。但與此同時(shí)我們需要在電平穩(wěn)定之后才通知,而不是變化后馬上進(jìn)行通知,否則可能在電平抖動(dòng)時(shí)多次通知。所以針對這種需求,我們需要設(shè)計(jì)一個(gè)更加通用一些的濾波函數(shù),能應(yīng)對所有數(shù)字 IO 的濾波(包括按鍵)。其實(shí)按鍵濾波已經(jīng)包含了濾波思想,只是不夠通用,需要進(jìn)一步改進(jìn)。

typedef enum { LEVEL_LOW, // LEVEL_HIGH, }LevelTypedef;

typedef struct { uint32_t last_time; // 上次時(shí)間 LevelTypedef last_level; // 上次電平狀態(tài)}FilterParaTypedef;

// V2.0// para 濾波變量,level 當(dāng)前檢測電平狀態(tài), time 當(dāng)前時(shí)間戳,單位 1 ms, stable_time希望電平穩(wěn)定的時(shí)間uint8_t filter(FilterParaTypedef *para, LevelTypedef level, uint32_t time, uint32_t stable_time){ // 歡迎關(guān)注:魚鷹談單片機(jī) if(level != para-》last_level){ para-》last_level = level; // 更新當(dāng)前電平狀態(tài) para-》last_time = time; // 更新電平變化的時(shí)刻 return 0; // 電平未穩(wěn)定 } if(time - para-》last_time 》 stable_time){ // 這兩個(gè)條件可以放在一起進(jìn)行 && 判斷嗎? return 1; // 需要上報(bào) } return 0; // 電平穩(wěn)定時(shí)間不夠長}

這個(gè)代碼的思想就是,當(dāng)電平不穩(wěn)定時(shí),更新當(dāng)前時(shí)間戳,一旦電平不再變化,并且持續(xù)的時(shí)間夠長(這個(gè)時(shí)間由用戶決定),那么返回 1 表示電平已經(jīng)穩(wěn)定了(這個(gè)函數(shù)沒有調(diào)用周期限制,調(diào)用周期不同,會產(chǎn)生一些影響,這個(gè)和濾波時(shí)間精度有關(guān))。這個(gè)代碼看起來挺簡單的,也好像沒啥問題,但實(shí)際上是存在問題的??吹侥莻€(gè)穩(wěn)定時(shí)間判斷條件了嗎?如果下次繼續(xù)執(zhí)行這個(gè)函數(shù),那么程序依然返回 1,所以它總是會在穩(wěn)定后不停的返回 1(判斷條件總是成立),這樣一來,這個(gè)函數(shù)并不能實(shí)現(xiàn)電平變化后才進(jìn)行通知,也就是說調(diào)用者無法通過返回值直接決定下一步動(dòng)作??赡苣銜f,如果在返回 1 之前先更新一下時(shí)間戳呢?看過魚鷹之前筆記的應(yīng)該知道,這種方式會周期性返回 1,即如果希望電平穩(wěn)定時(shí)間為 10 ms,那么在電平穩(wěn)定后,每隔 10 ms 返回 1,這是我們不希望看到的。那么有沒有什么解決辦法呢?當(dāng)然。因?yàn)槲覀冎幌M谧兓笤俜€(wěn)定時(shí)才返回1,即我們既希望短暫電平變化并不返回1,而那些長時(shí)間穩(wěn)定的電平能在穩(wěn)定時(shí)間閾值之后返回1,又希望在穩(wěn)定之后只返回一次1,之后電平變化后如果再次穩(wěn)定才返回1。有點(diǎn)繞口,看圖好了:

高電平穩(wěn)定時(shí)該如何處理呢?

因?yàn)槟壳芭袛鄺l件總是返回1,所以我們需要增加限制條件,讓它不總是返回1。簡單的辦法是,增加一個(gè)變量,用于記錄上次的穩(wěn)定后的電平,比如這樣:

typedef enum { LEVEL_LOW, // LEVEL_HIGH, }LevelTypedef;

typedef struct { uint32_t last_time; // 上次時(shí)間 LevelTypedef last_level; // 上次電平狀態(tài) LevelTypedef last_stable_level; // 上次穩(wěn)定的電平狀態(tài) }FilterParaTypedef;

// V2.0// para 濾波變量,level 當(dāng)前檢測電平狀態(tài), time 當(dāng)前時(shí)間戳,單位 1 ms, stable_time希望電平穩(wěn)定的時(shí)間uint8_t filter(FilterParaTypedef *para, LevelTypedef level, uint32_t time, uint32_t stable_time){ // 歡迎關(guān)注:魚鷹談單片機(jī) if(level != para-》last_level){ para-》last_level = level; // 更新當(dāng)前電平狀態(tài) para-》last_time = time; // 更新電平變化的時(shí)刻 return 0; // 電平未穩(wěn)定 } if(time - para-》last_time 》 stable_time){ // 這兩個(gè)條件可以放在一起進(jìn)行 && 判斷嗎? if(level != para-》last_stable_level) { // 電平穩(wěn)定時(shí)間夠長且電平發(fā)生了變化 para-》last_stable_level = level; return 1; // 需要上報(bào) } } return 0; // 電平穩(wěn)定時(shí)間不夠長}

這樣一來,下一次繼續(xù)執(zhí)行時(shí),就不會再次返回1了。但是以上代碼其實(shí)是有一個(gè)隱含問題的,那就是如果兩次長時(shí)間電平之間有一個(gè)短時(shí)間的不同電平存在,那么也只會上報(bào)一次,即返回一次1,即如下情況:

高電平穩(wěn)定時(shí)該如何處理呢?

如果說這是你想要的效果,那么恭喜你,你不用更改代碼;但如果這不是你想要的結(jié)果,那這個(gè)代碼就存在BUG,畢竟變化的時(shí)間雖然短,但還是變化了的嘛(這個(gè)問題稍后討論)。還有一個(gè)問題,看過魚鷹以前筆記的人都知道,這種計(jì)時(shí)方式是存在問題的,因?yàn)槿绻愕碾娖椒€(wěn)定時(shí)間很長,長到四字節(jié)計(jì)時(shí)器溢出了,那么就可能出問題。不過在這里,即使出現(xiàn)溢出,也沒關(guān)系,結(jié)果是一樣的,因?yàn)槿绻娖椒€(wěn)定時(shí)間很長了,那么肯定已經(jīng)上報(bào)過一次了,后面肯定也不需要再次上報(bào)了。V2.5V2.0方式確實(shí)很高效,但是為了只在變化時(shí)上報(bào)一次,就要增加一個(gè)變量還是很不爽的,如果說魚鷹沒有找到好的方式,那么魚鷹會采用的,但湊巧的是,魚鷹想到了更好的方式,不需要增加這個(gè)變量也能達(dá)到效果。一個(gè)用于計(jì)時(shí),一個(gè)用于記錄上次電平,這兩個(gè)變量肯定是不可或缺的。但是如果你仔細(xì)思考一下,就會發(fā)現(xiàn),所謂的記錄上次電平,其實(shí)是在變化時(shí)就被快速更改了的,它記錄的是實(shí)時(shí)電平變化,而計(jì)時(shí)是在變化后更新時(shí)間戳,穩(wěn)定時(shí)判斷穩(wěn)定時(shí)間,如果我們把計(jì)時(shí)順序換一下,會如何呢?即,穩(wěn)定時(shí)更新時(shí)間戳,變化時(shí)判斷穩(wěn)定時(shí)間,而記錄電平的變量只記錄已穩(wěn)定的電平,會怎么樣?

typedef struct { uint32_t last_time; // 上次時(shí)間 LevelTypedef last_stable_level; // 上次穩(wěn)定的電平狀態(tài) }FilterParaTypedef;

// V2.5// para 濾波變量,level 當(dāng)前檢測電平狀態(tài), time 當(dāng)前時(shí)間戳,單位 1 ms, stable_time希望電平穩(wěn)定的時(shí)間uint8_t filter(FilterParaTypedef *para, LevelTypedef level, uint32_t time, uint32_t stable_time){ // 歡迎關(guān)注:魚鷹談單片機(jī) if(level != para-》last_stable_level){ if(time - para-》last_time 》 stable_time) { para-》last_stable_level = level; // 如果這次電平穩(wěn)定時(shí)間足夠長,那么記錄這次穩(wěn)定的電平 return 1; // 上報(bào) } return 0; // 不上報(bào),同時(shí)不更新時(shí)間戳(穩(wěn)定時(shí)間不夠) }

para-》last_time = time; // 不斷更新電平穩(wěn)定時(shí)間,保存電平穩(wěn)定時(shí)的時(shí)間戳 return 0; // 不上報(bào)}

上面的代碼比V2.0簡單了許多,但也稍微難理解,但如果你仿真測試一番,其實(shí)也容易理解。測試代碼(rt_tick_get() 函數(shù)用于獲取當(dāng)前時(shí)間,單位 ms):

FilterParaTypedef FilterPara;

void task(void *parameter){ while(1) { LevelTypedef temp = (LevelTypedef)HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0); if(filter(&FilterPara, temp, rt_tick_get(), 100)) { rt_kprintf(“stable level is %u

”,temp); } rt_thread_delay(5); } }

當(dāng)你修改PB0電平時(shí),可得到如下測試結(jié)果:

高電平穩(wěn)定時(shí)該如何處理呢?

在這個(gè)例子中,要求電平穩(wěn)定時(shí)間20 ms,而線程的執(zhí)行周期為 5 ms,即電平采樣率為5 ms,當(dāng)你的手速點(diǎn)擊足夠快時(shí)(如果不夠快,可以加長 20 ms),那么應(yīng)該不會有任何打印信息輸出。需要注意的是,采樣率比較關(guān)鍵,如果電平變化快,而采樣率設(shè)置的不合適,那么不能完全反應(yīng)外界引腳電平的變化,這個(gè)和“香農(nóng)定理”有關(guān),超出魚鷹的范圍,就不多說了。V3.0有的時(shí)候需求可能要求只需要穩(wěn)定一個(gè)高電平或者低電平才上報(bào),其他時(shí)候不上報(bào),那么該如何修改V2.5的代碼呢?上報(bào)時(shí)加入限制條件即可,如下所示:

// V3.0// para 濾波變量,level 當(dāng)前檢測電平狀態(tài), time 當(dāng)前時(shí)間戳,單位 1 ms, stable_time希望電平穩(wěn)定的時(shí)間uint8_t filter(FilterParaTypedef *para, LevelTypedef level, uint32_t time, uint32_t stable_time){ // 歡迎關(guān)注:魚鷹談單片機(jī) if(level != para-》last_stable_level){ if(time - para-》last_time 》 stable_time) { para-》last_stable_level = level; // 如果這次電平穩(wěn)定時(shí)間足夠長,那么記錄這次穩(wěn)定的電平 if(level == LEVEL_HIGH) // LEVEL_HIGH 可以作為 para 的成員變量參數(shù)傳入,方便適應(yīng)其他電平 { return 1; // 上報(bào) } } return 0; // 不上報(bào),同時(shí)不更新時(shí)間戳(穩(wěn)定時(shí)間不夠) }

para-》last_time = time; // 不斷更新電平穩(wěn)定時(shí)間,保存電平穩(wěn)定時(shí)的時(shí)間戳 return 0; // 不上報(bào)}

這樣一來,只會在高電平穩(wěn)定時(shí)才會進(jìn)行上報(bào),而低電平卻不會上報(bào)。但是這種方式同樣有一個(gè)隱藏限制,那就是低電平必須能穩(wěn)定一段時(shí)間,否則下次高電平無法上報(bào),照樣有 V2.0 的限制,如何打破這種限制呢?V3.1如果我們的需求是,變化后高電平穩(wěn)定時(shí)上報(bào)一次,如果之后存在低電平,然后又變?yōu)楦唠娖剑⑶曳€(wěn)定了,那么希望也能上報(bào),那該如何處理呢?

高電平穩(wěn)定時(shí)該如何處理呢?

代碼如下:

// V3.1// para 濾波變量,level 當(dāng)前檢測電平狀態(tài), time 當(dāng)前時(shí)間戳,單位 1 ms, stable_time希望電平穩(wěn)定的時(shí)間uint8_t filter(FilterParaTypedef *para, LevelTypedef level, uint32_t time, uint32_t stable_time){ // 歡迎關(guān)注:魚鷹談單片機(jī) if(level != para-》last_stable_level){ if(level != LEVEL_HIGH) // LEVEL_HIGH 可以作為 para 的成員變量參數(shù)傳入,方便適應(yīng)其他電平 { para-》last_stable_level = level; // 快速切換狀態(tài) // para-》last_time = time; // 是否有必要同時(shí)更新時(shí)間戳呢? } else if(time - para-》last_time 》 stable_time) { para-》last_stable_level = level; // 如果這次電平穩(wěn)定時(shí)間足夠長,那么記錄這次穩(wěn)定的電平 if(level == LEVEL_HIGH) // LEVEL_HIGH 可以作為 para 的成員變量參數(shù)傳入,方便適應(yīng)其他電平 { return 1; // 上報(bào) } } return 0; // 不上報(bào),同時(shí)不更新時(shí)間戳(穩(wěn)定時(shí)間不夠) }

para-》last_time = time; // 不斷更新電平穩(wěn)定時(shí)間,保存電平穩(wěn)定時(shí)的時(shí)間戳 return 0; // 不上報(bào)}

V3.2為了讓這個(gè)濾波代碼(事實(shí)上已經(jīng)不僅僅承擔(dān)濾波功能,同時(shí)承擔(dān)了變化并穩(wěn)定后上報(bào)功能)更加通用,可以這樣設(shè)計(jì):

typedef enum { LEVEL_LOW, // LEVEL_HIGH, }LevelTypedef;

typedef struct { uint32_t last_time; // 上次時(shí)間 LevelTypedef last_stable_level; // 上次穩(wěn)定的電平狀態(tài) LevelTypedef filter_level; // 希望濾波的電平}FilterParaTypedef;

// V3.2// para 濾波變量,level 當(dāng)前檢測電平狀態(tài), time 當(dāng)前時(shí)間戳,單位 1 ms, stable_time希望電平穩(wěn)定的時(shí)間uint8_t filter(FilterParaTypedef *para, LevelTypedef level, uint32_t time, uint32_t stable_time){ // 歡迎關(guān)注:魚鷹談單片機(jī) if(level != para-》last_stable_level){ if(level != para-》filter_level) // LEVEL_HIGH 可以作為 para 的成員變量參數(shù)傳入,方便適應(yīng)其他電平 { para-》last_stable_level = level; // 快速切換狀態(tài) // para-》last_time = time; // 是否有必要同時(shí)更新時(shí)間戳呢? } else if(time - para-》last_time 》 stable_time) { para-》last_stable_level = level; // 如果這次電平穩(wěn)定時(shí)間足夠長,那么記錄這次穩(wěn)定的電平 if(level == para-》filter_level) // LEVEL_HIGH 可以作為 para 的成員變量參數(shù)傳入,方便適應(yīng)其他電平 { return 1; // 上報(bào) } } return 0; // 不上報(bào),同時(shí)不更新時(shí)間戳(穩(wěn)定時(shí)間不夠) }

para-》last_time = time; // 不斷更新電平穩(wěn)定時(shí)間,保存電平穩(wěn)定時(shí)的時(shí)間戳 return 0; // 不上報(bào)}

因?yàn)楹瘮?shù)沒有全局變量,所以可以認(rèn)為它是一個(gè)可重入函數(shù)(前提是傳入的參數(shù)指針地址不同),可放心使用。
責(zé)任編輯:pj

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

    關(guān)注

    6078

    文章

    45610

    瀏覽量

    674574
  • 濾波
    +關(guān)注

    關(guān)注

    10

    文章

    713

    瀏覽量

    58110
  • 高電平
    +關(guān)注

    關(guān)注

    6

    文章

    225

    瀏覽量

    22896
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    stm32cubeide 編譯報(bào)錯(cuò)如何處理?

    報(bào)錯(cuò)如何處理 \"make -j8 all\" terminated with exit code -1073741819. Build might be incomplete.
    發(fā)表于 04-28 07:47

    SAF sCheck 關(guān)機(jī)測試如何處理

    to read from the NvM during the next cycle? 預(yù)計(jì)如何處理? Br, 哈里什 R
    發(fā)表于 04-15 09:31

    晶振的神奇作用:驅(qū)動(dòng)電路與穩(wěn)定時(shí)

    穩(wěn)定時(shí)鐘兩個(gè)方面詳細(xì)解讀。首先,我們來談?wù)劸д裨隍?qū)動(dòng)電路中的重要作用。在很多電子設(shè)備中,例如集成電路、數(shù)字邏輯門等,都需要一個(gè)穩(wěn)定的時(shí)鐘信號來進(jìn)行同步工作。而晶振
    的頭像 發(fā)表于 02-26 16:26 ?718次閱讀
    晶振的神奇作用:驅(qū)動(dòng)電路與<b class='flag-5'>穩(wěn)定時(shí)</b>鐘

    單片機(jī)Io口檢測到高電平的最短時(shí)間是多少?

    請教一下大神單片機(jī)Io口檢測到高電平的最短時(shí)間是多少?
    發(fā)表于 01-14 08:20

    請問沒有用到的I/0如何處理?

    沒有用到的I/0如何處理
    發(fā)表于 01-12 06:29

    CW32通用定時(shí)器—輸出比較

    通道的輸出模式。輸出模式就是設(shè)定:當(dāng)計(jì)數(shù)值大于|小于門限值的時(shí)候,是輸出高電平還是低電平。這里設(shè)定的是計(jì)數(shù)值小于門限時(shí)輸出高電平。第二步就是設(shè)置這個(gè)關(guān)鍵的門限值,我們可以直接找到“通
    發(fā)表于 12-11 06:45

    單片機(jī)TTL和CMOS電平知識

    。 早期的器件多是TTL電平,如早先的54系列和74系列。現(xiàn)在的大部分器件使用的工藝都是CMOS工藝。 輸出電平高電平Uoh >=2.4v,低電平Uol <= 0.4
    發(fā)表于 12-03 08:10

    ?NL27WZ126 3態(tài)高電平使能雙路緩沖器技術(shù)解析與應(yīng)用指南?

    安森美 NL27WZ126 3態(tài)高電平使能雙路緩沖器是MiniGate? 高性能雙路非反相緩沖器,工作采用1.65V至5.5V電源。高電平使能特性讓這些緩沖器可以在使能時(shí)提供有源輸出,使它們適合
    的頭像 發(fā)表于 11-25 13:50 ?941次閱讀
    ?NL27WZ126 3態(tài)<b class='flag-5'>高電平</b>使能雙路緩沖器技術(shù)解析與應(yīng)用指南?

    MCU未使用IO如何處理?

    (1) 配置為輸出模式并驅(qū)動(dòng)到固定電平 方法: 設(shè)置為輸出模式,驅(qū)動(dòng)至高電平(VDD)或低電平(GND)。 電平選擇需結(jié)合外部電路: 若外部電路有上拉電阻 → 驅(qū)動(dòng)為低
    發(fā)表于 11-24 07:40

    Stduio使用wifi模塊出錯(cuò)如何處理?

    外設(shè)為潘多拉IOT開發(fā)板,使用Stduio配置了wifi框架,但是代碼里在配置wifi模式時(shí),沒有找到wlan0這個(gè)設(shè)備,wifi整個(gè)功能也用不了,請問應(yīng)該如何處理。使用正點(diǎn)原子資料包里的rtthread測試demo,wifi工作正常,wifi模塊硬件沒有問題。
    發(fā)表于 10-10 08:18

    在rt-thread studio環(huán)境中之前編譯成功的項(xiàng)目(1234)重命名(test)后出現(xiàn)大批量的錯(cuò)誤是什么原因造成?如何處理

    在rt-thread studio環(huán)境中之前編譯成功的項(xiàng)目(1234)重命名(test)后出現(xiàn)大批量的錯(cuò)誤是什么原因造成?何處理?這很困擾,為啥重命名就能出現(xiàn)這樣的情況?
    發(fā)表于 09-17 06:58

    當(dāng)I/O上電初始配置為準(zhǔn)高電平時(shí),需要多少個(gè)下拉電阻來保持I/O低電平

    當(dāng)I/O上電初始配置為準(zhǔn)高電平時(shí),需要多少個(gè)下拉電阻來保持I/O低電平?
    發(fā)表于 08-21 07:54

    靜力水準(zhǔn)儀在測量過程中遇到誤差如何處理?

    靜力水準(zhǔn)儀在測量過程中遇到誤差如何處理?靜力水準(zhǔn)儀在工程沉降監(jiān)測中出現(xiàn)數(shù)據(jù)偏差時(shí),需采取系統(tǒng)性處理措施。根據(jù)實(shí)際工況,誤差主要源于環(huán)境干擾、設(shè)備狀態(tài)、安裝缺陷及操作不當(dāng)四類因素,需針對性解決。靜力
    的頭像 發(fā)表于 08-14 13:01 ?1108次閱讀
    靜力水準(zhǔn)儀在測量過程中遇到誤差如<b class='flag-5'>何處理</b>?

    Texas Instruments TLC3555-Q1高速CMOS定時(shí)器數(shù)據(jù)手冊

    Texas Instruments TLC3555-Q1高速CMOS定時(shí)器是采用TI CMOS工藝制造的單片式定時(shí)電路。定時(shí)器與CMOS、TTL和MOS邏輯完全兼容,工作頻率高達(dá)3M
    的頭像 發(fā)表于 07-24 15:41 ?1018次閱讀
    Texas Instruments TLC3555-Q1高速CMOS<b class='flag-5'>定時(shí)</b>器數(shù)據(jù)手冊

    為什么 KT142C 芯片 BUSY 腳空閑高電平僅 0.2V?附低功耗模式配置指南

    文檔圍繞 KT142C 芯片 busy 引腳展開,引腳為 15 腳 PA12,播放時(shí)輸出低電平,空閑時(shí)本應(yīng)輸出 3.3V 高電平,但芯片空閑 5 秒進(jìn)入 2μA 超低功耗狀態(tài)后,busy 腳呈高阻
    的頭像 發(fā)表于 06-16 09:38 ?1708次閱讀
    為什么 KT142C 芯片 BUSY 腳空閑<b class='flag-5'>高電平</b>僅 0.2V?附低功耗模式配置指南
    泸州市| 开化县| 巴南区| 肥乡县| 白朗县| 昌江| 威海市| 卓尼县| 汶川县| 疏附县| 桦甸市| 治多县| 富顺县| 富源县| 白城市| 陕西省| 屏东县| 中方县| 读书| 石家庄市| 兴宁市| 曲水县| 英德市| 文山县| 湖口县| 杭锦旗| 乌拉特中旗| 西乌| 崇仁县| 新源县| 太白县| 松原市| 锦屏县| 常熟市| 京山县| 漯河市| 乐昌市| 鹤峰县| 乐陵市| 兴仁县| 太保市|