Cov txheej txheem:

STM32CubeMX Khawm Debounce Nrog cuam tshuam: 5 Kauj Ruam
STM32CubeMX Khawm Debounce Nrog cuam tshuam: 5 Kauj Ruam

Video: STM32CubeMX Khawm Debounce Nrog cuam tshuam: 5 Kauj Ruam

Video: STM32CubeMX Khawm Debounce Nrog cuam tshuam: 5 Kauj Ruam
Video: Push Button Example | STM32 Cube IDE | GPIO Input | STM32G474 | Episode 3 2024, Kaum ib hlis
Anonim
STM32CubeMX Khawm Debounce Nrog cuam tshuam
STM32CubeMX Khawm Debounce Nrog cuam tshuam

Nyob zoo, hauv qhov kev qhia no kuv yuav sim muab kuv cov lus yooj yim los tiv thaiv khawm thaws uas yog qhov teeb meem loj heev. Hauv is taws nem muaj ntau cov vis dis aus los daws qhov teeb meem no, tab sis tsis yog ntawm lawv rau sab nraud cuam tshuam. Hauv txhua qhov ntawm cov vis dis aus no khawm nyem tau tshuaj xyuas los ntawm txoj kev pov npav uas tsis muaj txiaj ntsig. Yog li, cia pib!

Kauj ruam 1: Kho vajtse thiab Software yuav tsum tau

Yuav tsum tau kho vajtse:

  • STM32 ARM pawg thawj coj loj
  • Ib lub computer

Software yuav tsum tau:

  • STM32CubeMX
  • Keil uVision 5

Kauj Ruam 2: Nkag Siab Qhov Teeb Meem

Nkag Siab Qhov Teeb Meem
Nkag Siab Qhov Teeb Meem

Yog li, peb sim nrhiav kev daws teeb meem khawm khawm. Yog li ntawd, peb yuav tsum nkag siab qhov teeb meem. Yog li, thaum peb nias lub pob nws yuav tsum tuaj lub xeev uas tsis zoo rau nws lub xeev dhau los. Piv txwv li, yog tias nws HIGH nws yuav tsum yog LOW thiab yog tias LOW ces nws yuav tsum yog HIGH. Txawm li cas los xij, qhov no yog lub xeev zoo tshaj (hauv PROTEUS:)) Qhov tseeb, thaum peb nias lub pob nws pib thaws nruab nrab ntawm HIGH thiab LOW ua ntej nws los rau lub xeev tsis ua haujlwm. Yog li, ua piv txwv tias nws tau raug nias ntau zaus uas ua rau muaj teeb meem. Yog li, peb yuav tsum ua dab tsi?

Nov kuv xav ceeb toom tias hauv qhov piv txwv no, peb yuav siv kev cuam tshuam sab nraud txhawm rau txhawm rau txheeb xyuas lub pob nyem. Yog li, tom qab peb tshawb pom lub pob nyem peb yuav tsum tau tos me ntsis lub sijhawm, zoo li 50mS txhawm rau kom mus txog lub xeev tsis ua haujlwm thiab tshawb xyuas dua seb lub pob tsis ua haujlwm lossis tsis yog. Yog tias nws nyob hauv lub xeev tsis ua haujlwm ces peb tuaj yeem txuas ntxiv mus rau peb txoj haujlwm. Yog li, cia saib cov cai:)

Kauj ruam 3: STM32CubeMX Configuration

Kev teeb tsa STM32CubeMX
Kev teeb tsa STM32CubeMX

Yog li, peb yuav tsum xub ua kom muaj kev cuam tshuam sab nraud rau peb lub laub khawm (Kuv xav tias ntawm no koj siv STM32F407VG pawg thawj coj pom):

  • Hauv "Pinout & Configuration" tab nyem rau tus pin PA0 uas txuas nrog lub laub khawm thiab xaiv GPIO_EXTI0 uas ua rau cuam tshuam sab nraud ntawm tus pin ntawd.
  • Hloov "tus neeg siv daim ntawv lo" ntawm tus pin rau "Push_Button" lossis txhua yam koj xav tau.

