ISKBoard example project
Wenxue
2025-09-02 7dc2985c99db42f170d93ba6d013c4dd4e429eeb
按键中断程序
8 files modified
114 ■■■■ changed files
Core/Inc/main.h 9 ●●●●● patch | view | raw | blame | history
Core/Inc/stm32l4xx_hal_conf.h 2 ●●● patch | view | raw | blame | history
Core/Inc/stm32l4xx_it.h 1 ●●●● patch | view | raw | blame | history
Core/Src/board/miscdev.c 23 ●●●●● patch | view | raw | blame | history
Core/Src/gpio.c 10 ●●●●● patch | view | raw | blame | history
Core/Src/main.c 15 ●●●●● patch | view | raw | blame | history
Core/Src/stm32l4xx_it.c 16 ●●●●● patch | view | raw | blame | history
ISKBoard.ioc 38 ●●●● patch | view | raw | blame | history
Core/Inc/main.h
@@ -57,6 +57,15 @@
/* USER CODE END EFP */
/* Private defines -----------------------------------------------------------*/
#define Key1_Pin GPIO_PIN_12
#define Key1_GPIO_Port GPIOB
#define Key1_EXTI_IRQn EXTI15_10_IRQn
#define Key2_Pin GPIO_PIN_13
#define Key2_GPIO_Port GPIOB
#define Key2_EXTI_IRQn EXTI15_10_IRQn
#define Key3_Pin GPIO_PIN_14
#define Key3_GPIO_Port GPIOB
#define Key3_EXTI_IRQn EXTI15_10_IRQn
/* USER CODE BEGIN Private defines */
Core/Inc/stm32l4xx_hal_conf.h
@@ -182,7 +182,7 @@
  */
#define  VDD_VALUE                      3300U /*!< Value of VDD in mv */
#define  TICK_INT_PRIORITY            15U    /*!< tick interrupt priority */
#define  TICK_INT_PRIORITY            1U    /*!< tick interrupt priority */
#define  USE_RTOS                     0U
#define  PREFETCH_ENABLE              0U
#define  INSTRUCTION_CACHE_ENABLE     1U
Core/Inc/stm32l4xx_it.h
@@ -55,6 +55,7 @@
void DebugMon_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);
void EXTI15_10_IRQHandler(void);
/* USER CODE BEGIN EFP */
/* USER CODE END EFP */
Core/Src/board/miscdev.c
@@ -130,3 +130,26 @@
    return leds[which].status;
}
/*
 *+----------------------+
 *|     GPIO Key API     |
 *+----------------------+
 */
#include "main.h" /* Key1_pin, Key2_Pin, Key3_Pin 定义在该头文件下 */
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    if( Key1_Pin == GPIO_Pin )
    {
        blink_led( Led_R, 500 );
    }
    else if( Key2_Pin == GPIO_Pin )
    {
        blink_led( Led_G, 500 );
    }
    else if( Key3_Pin == GPIO_Pin )
    {
        blink_led( Led_B, 500 );
    }
}
Core/Src/gpio.c
@@ -66,6 +66,12 @@
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  /*Configure GPIO pins : Key1_Pin Key2_Pin Key3_Pin */
  GPIO_InitStruct.Pin = Key1_Pin|Key2_Pin|Key3_Pin;
  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
  /*Configure GPIO pins : PC6 PC9 */
  GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_9;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
