[STM32F407VG Discovery] External Interrupt
by JungWook_이번에는 PA0에 연결된 User Button을 인터럽트로 연결하겠습니다.
검색해도 잘 안나왔는데 어쩌다보니 해결됐습니다...
libopencm3/cm3/nvic.h
헤더와 libopencm3/stm32/exti.h
헤더가 필요합니다.
nvic_enable_irq(NVIC_EXTI0_IRQ);
gpio_mode_setup(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO0);
exti_select_source(EXTI0, GPIOA);
exti_set_trigger(EXTI0, EXTI_TRIGGER_FALLING);
exti_enable_request(EXTI0);
인터럽트를 설정하는 부분입니다.
void exti0_isr(void)
{
int buffer[2];
buffer[0] = 0xa5;
current_state = gpio_get(GPIOA, GPIO0);
/* Button falling */
if(current_state == true && prev_state == false)
{
prev_state = current_state;
command = !command;
if(command)
{
gpio_port_write(GPIOD, GPIOD | GPIO12);
buffer[1] = 0x60;
send_buffer(USART2, buffer);
}
else
{
gpio_port_write(GPIOD, GPIOD & ~GPIO12);
buffer[1] = 0x65;
send_buffer(USART2, buffer);
}
}
/* button rising */
else if(current_state == false && prev_state == true)
{
prev_state = current_state;
}
}
클릭할 때마다 녹색 LED를 점멸하고 usart2번에 데이터를 보내는 코드입니다.
'Embedded' 카테고리의 다른 글
[STM32F407VG Discovery] Push Button (0) | 2021.02.18 |
---|---|
[STM32F407VG Discovery] Toggle LED (0) | 2021.02.18 |
[STM32F407VG Discovery] PlatformIO 사용 (0) | 2021.02.18 |
[Sensor] TFMini Plus on Arduino Leonardo (0) | 2019.11.28 |
[Verilog] 반가산기 (0) | 2018.05.31 |
블로그의 정보
hongmono
JungWook_