Tom qab ntawd, peb yuav tsum teeb tsa lub sijhawm kom tsim 50mS ncua sijhawm:

  • Nkag mus rau ntu "Timers"
  • Nyem rau TIM1
  • Xaiv "Lub moos sab hauv" ua lub moos
  • Hauv kev teeb tsa (Yog tias koj xav nkag siab ntu no thov xa mus rau qhov kev qhia no, pom zoo "Servo Tsav Tswj Nrog STM32F4 ARM MCU"):

    • Teeb prescaler li 32000
    • Thiab lub sijhawm tiv thaiv rau 50
  • Hauv "NVIC Settings" tab pab kom txhua qhov cuam tshuam

Pab kom LED ua qhov tso tawm:

Nyem rau PD12 thiab teeb tsa ua "GPIO_Output"

Tom qab ntawd, teeb tsa lub moos raws li hauv daim duab tau hais los saum no thiab tsim cov cai.

Kauj Ruam 4: Keil Kev Txhim Kho Software

Ua ntej, peb txhais lub xeev qhov sib txawv uas yuav ua kom ntseeg tau tias peb tsis pib lub sijhawm sab hauv cuam tshuam sab nraud thaum thawb tshwm sim:

/ * USER CODE BEGIN PFP */bool state = tseeb; / * USER CODE END PFP */

Tom qab ntawd, peb sau ISR rau sab nrauv cuam tshuam:

void HAL_GPIO_EXTI_Callback (uint16_t GPIO_Pin) {yog (GPIO_Pin == Push_Button_Pin && state == tseeb) {HAL_TIM_Base_Start_IT (& htim1); xeev = cuav; } lwm {_NOP (); }}

Thaum khawm nias peb tshawb xyuas yog tias nws yog peb lub khawm thawb thiab seb lub xeev puas muaj tseeb. Thaum pib lub xeev yuav muaj tseeb txhawm rau nkag mus rau hauv nqe lus. Tom qab nkag mus peb pib lub sijhawm thiab ua rau lub xeev tsis raug cai kom ntseeg tau tias kev thawb rov qab yuav tsis rov pib dua.

Tom qab ntawd, peb sau ISR rau timer cuam tshuam:

void HAL_TIM_PeriodElapsedCallback (TIM_HandleTypeDef *htim) { / *Tiv thaiv kom tsis txhob siv cov lus sib cav (s) muab tso ua ke ceeb toom * / UNUSED (htim);

/* NCO TSEG: Qhov haujlwm no yuav tsum tsis raug hloov kho, thaum xav tau kev hu rov qab, HAL_TIM_PeriodElapsedCallback tuaj yeem ua tiav hauv cov neeg siv cov ntaub ntawv */ yog (HAL_GPIO_ReadPin (Push_Button_GPIO_Port, Push_Button_Pin) == GPIO_PIN_RESET) {HAL_GPIO_TogglePin (GPIOD, GPIO_PIN_12); xeev = tseeb; HAL_TIM_Base_Stop_IT (& htim1); }}

/ * USER CODE KAWG 4 */

Tom qab 50mS peb tshawb xyuas yog tias khawm tseem nyob hauv lub xeev pib dua lossis tso tawm, yog tias yog ces peb paub tias lub pob nyob hauv lub xeev tsis ua haujlwm. Tom qab ntawd peb toggle tus coj, ua rau lub xeev muaj tseeb nyob rau hauv thiaj li yuav tuaj yeem txheeb xyuas lwm lub pob nyem thiab nres lub sijhawm kom thiaj tuaj yeem rov pib dua.

Yog li, txheej txheem no yuav ua kom ntseeg tau tias peb tiv thaiv qhov teeb meem ntog.

Kauj Ruam 5: Xaus

Nov yog txoj cai rau khawm debounce. Kuv xav nco ntsoov tias txoj cai no tau tsim los ntawm kuv thiab kuv tsis yog tus kws tshaj lij programmer. Yog li, muaj tseeb tuaj yeem ua yuam kev. Yog tias koj muaj kev daws teeb meem zoo dua thov nco ntsoov. Tsis txhob hnov qab, yog tias koj ntsib teeb meem thov sau kuv thiab kuv yuav sim pab.

Pom zoo: