yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
STM32-BoardCar📖
0. Get started quickly
  • 0.ReadMe
  • 1. Installation Instructions
  • 2. Version configuration
  • 3. Smart car installation video
  • 4. Precautions for use
1. Introduction to STM32 development board
  • 1. Learn about STM32
  • 2. Introduction to STM32 development board
  • 3. Development board pin assignment
  • 4. Introduction to HAL library and LL library
2. Setting up and using the development environment
  • 1. Common development tools
  • 2. STM32CubeMX Install - Use
  • 3. STM32CubeIDE Install - Use
  • 4. Common Driver Installation
  • 5. Program download and simulation
  • 6. Engineering experience and migration
3. Development board basic tutorial
  • 1. RGB searchlight (GPIO)
  • 2. Buzzer control (GPIO)
  • 3. Button control (EXTI)
  • 4. Serial communication (UASRT)
  • 5. Voltage detection (ADC)
  • 6. Internal temperature sensor(ADC)
  • 7. Independent watchdog(IWDG)
  • 8. Window watchdog(WWDG)
  • 9. Basic timer (TIM6)
  • 10. Universal Timer (TIM3)
  • 11. Advanced timers (TIM1)
  • 12. I2C Communication (IIC)
  • 13. Off-chip Flash (SPI)
  • 14. On-chip Flash (Flash)
  • 15. DMA:USART
  • 16. DMA:SPI
  • 17. DMA:I2C
  • 18. USB communication
  • 19. USB analog U disk
  • 20. FreeRTOS
4. Car expansion tutorial
  • 1. Servo control
  • 2. Basic use of ultrasonic steering gear gimbal
  • 3. Motor control
  • 4. OLED display light sensitivity value
  • 5. Infrared sensor
  • 6. Four-way tracking module
  • 7. Infrared remote control
  • 8. Ultrasonic ranging
  • 9. PS2 controller test
  • 10.K230 Vision Module
  • 11.AI voice interaction integration module
5. Robot car tutorials
  • 1. Car line patrol
  • 2. Ultrasonic follow
  • 3. Ultrasonic obstacle avoidance
  • 4. Ultrasonic obstacle avoidance (servo gimbal version)
  • 5. Infrared sensor obstacle avoidance
  • 6. Infrared remote control
  • 7. PS2 handle remote control
  • 8.K230 face tracking on PTZ
  • 9.K230 color tracking
  • 10.K230 Color Line Patrol
  • 11.K230 QR code command
  • 12.K230 machine code tracking
  • 13.K230 road sign indication action (voice)
  • 14.K230 color response (voice)
  • 15.K230 gesture control (voice)
  • 16.K230 Rock-Paper-Scissors Game (Voice)
6. Operation video
  • 1-How to install STM32CubeIDE software
  • 2-How to create Demo project
  • 3-How to download code into STM32 robot car
  • 4-How to open and compile a code file for STM32
  • 5-About IR control and Charge battery
Download
  • Code
  • SCH
  • Software File
  • STM32 Chip DataSheet
  • Installation manual
Download ZIP

Welcome to STM32-BoardCar repository

3. Button control (EXTI)

Button control

Button control1. Software-Hardware2. Brief principle1. Hardware schematic diagram2. Physical connection diagram3. Control principle3. Project configuration1. Description2. Pin configuration4. Main functions1. User function2. HAL library function analysis5. Experimental phenomena

This tutorial demonstrates: triggering an external interrupt through GPIO input, and controlling the LED and buzzer according to the key that triggers the interrupt.

1. Software-Hardware

  • STM32F103CubeIDE

  • STM32 Robot Development Board

    GPIO: chip internal peripherals

    Buttons, LEDs and active buzzer: onboard

  • Type-C data cable or ST-Link

    Download programs or simulate the development board

2. Brief principle

1. Hardware schematic diagram

image-20231028224027149

2. Physical connection diagram

image-20231028224215655

3. Control principle

Trigger an external interrupt by pressing a button, and control the LED to turn on and off and the buzzer to sound according to the triggered button.

LED: High level lights up, low level turns off

LED(schematic name)control pinFunction
LED1PG14Control LED1 to turn on and off
LED2PG15Control LED2 to turn on and off

KEY: High level by default, low level when the button is pressed

KEY(schematic name)control pinFunction
KEY1PG3Change the KEY1 pin level state
KEY2PG4Change the KEY2 pin level state
KEY3PG5Change the KEY3 pin level state

Buzzer: High level sounds, low level does not sound

Buzzer(schematic name)control pinFunction
BuzzerPG12Control the buzzer sound
  • NVIC (Nested Vectored Interrupt Controller)

NVIC controls the interrupt-related functions of the entire chip and provides a reliable interrupt handling mechanism for the system.

  • Interrupt Priority

Preemption priority: The preemption priority is used to determine the relative priority between interrupts. When an interrupt with a high preemption priority occurs, it can interrupt the executing interrupt with a low preemption priority;

