ARM
external interrupt로 led 출력
GunwooYun
2022. 4. 24. 12:10
사용보드 : STM32F103RB + I/O board
interrupt callback 함수를 이용한 LED 출력
pc0:7 led output
pa8 switch1
pb4 switch2
sw1 을 누르면 led1->led8 순차적으로 high
sw2 을 누르면 반대로 high
flag 변수를 하나 만들고 interrupt callback 함수에서 플래그 변수를 바꾼다.
while에서 플래그에 따라 동작을 수행한다.
while (1)
{
/*Push PA8 (sw1) Button*/
if(flag_SW1 == 1){
HAL_GPIO_WritePin(GPIOC, led, 1);
HAL_Delay(200);
HAL_GPIO_WritePin(GPIOC, led, 0);
led <<= 1;
if(led > 0x0100) led = 0x0001;
}
/*Push PB4 (sw2) Button*/
if(flag_SW1 == 2){
HAL_GPIO_WritePin(GPIOC, led, 1);
HAL_Delay(200);
HAL_GPIO_WritePin(GPIOC, led, 0);
led >>= 1;
if(led < 0x0001) led = 0x0080;
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/*********************************************/
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_8) //PA8
flag_SW1 = 1;
if(GPIO_Pin == GPIO_PIN_4) // PB4
flag_SW1 = 2;
}