Բովանդակություն:
- Քայլ 1: Սարքավորման և ծրագրային ապահովման պահանջներ
- Քայլ 2: Հասկանալով խնդիրը
- Քայլ 3: STM32CubeMX կազմաձևում
- Քայլ 4. Keil ծրագրաշարի մշակում
- Քայլ 5: Եզրակացություն
![STM32CubeMX կոճակը անջատում ընդհատումով. 5 քայլ STM32CubeMX կոճակը անջատում ընդհատումով. 5 քայլ](https://i.howwhatproduce.com/images/002/image-4977-32-j.webp)
Video: STM32CubeMX կոճակը անջատում ընդհատումով. 5 քայլ
![Video: STM32CubeMX կոճակը անջատում ընդհատումով. 5 քայլ Video: STM32CubeMX կոճակը անջատում ընդհատումով. 5 քայլ](https://i.ytimg.com/vi/gOzqbPRe9Lw/hqdefault.jpg)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:48
![STM32CubeMX կոճակը անջատում ընդհատումով STM32CubeMX կոճակը անջատում ընդհատումով](https://i.howwhatproduce.com/images/002/image-4977-33-j.webp)
Բարև, այս ձեռնարկում ես կփորձեմ տալ իմ պարզ լուծումը `կոճակի ցատկումը կանխելու համար, ինչը շատ լուրջ խնդիր է: Ինտերնետում կան բազմաթիվ տեսանյութեր, որոնք առաջարկում են այս հարցի լուծումը, բայց դրանցից ոչ մեկը արտաքին ընդհատումների համար: Այս բոլոր տեսանյութերում կոճակը սեղմելը ստուգվում է հարցման եղանակով, որն անարդյունավետ է: Այսպիսով, եկեք սկսենք:
Քայլ 1: Սարքավորման և ծրագրային ապահովման պահանջներ
Սարքավորման պահանջներ.
- STM32 ARM զարգացման տախտակ
- Համակարգիչ
Softwareրագրային ապահովման պահանջներ.
- STM32CubeMX
- Keil uVision5
Քայլ 2: Հասկանալով խնդիրը
![Խնդիրը հասկանալը Խնդիրը հասկանալը](https://i.howwhatproduce.com/images/002/image-4977-34-j.webp)
Այսպիսով, մենք փորձում ենք լուծում գտնել կոճակով ցատկելու խնդրին: Հետևաբար, մենք պետք է հասկանանք հարցը: Այսպիսով, երբ մենք սեղմում ենք կոճակը, այն պետք է գա մի վիճակի, որը հակառակ է իր նախկին վիճակին: Օրինակ, եթե այն եղել է ԲԱՐՁՐ, ապա այն պետք է լինի OWԱOWՐ, իսկ եթե OWԱOWՐ է, ապա պետք է լինի ԲԱՐՁՐ: Այնուամենայնիվ, սա իդեալական վիճակ է (PROTEUS- ում:)) Իրականում, երբ մենք սեղմում ենք մի կոճակ, այն սկսում է ցատկել HIGH- ի և LOW- ի միջև ՝ նախքան անգործուն վիճակի գալը: Այսպիսով, ձևացնում է, թե այն մի քանի անգամ սեղմվել է, ինչը խնդիրներ է առաջացնում: Այսպիսով, ինչ պետք է անենք:
Այստեղ ես ուզում եմ նշել, որ այս օրինակում մենք կօգտագործենք արտաքին ընդհատում `կոճակի սեղմումը հայտնաբերելու համար: Այսպիսով, կոճակի սեղմումը հայտնաբերելուց հետո մենք պետք է սպասենք մի փոքր ժամանակ, ինչպես 50 մՍ -ը, որպեսզի հասնենք պարապ վիճակի և նորից ստուգենք `կոճակը անգործուն վիճակում է, թե ոչ: Եթե այն անգործուն վիճակում է, ապա մենք կարող ենք շարունակել մեր խնդիրը: Այսպիսով, եկեք տեսնենք ծածկագիրը:)
Քայլ 3: STM32CubeMX կազմաձևում
![STM32CubeMX կազմաձևում STM32CubeMX կազմաձևում](https://i.howwhatproduce.com/images/002/image-4977-35-j.webp)
Այսպիսով, մենք պետք է նախ միացնենք արտաքին ընդհատումը մեր կոճակի համար (այստեղ ենթադրում եմ, որ դուք օգտագործում եք STM32F407VG հայտնագործման տախտակը).
- «Pinout & Configuration» ներդիրում սեղմեք սեղմիչ կոճակին միացված PA0 պին և ընտրեք GPIO_EXTI0, որը հնարավորություն է տալիս արտաքին ընդհատում կատարել այդ քորոցում:
- Փնջի «օգտվողի պիտակը» փոխեք «Push_Button» կամ ձեր ուզածի:
Այնուհետև, մենք պետք է կազմաձևենք ժմչփը `50mS ժամանակային հետաձգում ստեղծելու համար.
- Մուտքագրեք «ersամաչափեր» բաժինը
- Կտտացրեք TIM1- ին
- Որպես ժամացույցի աղբյուր ընտրեք «Ներքին ժամացույց»
-
Կազմաձևով (Եթե ցանկանում եք հասկանալ այս բաժինը, դիմեք այս ձեռնարկին, որը շատ խորհուրդ է տրվում "Servo Motor Control With STM32F4 ARM MCU"):
- Նախնական սակագինը սահմանեք 32000
- Եվ հակակշիռը մինչև 50
- «NVIC կարգավորումներ» ներդիրում միացրեք բոլոր ընդհատումները
Միացնել LED- ը որպես ելք.
Կտտացրեք PD12- ին և նշեք որպես «GPIO_Output»
Այնուհետև կազմաձևեք ժամացույցը, ինչպես պատկերված է վերևում և ստեղծեք ծածկագիրը:
Քայլ 4. Keil ծրագրաշարի մշակում
Նախ, մենք սահմանում ենք վիճակի փոփոխական, որը կապահովի, որ ժամաչափը չսկսենք արտաքին ընդհատման ներսում, երբ վերադարձը տեղի է ունենում.
/ * USER CODE BEGIN PFP */bool state = true; / * USER CODE END PFP */
Այնուհետև, մենք գրում ենք ISR արտաքին ընդհատման համար.
անվավեր HAL_GPIO_EXTI_Callback (uint16_t GPIO_Pin) {if (GPIO_Pin == Push_Button_Pin && state == true) {HAL_TIM_Base_Start_IT (& htim1); վիճակ = կեղծ; } else {_NOP (); }}
Երբ կոճակը սեղմվում է, մենք ստուգում ենք, արդյոք դա մեր սահմանված կոճակն էր և արդյոք վիճակը ճիշտ է: Սկզբում վիճակը ճիշտ կլինի, եթե if հայտարարությունը մուտքագրվի: Մտնելուց հետո մենք սկսում ենք ժմչփը և վիճակը կեղծ ենք դարձնում `համոզվելու համար, որ վերադարձը չի վերսկսի ժամաչափը:
Այնուհետեւ, մենք գրում ենք ISR ժամանակաչափի ընդհատման համար.
անվավեր HAL_TIM_PeriodElapsedCallback (TIM_HandleTypeDef *htim) { / *Կանխել չօգտագործված փաստարկների (ներ) կազմման նախազգուշացումը * / Չօգտագործված (htim);
/* Ո NOTՇԱԴՐՈԹՅՈՆ. Այս գործառույթը չպետք է փոփոխվի, երբ անհրաժեշտ է հետադարձ կապ, HAL_TIM_PeriodElapsedCallback- ը կարող է իրականացվել օգտվողի ֆայլում */ եթե (HAL_GPIO_ReadPin (Push_Button_GPIO_Port, Push_Button_Pin) == GPIO_PIN_RESET) {HAL_GPIO_TogglePin (GPIOD, GPI12); վիճակ = ճշմարիտ; HAL_TIM_Base_Stop_IT (& htim1); }}
/ * ՕԳՏԱԳՈՐԻՉԻ ՎԵՐ END 4 *//
50mS- ից հետո մենք ստուգում ենք, արդյոք կոճակը դեռ վերականգնված վիճակում է, թե ազատված է, եթե այո, ապա մենք գիտենք, որ այդ կոճակը անգործուն վիճակում է: Այնուհետև մենք միացնում ենք լուսարձակը, դարձնում վիճակը ճշմարիտ, որպեսզի կարողանանք այլ կոճակ սեղմել և դադարեցնել ժամաչափը, որպեսզի կարողանանք նորից սկսել:
Այսպիսով, այս գործընթացը կապահովի, որ մենք կանխենք ցատկման հարցը:
Քայլ 5: Եզրակացություն
Սա կոճակի հեռացման կոդն էր: Ուզում եմ նշել, որ այս ծածկագիրը մշակվել է իմ կողմից, և ես փորձագետ ծրագրավորող չեմ: Այսպիսով, անշուշտ, կարող են լինել սխալներ: Եթե ունեք ավելի լավ լուծում, նշեք այն: Մի մոռացեք, եթե որևէ խնդրի հանդիպեք, գրեք ինձ, և ես կփորձեմ օգնել:
Խորհուրդ ենք տալիս:
Բջջային լրիվ լիցքավորման ավտոմատ անջատում `20 քայլ
![Բջջային լրիվ լիցքավորման ավտոմատ անջատում `20 քայլ Բջջային լրիվ լիցքավորման ավտոմատ անջատում `20 քայլ](https://i.howwhatproduce.com/images/001/image-470-j.webp)
Բջջային լրիվ լիցքավորման ավտոմատ անջատում. Բջջային հեռախոսի լիցքավորման ավտոմատ անջատում ամբողջությամբ լիցքավորվելուց հետո: Անհրաժեշտ չէ անհանգստանալ մարտկոցի կյանքից, նույնիսկ եթե այն թողել եք ամբողջ գիշեր: Բջջային հեռախոսները աշխատում են մարտկոցներով: Չնայած մարտկոցները հարմար են օգտագործման համար, դրանց օգտագործումը նույնպես որոշակի նախազգուշական միջոցների կարիք ունի: Մի մա
ՊՆ ՝ Ender 3 LCD լուսարձակի միացում/անջատում ՝ 6 քայլ
![ՊՆ ՝ Ender 3 LCD լուսարձակի միացում/անջատում ՝ 6 քայլ ՊՆ ՝ Ender 3 LCD լուսարձակի միացում/անջատում ՝ 6 քայլ](https://i.howwhatproduce.com/images/001/image-651-j.webp)
ՊՆ ՝ Ender 3 LCD լուսարձակի միացում/անջատում. Գիշերային ժամերին ցուցադրվող լույսի միացման/անջատման ցուցադրման ռեժիմ: Այժմ կարող եք անջատել հետևի լույսը
Creality Ender 3 հոսանքի անջատում. 3 քայլ
![Creality Ender 3 հոսանքի անջատում. 3 քայլ Creality Ender 3 հոսանքի անջատում. 3 քայլ](https://i.howwhatproduce.com/images/010/image-28663-j.webp)
Creality Ender 3 Power Shutoff: Բարև, ուրեմն հիմնականում մի օր ես ստիպված էի հեռանալ կարճ տպագիր սկսելուց հետո: Ամբողջ օրը ես մտածում էի, թե ինչպես է տպիչը նստած այնտեղ ոչինչ չանելով և էլեկտրաէներգիա սպառելով: Այսպիսով, ես մտածեցի մի պարզ սխեմայի մասին, որը պետք է անջատվի ցանցից հետո, երբ տպվելը
Կեղտ էժան ATtiny-85 Tv-B-Gone (անջատում է ցանկացած հեռուստատեսություն), Plus Arduino As Isp: 4 քայլ
![Կեղտ էժան ATtiny-85 Tv-B-Gone (անջատում է ցանկացած հեռուստատեսություն), Plus Arduino As Isp: 4 քայլ Կեղտ էժան ATtiny-85 Tv-B-Gone (անջատում է ցանկացած հեռուստատեսություն), Plus Arduino As Isp: 4 քայլ](https://i.howwhatproduce.com/images/002/image-5575-25-j.webp)
Dirt Cheap ATtiny-85 Tv-B-Gone (անջատում է ցանկացած հեռուստատեսություն!), Plus Arduino As Isp. Գրանցվեք իմ «Էլեկտրոնիկա մի խոսքով» դասընթացին այստեղ ՝ https://www.udemy.com/electronics-in-a -nutshell/? couponCode = TINKERSPARK Դիտեք նաև իմ YouTube- ի ալիքը այստեղ ՝ ավելի շատ նախագծերի և էլեկտրոնիկայի ձեռնարկների համար ՝ https://www.youtube.com/channel/UCelOO
ESP8266 սարքով համակարգչի հեռակա անջատում կամ վերագործարկում. 10 քայլ (նկարներով)
![ESP8266 սարքով համակարգչի հեռակա անջատում կամ վերագործարկում. 10 քայլ (նկարներով) ESP8266 սարքով համակարգչի հեռակա անջատում կամ վերագործարկում. 10 քայլ (նկարներով)](https://i.howwhatproduce.com/images/004/image-11129-6-j.webp)
Հեռակա անջատում կամ համակարգչի վերագործարկում ESP8266 սարքով. Այստեղ պարզ լինելու համար մենք փակում ենք ձեր համակարգիչը, այլ ոչ թե ուրիշի համակարգիչը: Պատմությունը հետևյալն է. Ֆեյսբուքում իմ ընկերը ինձ հաղորդագրություն ուղարկեց և ասաց, որ ունի տասնյակ համակարգիչներ, որոնք աշխատում են մաթեմատիկայի փունջ, բայց ամեն առավոտ առավոտյան 3 -ին նրանք փակվում են: Ս