@@ -80,6 +86,10 @@
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
  /* EXTI interrupt init*/
  HAL_NVIC_SetPriority(EXTI15_10_IRQn, 2, 0);
  HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
}
/* USER CODE BEGIN 2 */
Core/Src/main.c
@@ -99,20 +99,7 @@
  /* USER CODE BEGIN WHILE */
  while (1)
  {
      /* Blink Red Led */
      turn_led(Led_R, ON);
      HAL_Delay(200);
      turn_led(Led_R, OFF);
      HAL_Delay(200);
      /* Blink Green Led */
      toggle_led(Led_G);
      HAL_Delay(200);
      toggle_led(Led_G);
      HAL_Delay(200);
      /* Blink Blue Led */
      blink_led(Led_B, 200);
      HAL_Delay(5000);
    /* USER CODE END WHILE */
Core/Src/stm32l4xx_it.c
@@ -198,6 +198,22 @@
/* please refer to the startup file (startup_stm32l4xx.s).                    */
/******************************************************************************/
/**
  * @brief This function handles EXTI line[15:10] interrupts.
  */
void EXTI15_10_IRQHandler(void)
{
  /* USER CODE BEGIN EXTI15_10_IRQn 0 */
  /* USER CODE END EXTI15_10_IRQn 0 */
  HAL_GPIO_EXTI_IRQHandler(Key1_Pin);
  HAL_GPIO_EXTI_IRQHandler(Key2_Pin);
  HAL_GPIO_EXTI_IRQHandler(Key3_Pin);
  /* USER CODE BEGIN EXTI15_10_IRQn 1 */
  /* USER CODE END EXTI15_10_IRQn 1 */
}
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
ISKBoard.ioc
@@ -3,6 +3,7 @@
CAD.pinconfig=
CAD.provider=
File.Version=6
GPIO.groupedBy=Group By Peripherals
KeepUserPlacement=false
Mcu.CPN=STM32L431RCT6
Mcu.Family=STM32L4
@@ -15,11 +16,14 @@
Mcu.Pin0=PH0-OSC_IN (PH0)
Mcu.Pin1=PH1-OSC_OUT (PH1)
Mcu.Pin2=PB2
Mcu.Pin3=PC6
Mcu.Pin4=PC9
Mcu.Pin5=PD2
Mcu.Pin6=VP_SYS_VS_Systick
Mcu.PinsNb=7
Mcu.Pin3=PB12
Mcu.Pin4=PB13
Mcu.Pin5=PB14
Mcu.Pin6=PC6
Mcu.Pin7=PC9
Mcu.Pin8=PD2
Mcu.Pin9=VP_SYS_VS_Systick
Mcu.PinsNb=10
Mcu.ThirdPartyNb=0
Mcu.UserConstants=
Mcu.UserName=STM32L431RCTx
@@ -27,6 +31,7 @@
MxDb.Version=DB.6.0.150
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.EXTI15_10_IRQn=true\:2\:0\:true\:false\:true\:true\:true\:true
NVIC.ForceEnableDMAVector=true
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
@@ -34,8 +39,23 @@
NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true\:false
NVIC.SysTick_IRQn=true\:1\:0\:true\:false\:true\:false\:true\:false
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
PB12.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI
PB12.GPIO_Label=Key1
PB12.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
PB12.Locked=true
PB12.Signal=GPXTI12
PB13.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI
PB13.GPIO_Label=Key2
PB13.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
PB13.Locked=true
PB13.Signal=GPXTI13
PB14.GPIOParameters=GPIO_Label,GPIO_ModeDefaultEXTI
PB14.GPIO_Label=Key3
PB14.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
PB14.Locked=true
PB14.Signal=GPXTI14
PB2.GPIOParameters=PinState
PB2.Locked=true
PB2.PinState=GPIO_PIN_SET
@@ -133,6 +153,12 @@
RCC.VCOInputFreq_Value=8000000
RCC.VCOOutputFreq_Value=160000000
RCC.VCOSAI1OutputFreq_Value=64000000
SH.GPXTI12.0=GPIO_EXTI12
SH.GPXTI12.ConfNb=1
SH.GPXTI13.0=GPIO_EXTI13
SH.GPXTI13.ConfNb=1
SH.GPXTI14.0=GPIO_EXTI14
SH.GPXTI14.ConfNb=1
VP_SYS_VS_Systick.Mode=SysTick
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
board=custom