Мазмұны:
- 1 -қадам: Жабдық пен бағдарламалық қамтамасыз етуге қойылатын талаптар
- 2 -қадам: Мәселені түсіну
- 3 -қадам: STM32CubeMX конфигурациясы
- 4 -қадам: Keil бағдарламалық жасақтамасын жасау
- 5 -қадам: Қорытынды
Бейне: STM32CubeMX түймесі үзіліспен жойылады: 5 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Сәлеметсіз бе, бұл оқулықта мен түймені басудың алдын алу үшін қарапайым шешімді беруге тырысамын, бұл өте маңызды мәселе. Интернетте бұл мәселені шешуге арналған көптеген бейнелер бар, бірақ олардың ешқайсысы сыртқы үзіліс үшін емес. Бұл бейнелердің барлығында түймені басу тиімсіз сауалнама әдісімен тексеріледі. Сонымен, бастайық!
1 -қадам: Жабдық пен бағдарламалық қамтамасыз етуге қойылатын талаптар
Аппараттық құралдарға қойылатын талаптар:
- STM32 ARM дамыту тақтасы
- Компьютер
Бағдарламалық қамтамасыз етуге қойылатын талаптар:
- STM32CubeMX
- Keil uVision5
2 -қадам: Мәселені түсіну
Сонымен, біз түймені басу мәселесін шешуге тырысамыз. Сондықтан біз мәселені түсінуіміз керек. Сонымен, біз түймені басқанда, ол алдыңғы күйіне қарама -қарсы күйге келуі керек. Мысалы, егер ол жоғары болса, ол төмен болуы керек, ал егер ол төмен болса, онда ол жоғары болуы керек. Дегенмен, бұл идеалды күй (PROTEUS -та:)) Шындығында, біз түймені басқанда, ол бос күйге келместен бұрын ЖОҒАРЫ мен ТӨМЕН арасында ауыса бастайды. Мәселен, ол бірнеше рет басылғанын көрсетеді, бұл қиындық туғызады. Сонымен, біз не істеуіміз керек?
Бұл жерде біз түймені басуды анықтау үшін сыртқы үзіліс қолданатынымызды атап өткім келеді. Сонымен, түймені басуды анықтағаннан кейін, бос күйге жету үшін 50 мС сияқты біраз уақыт күту керек және түйменің бос күйде екенін тексеріңіз. Егер ол бос күйінде болса, онда біз өз жұмысымызды жалғастыра аламыз. Сонымен, кодты көрейік:)
3 -қадам: STM32CubeMX конфигурациясы
Сонымен, біз алдымен басу түймесі үшін сыртқы үзілісті қосуымыз керек (менің ойымша, сіз STM32F407VG табу тақтасын қолданасыз деп ойлаймын):
- «Қыстыру және конфигурация» қойындысында басу түймесіне қосылған PA0 түйреуішін нұқыңыз және сол түйреуішке сыртқы үзіліс беретін GPIO_EXTI0 таңдаңыз.
- PIN кодының «пайдаланушы белгісін» «Push_Button» немесе өзіңіз қалаған нәрсеге өзгертіңіз.
Содан кейін, 50mS уақыт кідірісін жасау үшін таймерді конфигурациялау қажет:
- «Таймерлер» бөліміне кіріңіз
- TIM1 түймесін басыңыз
- Сағат көзі ретінде «Ішкі сағатты» таңдаңыз
-
Конфигурацияда (егер сіз бұл бөлімді түсінгіңіз келсе, жоғарыда ұсынылған «STM32F4 ARM MCU сервистік қозғалтқышты басқару» оқулығын қараңыз):
- Алдын ала есептегішті 32000 етіп орнатыңыз
- Және қарсы кезең 50 -ге дейін
- «NVIC параметрлері» қойындысында барлық үзілістерді қосыңыз
Жарықдиодты шығыс ретінде қосыңыз:
PD12 түймесін басыңыз және «GPIO_Output» ретінде орнатыңыз
Содан кейін сағатты жоғарыдағы суреттегідей конфигурациялаңыз және кодты жасаңыз.
4 -қадам: Keil бағдарламалық жасақтамасын жасау
Біріншіден, біз айнымалы мәнді анықтаймыз, ол секіру кезінде сыртқы үзілісте таймерді қоспаймыз:
/ * USER CODE BEGIN PFP */bool state = true; / * ПАЙДАЛАНУШЫ КОДЫ ПФФТЫ АЯҚТАУ */
Содан кейін біз сыртқы үзіліс үшін ISR жазамыз:
жарамсыз HAL_GPIO_EXTI_Callback (uint16_t GPIO_Pin) {if (GPIO_Pin == Push_Button_Pin && state == true) {HAL_TIM_Base_Start_IT (& htim1); күй = жалған; } басқа {_NOP (); }}
Түймені басқан кезде біз оның анықталған батырмасы екенін және күйдің дұрыс екенін тексереміз. If операторына кіру үшін бастапқы күй шын болады. Енгеннен кейін біз таймерді іске қосамыз және таймерді қайта қосуды болдырмау үшін жалған күйге келтіреміз.
Содан кейін таймердің үзілуіне ISR жазамыз:
void HAL_TIM_PeriodElapsedCallback (TIM_HandleTypeDef *htim) { / *Пайдаланылмаған аргументтерді құрастыру туралы ескертуді болдырмау * / UNUSED (htim);
/* ЕСКЕРТПЕ: Қайта қоңырау шалу қажет болғанда, бұл функцияны өзгертуге болмайды.
HAL_TIM_PeriodElapsedCallback пайдаланушы файлында енгізілуі мүмкін */ if (HAL_GPIO_ReadPin (Push_Button_GPIO_Port, Push_Button_Pin) == GPIO_PIN_RESET) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_) күй = шын; HAL_TIM_Base_Stop_IT (& htim1); }}
/ * ПАЙДАЛАНУШЫЛАР КОДЫ 4 ЖОҚ *
50mS -тен кейін біз түйменің қалпына келтіру күйінде немесе босатылғанын тексереміз, егер иә болса, онда біз бұл түйменің бос күйінде екенін білеміз. Содан кейін біз светодиорды ауыстырып қосамыз, күйді шындыққа айналдырамыз, оны басқа түймені басуды анықтау үшін және оны қайта іске қосу үшін таймерді тоқтатамыз.
Осылайша, бұл процесс бізді айналып өтудің алдын алуға кепілдік береді.
5 -қадам: Қорытынды
Бұл түймені басу коды болды. Айта кеткім келеді, бұл кодты мен әзірледім және мен білікті бағдарламашы емеспін. Сондықтан қателіктер болуы мүмкін. Егер сізде жақсы шешім болса, оны ескеріңіз. Ұмытпаңыз, егер сізде қандай да бір мәселе туындаса, маған жазыңыз, мен көмектесуге тырысамын.
Ұсынылған:
Microsoft Teams дыбысын өшіру түймесі: 4 қадам
Microsoft Teams дыбысын өшіру түймесі: Microsoft Teams қоңырауы кезінде дыбысты өшіру/өшіру үшін қол жетімді түймешікті жасаңыз! Себебі 2020. Бұл жоба Microsoft Teams үшін жылдам перне арқылы дыбысты өшіру түймесін жасау үшін Adafruit Circuit Playground Express (CPX) және үлкен түймені қолданады
3D басып шығарылған егіз қалақшаның негізгі түймесі (566гр.): 21 қадам (суреттермен)
3D басып шығарылған егіз қалақшалы кілт (566 гр.): Әзірге дәл, жұмсақ және ауыр жүкті қос қалақшаның болуы көп ақша жұмсауды білдіреді. Бұл кілтті жобалау кезіндегі қалағым: а)- арзан --- ол стандартты 3d принтері бар пластмассадан жасалған b)- берік --- мен допты қолдандым
$ 5 үйді автоматтандыру түймесі: 4 қадам
5 долларлық үйді автоматтандыру түймесі: 5 долларлық үйді автоматтандыру түймесі Кейде ең қарапайым шешім - бір түйме. Біз үйдегі автоматтандыру хабында (Hubitat Elevation) «ұйықтау» режимін іске қосудың оңай жолын алғымыз келді, ол көптеген шамдарды өшіреді, басқаларды белгілі бір деңгейге қояды және
Raspberry Pi үшін өшіру түймесі: 3 қадам
Raspberry Pi үшін өшіру түймесі: Raspberry Pi-бұл әр түрлі IoT/робототехника/ақылды үй/… жобалық қосымшаларды құруға мүмкіндік беретін өте пайдалы есептеу платформасы. Кәдімгі компьютерден айырмашылығы-бұл өшіру түймесі. Сонымен біз қалай жасай аламыз
ON -OFF түймесі бар DIY желдеткіші - M5StickC ESP32: 8 қадам
ҚОСУ түймесі бар DIY желдеткіші - M5StickC ESP32: Бұл жобада біз M5StickC ESP32 тақтасын пайдаланып FAN L9110 модулін қолдануды үйренеміз