Response priority: When multiple interrupt sources have the same preemption priority, the interrupt with high response priority will be processed first and will not be interrupted by interrupts with the same preemption priority but low response priority.

  • EXTI (External Interrupt)

The external interrupt/event controller consists of 19 edge detectors that generate event/interrupt requests.

Each input line can be independently configured with input type (pulse or suspend) and corresponding trigger event (rising edge, falling edge, or both edges), and each input line can be independently shielded.

External Interrupt/Event Line Image

image-20231028234649354

xxxxxxxxxx
EXTI0~EXIT4 each have independent interrupt channels
EXTI5~EXIT9 share the same interrupt channel: EXTI9_5_IRQ
EXTI10~EXIT15 share the same interrupt channel: EXTI15_10_IRQ
KEY(schematic name)control pinExternal interrupt service function
KEY1PG3EXTI3_IRQHandler function
KEY2PG4EXTI4_IRQHandler function
KEY3PG5EXTI9_5_IRQHandler function

This section tutorial external interrupt trigger mode: rising edge trigger.

3. Project configuration

Project configuration: Prompt configuration options during STM32CubeIDE project configuration

1. Description

Omitted project configuration part: New project, chip selection, project configuration, SYS of pin configuration, RCC configuration, clock configuration and project configuration content

The project configuration part that is not omitted is the key point that needs to be configured in this tutorial.

xxxxxxxxxx
Please refer to [2. Development environment construction and use: STM32CubeIDE installation and use] to understand how to configure the omitted parts of the project.

2. Pin configuration

  • Configure specified pin function

You can directly select the corresponding pin number in the pin view, and the corresponding options will appear when you left-click the mouse.

image-20231028225903654

  • GPIO

image-20231028225704716

  • NVIC

Later, when it comes to modifying the interrupt priority, you need to enter the NVIC interface settings. The default priority is used here.

image-20231028230920246

  • Advanced Settings

image-20231028231506913

  • Generate code

image-20231011102854602

4. Main functions

It mainly introduces the functional code written by the user. For detailed code, you can open the project file provided by us yourself and enter the Bsp folder to view the source code. **

1. User function

function :Set_led

function prototypevoid Set_led(uint8_t id, uint8_t i)
Function descriptionSet the LED to turn on and off
Input parameter 1id:LED id(1:LED1,2:LED2)
Input parameter 2i:Switch (0: off, 1: on)
return valuenone

2. HAL library function analysis

The HAL library functions that have been introduced in the previous tutorial will not be introduced again in the tutorial!

xxxxxxxxxx
If you want to find the HAL library and LL library function analysis involved in the entire tutorial, you can view the documents in the folder [8. STM32 Manual: STM32F1_HAL Library and LL Library_User Manual]

function :HAL_NVIC_SetPriority

function prototypevoid HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
Function descriptionConfigure interrupt priority
Input parameter 1IRQn:Interrupt source
Input parameter 2PreemptPriority
Input parameter 3SubPriority
return valuenone

function :HAL_NVIC_EnableIRQ

function prototypevoid HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
Function descriptionEnable interrupt source
Input parameterIRQn: interrupt source
return valuenone

function :HAL_GPIO_EXTI_IRQHandler

function prototypevoid HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin)
Function descriptionGeneral processing function after all external interrupts occur
Input parameterGPIO_Pin: pin of external interrupt source
return valuenone

function :HAL_GPIO_EXTI_Callback

function prototypevoid HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
Function descriptionExternal interrupt callback function
Input parameterGPIO_Pin: pin of external interrupt source
return valuenone
Precautions1. This function is called by the external interrupt general processing function HAL_GPIO_EXTI_IRQHandler
2. This function is used to handle specific interrupt tasks

5. Experimental phenomena

After downloading the program successfully, press the RESET button of the development board and observe the development board phenomenon!

xxxxxxxxxx
For program download, please refer to [2. Development environment construction and use: program download and simulation]

Phenomenon:

Press the KEY1 button and release it: the buzzer will not sound, LED1 and LED2 will turn off

Press the KEY2 button and release: LED1 lights up

Press the KEY3 button and release: the buzzer sounds and LED2 lights up

For experimental phenomena, please see [Button Control_Experimental Phenomenon.mp4]
Buzzer control (GPIO)
Serial communication (UASRT)

COMPANY

  • About us
  • Team Style
  • Blog

LEARNING & EXPLORATION

  • Tutorials
  • Edge AI hardware
  • Educational robots
  • Embedded intelligent hardware

WHERE TO BUY

  • Yahboom Online Store
  • Amazon
  • Alibaba
  • AliExpress
  • Mercado

TECHNOLOGY SUPPORT

  • Email: support@yahboom.com

BE A DISTRIBUTOR

  • Email: sales@yahboom.com
QR Code

Copyright © 2017-2026 Yahboom. All Rights Reserved.

EN/中文