Obsah:
- Krok 1: Požiadavky na hardvér a softvér
- Krok 2: Pochopenie problému
- Krok 3: Konfigurácia STM32CubeMX
- Krok 4: Vývoj softvéru Keil
- Krok 5: Záver
Video: Odpojenie tlačidla STM32CubeMX s prerušením: 5 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
Ahoj, v tomto návode sa pokúsim poskytnúť svoje jednoduché riešenie na zabránenie odrazu tlačidiel, čo je veľmi vážny problém. Na internete existuje veľa videí, ktoré ponúkajú riešenie tohto problému, ale žiadne z nich nie sú určené na externé prerušenie. Vo všetkých týchto videách je stlačenie tlačidla kontrolované metódou hlasovania, ktorá je neúčinná. Začnime teda!
Krok 1: Požiadavky na hardvér a softvér
Hardvérové požiadavky:
- Vývojová doska STM32 ARM
- Počítač
Požiadavky na softvér:
- STM32CubeMX
- Keil uVision5
Krok 2: Pochopenie problému
Pokúšame sa teda nájsť riešenie problému s odrážaním tlačidiel. Preto musíme problému porozumieť. Keď teda stlačíme tlačidlo, mal by prísť stav, ktorý je opačný ako predchádzajúci stav. Ak napríklad bola VYSOKÁ, musí byť NÍZKA a ak bola NÍZKA, potom musí byť VYSOKÁ. Toto je však ideálny stav (v PROTEUS:)) V skutočnosti, keď stlačíme tlačidlo, začne skákať medzi VYSOKÝMI a NÍZKYMI, než príde do nečinného stavu. Takže predstiera, že bolo niekoľkokrát stlačené, čo spôsobuje problémy. Čo by sme teda mali urobiť?
Tu chcem poznamenať, že v tomto prípade použijeme externé prerušenie na detekciu stlačenia tlačidla. Potom, čo zistíme stlačenie tlačidla, musíme chvíľu počkať, napríklad 50 mS, aby sme dosiahli pohotovostný stav a znova skontrolovali, či je tlačidlo v pohotovostnom stave alebo nie. Ak je v nečinnom stave, môžeme pokračovať v našej úlohe. Pozrime sa teda na kód:)
Krok 3: Konfigurácia STM32CubeMX
Najprv teda musíme pre naše tlačidlo povoliť externé prerušenie (tu predpokladám, že používate zisťovaciu dosku STM32F407VG):
- Na karte „Pinout a konfigurácia“kliknite na pin PA0, ktorý je pripojený k tlačidlu, a zvoľte GPIO_EXTI0, ktorý na tomto pine umožňuje externé prerušenie.
- Zmeňte „štítok používateľa“špendlíka na „tlačidlo_ push“alebo čokoľvek, čo chcete.
Potom musíme nakonfigurovať časovač, aby sa vytvorilo časové oneskorenie 50 mS:
- Vstúpte do sekcie „Časovače“
- Kliknite na TIM1
- Ako zdroj hodín vyberte „Interné hodiny“
-
V konfigurácii (Ak chcete porozumieť tejto časti, prečítajte si tento návod, dôrazne odporúčaný „Ovládanie servomotora s MCU STM32F4 ARM“):
- Nastaviť predzosilňovač na 32 000
- A počítadlo období do 50
- Na karte „Nastavenia NVIC“povoľte všetky prerušenia
Povoliť LED ako výstup:
Kliknite na PD12 a nastavte ako „GPIO_Output“
Potom nakonfigurujte hodiny ako na obrázku vyššie a vygenerujte kód.
Krok 4: Vývoj softvéru Keil
Najprv definujeme stavovú premennú, ktorá zabezpečí, že nespustíme časovač vo vonkajšom prerušení, keď dôjde k odrazu:
/ * KÓD UŽÍVATEĽA ZAČÍNA PFP */bool state = true; / * KÓD UŽÍVATEĽA KONIEC PFP */
Potom napíšeme ISR pre externé prerušenie:
neplatné HAL_GPIO_EXTI_Callback (uint16_t GPIO_Pin) {if (GPIO_Pin == Push_Button_Pin && state == true) {HAL_TIM_Base_Start_IT (& htim1); stav = nepravda; } else {_NOP (); }}
Po stlačení tlačidla skontrolujeme, či to bolo naše definované tlačidlo a či je stav pravdivý. Na začiatku bude stav pravdivý, aby bolo možné zadať príkaz if. Po zadaní spustíme časovač a urobíme stav false, aby sme zaistili, že odrážanie nespustí časovač.
Potom napíšeme ISR pre prerušenie časovača:
neplatné HAL_TIM_PeriodElapsedCallback (TIM_HandleTypeDef *htim) { / *Zabrániť upozorneniu na kompiláciu nepoužitých argumentov * / UNUSED (htim);
/* POZNÁMKA: Táto funkcia by nemala byť upravovaná, ak je potrebné spätné volanie, HAL_TIM_PeriodElapsedCallback by bolo možné implementovať do užívateľského súboru */ if (HAL_GPIO_ReadPin (Push_Button_GPIO_Port, Push_Button_Pin) == GPIO_PIN_RESET) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); stav = pravda; HAL_TIM_Base_Stop_IT (& htim1); }}
/ * KÓD UŽÍVATEĽA KONIEC 4 */
Po 50 mS skontrolujeme, či je tlačidlo ešte v stave reset alebo uvoľnené, ak áno, vieme, že tlačidlo je v nečinnom stave. Potom prepneme led, uvedieme stav na true, aby sme dokázali detekovať ďalšie stlačenie tlačidla a zastaviť časovač, aby sme ho mohli znova spustiť.
Tento proces teda zabezpečí, aby sme predišli problémom s odrážaním.
Krok 5: Záver
Toto bol kód pre odblokovanie tlačidiel. Chcem poznamenať, že tento kód som vyvinul ja a nie som odborný programátor. Chyby sa teda určite môžu vyskytnúť. Ak máte lepšie riešenie, poznamenajte si to. Nezabudnite, ak narazíte na nejaký problém, napíšte mi a pokúsim sa vám pomôcť.
Odporúča:
Používajte tlačidlá na svojom Magicbit [Magicblocks]: 5 krokov
Používajte tlačidlá na svojom Magicbit [Magicblocks]: Tento tutoriál vás naučí používať tlačidlá na vašom Magicbit pomocou Magicblocks. V tomto projekte používame magicbit ako vývojovú dosku, ktorá je založená na ESP32. V tomto projekte je preto možné použiť akúkoľvek vývojovú dosku ESP32
Ako opraviť tlačidlá diaľkového ovládača televízora: 5 krokov
Ako opraviť tlačidlá diaľkového ovládača televízora: Niektoré tlačidlá na diaľkovom ovládači televízora sa môžu časom opotrebovať. V mojom prípade to boli tlačidlá kanála nahor a nadol. Kontakty v spodnej časti tlačidla sú pravdepodobne opotrebované. Takto som opravil svoje
Tlačidlá Gameboy na dotykovej obrazovke !: 10 krokov
Tlačidlá Gameboy na dotykovej obrazovke!: Odkedy som bol malý chlapec, chcel som gameboy. Rýchlo dopredu niekoľko rokov, stále nemám herného chlapca, rozhodol som sa stiahnuť emulátor. Ale …. virtuálne tlačidlá necítite! Preto som sa rozhodol, že tlačidlá, ktoré môžem umiestniť na obrazovku, sa budú prekrývať
Hacknutie tlačidla dverí jubilejnej linky v londýnskom metre: 12 krokov (s obrázkami)
Hacknutie dverného tlačidla Jubilejnej linky v londýnskom metre: Obchod London Transport Museum predáva vyradené tlačidlá dverí z Jubilejnej linky (k dispozícii sú ľavé aj pravé). Ak uvažujete o realizácii projektu, ktorý potrebuje nejaké tlačidlo a kontrolku, boli by ste „
Odpojenie hudby od zariadenia Fancier Novšie iPody (Windows XP): 5 krokov
Vyberanie hudby z novších prehrávačov Fancier (Windows XP): V zásade som teda vyskúšal trik, ako dostať hudbu od svojich sestier 8gig 3. generácie nano, a bude to fungovať. môj počítač by ukázal ipod ako jednotku, predpokladám, že Apple to zistil a opravil. ale naozaj to všetko vyžaduje, aby ste si pohrávali s ovládačmi