Isi kandungan:
- Langkah 1: Keperluan Perkakasan dan Perisian
- Langkah 2: Memahami Masalah
- Langkah 3: Konfigurasi STM32CubeMX
- Langkah 4: Pembangunan Perisian Keil
- Langkah 5: Kesimpulannya
Video: Butang STM32CubeMX Melantun Dengan Selang: 5 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Hai, dalam tutorial ini saya akan cuba memberikan penyelesaian mudah untuk mengelakkan pantulan butang yang merupakan masalah yang sangat serius. Di internet terdapat banyak video untuk menawarkan penyelesaian untuk masalah ini, tetapi bukan video untuk gangguan luaran. Dalam semua video ini tekan butang diperiksa dengan kaedah pengundian yang tidak efisien. Oleh itu, mari kita mulakan!
Langkah 1: Keperluan Perkakasan dan Perisian
Keperluan perkakasan:
- Lembaga pengembangan ARM STM32
- Komputer
Keperluan perisian:
- STM32CubeMX
- Keil uVision5
Langkah 2: Memahami Masalah
Oleh itu, kami cuba mencari jalan keluar untuk masalah pantulan butang. Oleh itu, kita harus memahami masalahnya. Oleh itu, apabila kita menekan butang, ia harus menjadi keadaan yang bertentangan dengan keadaan sebelumnya. Contohnya, jika TINGGI ia mesti RENDAH dan jika RENDAH, maka TINGGI. Walau bagaimanapun, ini adalah keadaan ideal (dalam PROTEUS:)) Pada hakikatnya, apabila kita menekan butang, ia mula melantun antara TINGGI dan RENDAH sebelum ia berada dalam keadaan terbiar. Jadi, berpura-pura bahawa ia telah ditekan beberapa kali yang menimbulkan masalah. Jadi, apa yang harus kita lakukan?
Di sini saya ingin perhatikan bahawa dalam contoh ini, kita akan menggunakan gangguan luaran untuk mengesan tekan butang. Oleh itu, setelah kita mengesan tekan butang, kita perlu menunggu sedikit masa, seperti 50mS untuk mencapai keadaan tidak aktif dan periksa semula sama ada butang berada dalam keadaan tidak aktif atau tidak. Sekiranya dalam keadaan tidak berfungsi maka kita dapat meneruskan tugas kita. Oleh itu, mari lihat kodnya:)
Langkah 3: Konfigurasi STM32CubeMX
Oleh itu, kita perlu terlebih dahulu mengaktifkan gangguan luaran untuk butang tekan kita (saya anggap di sini bahawa anda menggunakan papan penemuan STM32F407VG):
- Pada tab "Pinout & Configuration" klik pada pin PA0 yang disambungkan ke butang tekan dan pilih GPIO_EXTI0 yang membolehkan gangguan luaran pada pin tersebut.
- Tukar "label pengguna" pin menjadi "Push_Button" atau apa sahaja yang anda mahukan.
Kemudian, kita perlu mengkonfigurasi pemasa untuk membuat kelewatan masa 50mS:
- Masukkan bahagian "Pemasa"
- Klik pada TIM1
- Pilih "Jam Dalaman" sebagai sumber Jam
-
Dalam konfigurasi (Sekiranya anda ingin memahami bahagian ini, sila rujuk tutorial ini, "Kawalan Motor Servo Dengan STM32F4 ARM MCU" sangat disyorkan):
- Tetapkan prescaler sebagai 32000
- Dan tempoh kaunter hingga 50
- Di tab "Tetapan NVIC" aktifkan semua gangguan
Dayakan LED sebagai output:
Klik pada PD12 dan tetapkan sebagai "GPIO_Output"
Kemudian, konfigurasikan jam seperti dalam gambar yang diberikan di atas dan hasilkan kodnya.
Langkah 4: Pembangunan Perisian Keil
Pertama, kita menentukan pemboleh ubah keadaan yang akan memastikan bahawa kita tidak memulakan pemasa di dalam gangguan luaran ketika berlaku pantulan:
/ * KOD PENGGUNA BEGIN PFP * / keadaan bool = benar; / * PFP AKHIR KOD PENGGUNA * /
Kemudian, kami menulis ISR untuk gangguan luaran:
batal HAL_GPIO_EXTI_Callback (uint16_t GPIO_Pin) {if (GPIO_Pin == Push_Button_Pin && state == true) {HAL_TIM_Base_Start_IT (& htim1); nyatakan = salah; } lain {_NOP (); }}
Apabila butang ditekan, kami memeriksa apakah itu butang tekan yang ditentukan dan sama ada keadaannya benar. Pada awalnya keadaan akan benar untuk memasukkan pernyataan if. Setelah masuk, kami memulakan pemasa dan membuat keadaan tidak benar untuk memastikan bahawa memantul tidak akan memulakan semula pemasa.
Kemudian, kami menulis ISR untuk gangguan pemasa:
batal HAL_TIM_PeriodElapsedCallback (TIM_HandleTypeDef * htim) {/ * Cegah peringatan kompilasi argumen yang tidak digunakan * / TIDAK DIGUNAKAN (htim);
/ * CATATAN: Fungsi ini tidak boleh diubah, apabila panggilan balik diperlukan, HAL_TIM_PeriodElapsedCallback boleh dilaksanakan dalam fail pengguna * / jika (HAL_GPIO_ReadPin (Push_Button_GPIO_Port, Push_Button_Pin) == GPIO_PIN_RESET) {HAL_GPIO_TogglePin (GPIOD, GPIO) nyatakan = benar; HAL_TIM_Base_Stop_IT (& htim1); }}
/ * KOD PENGGUNA TAMAT 4 * /
Selepas 50mS kita memeriksa apakah butang masih dalam keadaan semula atau dilepaskan, jika ya maka kita tahu butang itu dalam keadaan tidak aktif. Kemudian kita beralih arah, buat keadaan benar agar dapat mengesan tekan butang lain dan berhenti pemasa agar dapat memulakannya semula.
Oleh itu, proses ini akan memastikan bahawa kita mengelakkan masalah melantun.
Langkah 5: Kesimpulannya
Ini adalah kod untuk penyingkiran butang. Saya ingin memperhatikan bahawa kod ini dikembangkan oleh saya dan saya bukan pengaturcara yang pakar. Jadi, pasti ada kesilapan. Sekiranya anda mempunyai penyelesaian yang lebih baik, sila perhatikan. Jangan lupa, sekiranya anda menghadapi masalah sila tulis saya dan saya akan berusaha membantu.
Disyorkan:
Kamera Web Wifi DSLR Powered Raspberry Pi Powered untuk Selang Masa: 3 Langkah (dengan Gambar)
Kamera Web Wifi DSLR Powered Raspberry Pi Powered for Time Lapses: Saya penyedut menonton matahari terbenam dari rumah. Sehinggakan saya mendapat sedikit FOMO apabila ada matahari terbenam yang baik dan saya tidak berada di rumah untuk melihatnya. Kamera web IP menghasilkan kualiti gambar yang mengecewakan. Saya mula mencari cara untuk menggunakan DSLR pertama saya: Cano 2007
Melantun kembali ! Permainan Realiti Maya Menggunakan Arduino & Acclerometer: 9 Langkah
Melantun kembali ! Permainan Realiti Maya Menggunakan Arduino & Acclerometer: Dalam tutorial ini kita akan membuat permainan Realiti Maya menggunakan Arduino dan Acclerometer
Gelangsar Kawalan Gerak untuk Rel Selang Masa: 10 Langkah (dengan Gambar)
Motion Control Slider for Time Lapse Rail: Instruksional ini menerangkan cara menggerakkan rel selang waktu menggunakan motor langkah yang digerakkan oleh Arduino. Kami akan memberi tumpuan terutamanya pada Motion Controller yang menggerakkan motor langkah dengan andaian anda sudah mempunyai rel yang ingin anda bermotor. Sebagai contoh apabila dis
Pengawal Panorama Selang Masa Arduino: 8 Langkah (dengan Gambar)
Pengawal Panorama Arduino Time-Lapse: Pengawal Panorama untuk Kamera GoProPengawal akan memutar GoPro anda pada sudut yang ditetapkan untuk jangka masa yang ditetapkan atau akan memutarkan GoPro anda untuk putaran penuh untuk jangka masa yang ditetapkan. Projek ini didasarkan pada arahan asal oleh Tyler Winegarner Lihat
Mekanisme Pan and Tilt untuk Selang Masa DSLR: 7 Langkah (dengan Gambar)
Mekanisme Pan dan Tilt untuk Selang Masa DSLR: Saya mempunyai beberapa motor stepper yang tergeletak dan benar-benar mahu menggunakannya untuk membuat sesuatu yang sejuk. Saya memutuskan bahawa saya akan membuat sistem Pan and Tilt untuk kamera DSLR saya supaya saya dapat membuat kelewatan masa yang sejuk. Item yang anda perlukan: 2x motor stepper -htt