Orodha ya maudhui:
- Hatua ya 1: Mahitaji ya vifaa na programu
- Hatua ya 2: Kuelewa Tatizo
- Hatua ya 3: Usanidi wa STM32CubeMX
- Hatua ya 4: Maendeleo ya Programu ya Keil
- Hatua ya 5: Hitimisho
Video: STM32CubeMX Kitufe cha Kujadili na Usumbufu: Hatua 5
2024 Mwandishi: John Day | [email protected]. Mwisho uliobadilishwa: 2024-01-30 12:51
Hi, katika mafunzo haya nitajaribu kutoa suluhisho langu rahisi kuzuia kitufe cha kifungo ambayo ni suala kubwa sana. Kwenye mtandao kuna video nyingi za kutoa suluhisho kwa suala hili, lakini sio kati yao kwa usumbufu wa nje. Katika video hizi zote kitufe cha waandishi wa habari hukaguliwa na njia ya kupigia kura ambayo haina tija. Kwa hivyo, wacha tuanze!
Hatua ya 1: Mahitaji ya vifaa na programu
Mahitaji ya vifaa:
- Bodi ya maendeleo ya mikono ya STM32
- Kompyuta
Mahitaji ya programu:
- STM32CubeMX
- Keil uVision5
Hatua ya 2: Kuelewa Tatizo
Kwa hivyo, tunajaribu kutafuta suluhisho la shida ya kubonyeza kitufe. Kwa hivyo, tunapaswa kuelewa suala hilo. Kwa hivyo, tunapobonyeza kitufe inapaswa kuja hali ambayo iko kinyume na hali yake ya zamani. Kwa mfano, ikiwa ilikuwa ya juu lazima iwe CHINI na ikiwa ilikuwa CHINI basi lazima iwe juu. Walakini, hii ni hali nzuri (katika PROTEUS:)) Kwa kweli, tunapobonyeza kitufe huanza kugongana kati ya JUU na SASA kabla haijafika hali ya uvivu. Kwa hivyo, hujifanya kuwa imeshinikizwa mara kadhaa ambayo husababisha shida. Kwa hivyo, tunapaswa kufanya nini?
Hapa nataka kutambua kuwa katika mfano huu, tutatumia usumbufu wa nje ili kugundua kitufe cha kifungo. Kwa hivyo, baada ya kugundua kitufe cha kitufe tunahitaji kusubiri wakati, kama 50mS ili kufikia hali ya uvivu na kuangalia tena ikiwa kitufe ni hali ya uvivu au la. Ikiwa iko katika hali ya uvivu basi tunaweza kuendelea na jukumu letu. Kwa hivyo, wacha tuone nambari:)
Hatua ya 3: Usanidi wa STM32CubeMX
Kwa hivyo, tunahitaji kwanza kuwezesha usumbufu wa nje kwa kitufe chetu cha kushinikiza (nadhani hapa kwamba unatumia bodi ya ugunduzi ya STM32F407VG):
- Kwenye kichupo cha "Pinout & Configuration" bonyeza pini PA0 ambayo imeunganishwa na kitufe cha kushinikiza na uchague GPIO_EXTI0 inayowezesha usumbufu wa nje kwenye pini hiyo.
- Badilisha "lebo ya mtumiaji" ya pini kuwa "Push_Button" au chochote unachotaka.
Halafu, tunahitaji kusanidi kipima muda ili kuunda kuchelewa kwa muda wa 50mS:
- Ingiza sehemu ya "Vipima muda"
- Bonyeza TIM1
- Chagua "Saa ya Ndani" kama chanzo cha Saa
-
Katika usanidi (Ikiwa unataka kuelewa sehemu hii tafadhali rejea mafunzo haya, inapendekezwa sana "Udhibiti wa Magari ya Servo Na STM32F4 ARM MCU"):
- Weka daktari mkuu kama 32000
- Na kipindi cha kukabiliana hadi 50
- Katika kichupo cha "Mipangilio ya NVIC" wezesha usumbufu wote
Wezesha LED kama pato:
Bonyeza PD12 na uweke kama "GPIO_Output"
Kisha, sanidi saa kama ilivyo kwenye picha iliyotolewa hapo juu na utengeneze nambari.
Hatua ya 4: Maendeleo ya Programu ya Keil
Kwanza, tunafafanua hali ya kutofautisha ambayo itahakikisha kwamba hatuwezi kuanza kipima muda ndani ya usumbufu wa nje wakati bouncing ilitokea:
/ * KODI YA MTUMIAJI ANZA PFP * / hali ya bool = kweli; / * KIWANGO CHA MTUMIAJI KUMALIZA PFP * /
Halafu, tunaandika ISR kwa usumbufu wa nje:
batili HAL_GPIO_EXTI_Callback (uint16_t GPIO_Pin) {ikiwa (GPIO_Pin == Push_Button_Pin && state == true) {HAL_TIM_Base_Start_IT (& htim1); hali = uwongo; } mwingine {_NOP (); }}
Kitufe kinapobanwa tunaangalia ikiwa ilikuwa kitufe chetu cha kushinikiza na ikiwa hali ni kweli. Mwanzoni serikali itakuwa kweli ili kuingiza taarifa hiyo. Baada ya kuingia tunaanza kipima muda na kufanya hali kuwa ya uwongo ili kuhakikisha kuwa bouncing hazitaanza tena kipima muda.
Halafu, tunaandika ISR kwa kukatisha saa:
batili HAL_TIM_PeriodElapsedCallback (TIM_HandleTypeDef * htim) {/ * Kuzuia hoja zisizotumiwa (s) onyo la mkusanyiko * / UNUSED (htim);
/ * KUMBUKA: Kazi hii haipaswi kubadilishwa, wakati upigaji simu unahitajika, HAL_TIM_PeriodElapsedCallback inaweza kutekelezwa katika faili ya mtumiaji * / ikiwa (HAL_GPIO_ReadPin (Push_Button_GPIO_Port, Push_Button_Pin) == GPIO_PIN_RESET) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); hali = kweli; HAL_TIM_Base_Stop_IT (& htim1); }}
/ * KIWANGO CHA MTUMIAJI MWISHO 4 * /
Baada ya 50mS tunaangalia ikiwa kitufe bado kiko katika hali ya kuweka upya au kutolewa, ikiwa ndio basi tunajua kuwa kifungo kiko katika hali ya uvivu. Halafu tunabadilisha iliyoongozwa, fanya hali iwe ya kweli ili kuweza kugundua kitufe kingine cha kifungo na usimamishe kipima muda ili kuweza kuanza tena.
Kwa hivyo, mchakato huu utahakikisha kwamba tunazuia suala la kuruka.
Hatua ya 5: Hitimisho
Hii ilikuwa nambari ya kuondoa kitufe. Ninataka kutambua kuwa nambari hii ilitengenezwa na mimi na sio mtaalam wa programu. Kwa hivyo, kunaweza kuwa na makosa. Ikiwa una suluhisho bora tafadhali kumbuka. Usisahau, ikiwa unakutana na shida yoyote tafadhali niandikie na nitajaribu kusaidia.
Ilipendekeza:
Kitufe cha Servo Kitufe: Hatua 5
Kitufe cha Servo Lock: Halo kila mtu, tunatumai umekuwa na siku njema. Ikiwa sio tumaini unaweza kurudi nyuma na mawazo wazi kwenye mafunzo haya na muziki wa matibabu. Programu inaweza kuwa shida. Kwa bahati nzuri, mafunzo haya sio shida, kwa hivyo labda unaweza kuambatana
Kitufe kimoja cha Kusimamishwa kwa Kitufe cha Servo: Hatua 3
Kifungo kimoja cha Kusimamishwa kwa Kitufe cha Servo: Baiskeli kamili za kusimamishwa kwa mlima hutoa safari laini, lakini mara nyingi zinahitaji kufunga kusimamishwa wakati wa kupanda kupanda. Vinginevyo, kusimamishwa kunabana unaposimama juu ya miguu, na kupoteza juhudi hizo. Watengenezaji wa baiskeli wanajua hili, na wanatoa
Mdhibiti mdogo wa AVR. Geuza LED Kutumia Kitufe cha Kushinikiza. Kitufe cha kushinikiza Kudondoa: Hatua 4
Mdhibiti mdogo wa AVR. Geuza LED Kutumia Kitufe cha Kushinikiza. Kitufe cha kushinikiza Kudondoa: Katika sehemu hii, tutajifunza Jinsi ya kutengeneza nambari C ya mpango wa ATMega328PU kugeuza hali ya LED tatu kulingana na pembejeo kutoka kwa kitufe cha kifungo. Pia, tumechunguza suluhisho la shida ya ni 'Badilisha Bounce'. Kama kawaida, sisi
Kitufe cha kushinikiza kitufe cha Analog: 4 Hatua
Kitufe cha kushinikiza nyeti cha Analog: Leo kuna ufunguo wa chaguo za vifungo na swichi za kugusa kwa bei yoyote na sababu yoyote ya fomu. Kwa bahati mbaya, ikiwa unatafuta kupata pembejeo ya analog, chaguzi zako ni chache zaidi. Ikiwa kitelezi chenye uwezo haikidhi hitaji lako, uko sawa
Kitufe cha Arduino Kitufe cha LED Kinachoendesha Usindikaji wa michoro: Hatua 36 (na Picha)
Kitufe cha Kitufe cha Arduino kinachoendesha michoro ya kusindika: Kitufe cha kitufe hiki kinafanywa kwa kutumia PCB na vifaa vingine vilivyotengenezwa na Sparkfun. Inaendeshwa na Arduino Mega. Kila kitufe ni kizuri na kibovu na kinaridhisha kubonyeza, na ina RGB ya LED ndani! Nimekuwa nikitumia kudhibiti michoro mimi