ዝርዝር ሁኔታ:
- ደረጃ 1 የሃርድዌር እና የሶፍትዌር መስፈርቶች
- ደረጃ 2 - ችግሩን መረዳት
- ደረጃ 3 STM32CubeMX ውቅር
- ደረጃ 4 የኬይል ሶፍትዌር ልማት
- ደረጃ 5 መደምደሚያ
ቪዲዮ: STM32CubeMX አዝራር በማቋረጥ Debounce: 5 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:31
ጤና ይስጥልኝ ፣ በዚህ አጋዥ ስልጠና ውስጥ በጣም ከባድ ጉዳይ የሆነውን የአዝራር ንዝረትን ለመከላከል ቀላል መፍትሄዬን ለመስጠት እሞክራለሁ። በበይነመረብ ላይ ለዚህ ጉዳይ መፍትሄ የሚሰጡ ብዙ ቪዲዮዎች አሉ ፣ ግን ከእነሱ ውጭ ለውጭ መቋረጥ። በእነዚህ ሁሉ ቪዲዮዎች ውስጥ አዝራር ፕሬስ ውጤታማ ባልሆነ የምርጫ ዘዴ ምልክት ይደረግበታል። ስለዚህ ፣ እንጀምር!
ደረጃ 1 የሃርድዌር እና የሶፍትዌር መስፈርቶች
የሃርድዌር መስፈርቶች;
- STM32 ARM ልማት ቦርድ
- ኮምፒተር
የሶፍትዌር መስፈርቶች
- STM32CubeMX
- Keil uVision5
ደረጃ 2 - ችግሩን መረዳት
ስለዚህ ፣ ለአዝራር መነሳት ችግር መፍትሄ ለማግኘት እንሞክራለን። ስለዚህ ጉዳዩን መረዳት አለብን። ስለዚህ ፣ አንድ ቁልፍ ስንጫን ከቀድሞው ሁኔታው ተቃራኒ የሆነ ሁኔታ መምጣት አለበት። ለምሳሌ ፣ ከፍ ያለ ቢሆን ዝቅተኛ መሆን አለበት እና ዝቅተኛ ከሆነ ከዚያ ከፍተኛ መሆን አለበት። ሆኖም ፣ ይህ ተስማሚ ሁኔታ ነው (በ PROTEUS:)) በእውነቱ ፣ አንድ አዝራር ስንጫን ወደ ስራ ፈት ሁኔታ ከመምጣቱ በፊት በከፍተኛ እና ዝቅተኛ መካከል መብረር ይጀምራል። ስለዚህ ፣ ብዙ ጊዜ የተጫነ ያስመስላል ይህም ችግሮችን ያስከትላል። ስለዚህ ፣ ምን ማድረግ አለብን?
እዚህ በዚህ ምሳሌ ውስጥ የአዝራር ቁልፍን ለመለየት የውጭ መቋረጥን እንደምንጠቀም ማስተዋል እፈልጋለሁ። ስለዚህ ፣ የአዝራር ማተሚያውን ካወቅን በኋላ ስራ ፈት ያለበትን ሁኔታ ለመድረስ እና አዝራሩ ስራ ፈት አለመሆኑን ወይም አለመሆኑን እንደገና ለመፈተሽ እንደ 50mS ትንሽ ጊዜ መጠበቅ አለብን። ስራ ፈት በሆነ ሁኔታ ውስጥ ከሆነ ወደ ተግባራችን መቀጠል እንችላለን። ስለዚህ ኮዱን እንይ:)
ደረጃ 3 STM32CubeMX ውቅር
ስለዚህ ፣ እኛ ለእኛ የግፋ አዝራራችን የውጭ መቋረጥን ማንቃት አለብን (እዚህ STM32F407VG ግኝት ሰሌዳ እንደሚጠቀሙ እገምታለሁ)
- በ “Pinout & Configuration” ትር ውስጥ ከግፊት አዝራሩ ጋር የተገናኘውን ፒን PA0 ላይ ጠቅ ያድርጉ እና በዚያ ፒን ላይ የውጭ መቋረጥን የሚፈቅድ GPIO_EXTI0 ን ይምረጡ።
- የፒኑን “የተጠቃሚ መለያ” ወደ “Push_Button” ወይም ወደሚፈልጉት ማንኛውም ነገር ይለውጡ።
ከዚያ ፣ የ 50mS የጊዜ መዘግየትን ለመፍጠር ሰዓት ቆጣሪን ማዋቀር አለብን-
- “ሰዓት ቆጣሪዎች” ክፍልን ያስገቡ
- በ TIM1 ላይ ጠቅ ያድርጉ
- እንደ የሰዓት ምንጭ “ውስጣዊ ሰዓት” ን ይምረጡ
-
በማዋቀር ውስጥ (ይህንን ክፍል ለመረዳት ከፈለጉ እባክዎን ይህንን መማሪያ ይመልከቱ ፣ በጣም የሚመከር “የ Servo Motor Control በ STM32F4 ARM MCU”)
- ቅድመ -ተቆጣጣሪውን እንደ 32000 ያዘጋጁ
- እና የቆጣሪ ጊዜ ወደ 50
- በ “NVIC ቅንብሮች” ትር ውስጥ ሁሉንም ማቋረጦች ያንቁ
ኤልኢዲ እንደ ውፅዓት ያንቁ ፦
PD12 ላይ ጠቅ ያድርጉ እና እንደ «GPIO_Output» ያዘጋጁ
ከዚያ ፣ ከላይ በተሰጠው ምስል ላይ እንደ ሰዓት ያዋቅሩ እና ኮዱን ያመነጩ።
ደረጃ 4 የኬይል ሶፍትዌር ልማት
መጀመሪያ ፣ መወርወር በሚከሰትበት ጊዜ በውጫዊ መቋረጥ ውስጥ የሰዓት ቆጣሪ አለመጀመራችንን የሚያረጋግጥ የስቴት ተለዋዋጭን እንገልፃለን-
/ * የተጠቃሚ ተጠቃሚ ኮድ PFP */bool state = true; / * የተጠቃሚ ኮድ መጨረሻ PFP */
ከዚያ ፣ ለውጫዊ መቋረጥ ISR እንጽፋለን-
ባዶ HAL_GPIO_EXTI_Callback (uint16_t GPIO_Pin) {ከሆነ (GPIO_Pin == Push_Button_Pin && state == true) {HAL_TIM_Base_Start_IT (& htim1); ግዛት = ሐሰት; } ሌላ {_NOP () ፤ }}
አዝራር ሲጫን የእኛ የተገለፀው የግፋ አዝራር መሆኑን እና ግዛቱ እውነት መሆኑን እንፈትሻለን። መግለጫው ውስጥ ለመግባት መጀመሪያ ላይ ግዛቱ እውነት ይሆናል። ከገባን በኋላ የጊዜ መቁጠሪያውን እንደገና ማስጀመር አለመጀመሩን ለማረጋገጥ የሰዓት ቆጣሪን እንጀምራለን እና ግዛት ሐሰተኛ እናደርጋለን።
ከዚያ ፣ ሰዓት ቆጣሪን ለማቋረጥ ISR እንጽፋለን-
ባዶ HAL_TIM_PeriodElapsedCallback (TIM_HandleTypeDef *htim) { / *ጥቅም ላይ ያልዋለ የክርክር (ቶች) ማጠናከሪያ ማስጠንቀቂያ * / ጥቅም ላይ አልዋለም (htim);
/* ማሳሰቢያ - ይህ ተግባር መሻሻል የለበትም ፣ የመደወያው ጥሪ ሲያስፈልግ ፣
HAL_TIM_PeriodElapsedCallback በተጠቃሚ ፋይል */ ከሆነ (HAL_GPIO_ReadPin (Push_Button_GPIO_Port ፣ Push_Button_Pin) == GPIO_PIN_RESET) {HAL_GPIO_TogglePin (GPIOD ፣ GPIOD ፣ GPIOD ፣ GPIOD ፣ GPIOD ፣ GPIOD ፣ GPIOD ግዛት = እውነት; HAL_TIM_Base_Stop_IT (& htim1); }}
/ * የተጠቃሚ ኮድ ማብቂያ 4 */
ከ 50mS በኋላ አዝራሩ ገና በመልሶ ሁኔታ ውስጥ ከሆነ ወይም ከተለቀቀ እንፈትሻለን ፣ አዎ ከሆነ ያ አዝራሩ ስራ ፈት ባለ ሁኔታ ውስጥ መሆኑን እናውቃለን። ከዚያ እንደገና ለመጀመር እንዲቻል ሌላ የአዝራር ቁልፍን ለመለየት እና ቆጣሪን ለማቆየት መሪውን እንለውጣለን ፣ ሁኔታውን እውነት እናደርጋለን።
ስለዚህ ፣ ይህ ሂደት የመብረቅ ችግርን መከላከልን ያረጋግጣል።
ደረጃ 5 መደምደሚያ
ይህ የአዝራር መቀልበስ ኮድ ነበር። ይህ ኮድ በእኔ የተገነባ እና እኔ የባለሙያ ፕሮግራም አውጪ እንዳልሆን ማስተዋል እፈልጋለሁ። ስለዚህ ፣ በእርግጥ ስህተቶች ሊኖሩ ይችላሉ። የተሻለ መፍትሔ ካለዎት እባክዎ ልብ ይበሉ። አይርሱ ፣ ማንኛውም ችግር ካጋጠመዎት እባክዎን ይፃፉልኝ እና ለማገዝ እሞክራለሁ።
የሚመከር:
$ 5 የቤት አውቶማቲክ አዝራር -4 ደረጃዎች
$ 5 የቤት አውቶማቲክ አዝራር - የ $ 5 የቤት አውቶማቲክ ቁልፍ አንዳንድ ጊዜ በጣም ቀላሉ መፍትሔ ነጠላ አዝራር ነው። አብዛኛዎቹን መብራቶች የሚያጠፋ ፣ ሌሎችን ወደ ተወሰኑ ደረጃዎች የሚያስቀምጥ እና
አንድ አዝራር Servo እገዳ መቆለፊያ: 3 ደረጃዎች
አንድ አዝራር ሰርቮ ማገድ መቆለፊያ - ሙሉ ተንጠልጣይ የተራራ ብስክሌቶች ለስላሳ ጉዞ ይሰጣሉ ፣ ግን ብዙውን ጊዜ ሽቅብ በሚወጡበት ጊዜ እገዳን መቆለፍን ይጠይቃሉ። ያለበለዚያ እገዳው በእግረኞች ላይ ሲቆሙ ያንን ጥረት ያባክናል። የብስክሌት አምራቾች ይህንን ያውቃሉ እና ይሰጣሉ
ለ Raspberry Pi የኃይል ማብሪያ አዝራር 3 ደረጃዎች
ለ Raspberry Pi የኃይል ማብሪያ ቁልፍ-Raspberry Pi የተለያዩ IoT/robotics/smart-home/… የፕሮጀክት ትግበራዎችን ለመፍጠር የሚያስችል በጣም ጠቃሚ የኮምፒተር መድረክ ነው። ምንም እንኳን እሱ ከሌለው አንድ ነገር ፣ ከተለመደው ኮምፒተር ጋር ያነፃፅሩ ፣ የመዝጋት ኃይል ማጥፊያ ቁልፍ ነው። ታዲያ እንዴት ልንፈጥር እንችላለን
የሁለት አዝራር ማስተላለፊያ መቀየሪያ -3 ደረጃዎች
የሁለት አዝራር ማስተላለፊያ መቀየሪያ - ይህ ጽሑፍ እንዴት ማብራት እና የግፊት ቁልፍ መቀየሪያን ማጥፋት እንደሚችሉ ያሳያል። ይህ ወረዳ በሁለት መቀያየሪያዎች ሊከናወን ይችላል። በአንድ ማብሪያ ላይ ይጫኑ እና አምፖሉ በርቷል። በሌላ ማብሪያ ላይ ይጫኑ እና አምፖሉ ይጠፋል። ሆኖም ይህ Ins
AVR ማይክሮ መቆጣጠሪያ። የግፊት አዝራር መቀየሪያን በመጠቀም የ LED ን ይቀያይሩ። የግፋ አዝራር Debouncing .: 4 ደረጃዎች
AVR ማይክሮ መቆጣጠሪያ። የግፊት አዝራር መቀየሪያን በመጠቀም የ LED ን ይቀያይሩ። የግፋ አዝራር ማወዛወዝ። - በዚህ ክፍል ውስጥ ከአዝራር መቀየሪያ ግብዓት መሠረት የሦስቱ ኤልኢዲዎችን ሁኔታ ለመቀየር ለኤቲኤምኤምኤ 328PU የፕሮግራም ሲ ኮድ እንዴት እንደሚሠራ እንማራለን። እንዲሁም ፣ ለ ‹ችግሩ መቀያየር መቀያየር› ለችግሩ መፍትሄዎችን መርምረናል። እንደተለመደው እኛ