73 lines
1.6 KiB
C
73 lines
1.6 KiB
C
#include "board_support.h"
|
|
|
|
#include <stm32h7xx_hal.h>
|
|
|
|
void leds_init() {
|
|
__HAL_RCC_GPIOC_CLK_ENABLE();
|
|
|
|
GPIO_InitTypeDef init;
|
|
init.Mode = GPIO_MODE_OUTPUT_PP;
|
|
init.Pin = GPIO_PIN_2 | GPIO_PIN_3;
|
|
init.Pull = GPIO_NOPULL;
|
|
init.Alternate = 0;
|
|
init.Speed = GPIO_SPEED_LOW;
|
|
HAL_GPIO_Init(GPIOC, &init);
|
|
|
|
HAL_GPIO_WritePin(GPIOC, init.Pin, GPIO_PIN_SET);
|
|
}
|
|
|
|
void leds_write(uint8_t idx, bool state) {
|
|
GPIO_TypeDef *gpio;
|
|
uint16_t pin;
|
|
|
|
switch (idx) {
|
|
case LEDS_USER1_GREEN:
|
|
gpio = GPIOC;
|
|
pin = GPIO_PIN_3;
|
|
break;
|
|
case LEDS_USER2_RED:
|
|
gpio = GPIOC;
|
|
pin = GPIO_PIN_2;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
HAL_GPIO_WritePin(gpio, pin, state ? GPIO_PIN_SET : GPIO_PIN_RESET);
|
|
}
|
|
|
|
static EXTI_HandleTypeDef hEXTI13;
|
|
|
|
void btn_init() {
|
|
// pin initialization
|
|
__HAL_RCC_GPIOC_CLK_ENABLE();
|
|
|
|
GPIO_InitTypeDef init;
|
|
init.Mode = GPIO_MODE_INPUT;
|
|
init.Pin = GPIO_PIN_13;
|
|
init.Pull = GPIO_NOPULL;
|
|
init.Alternate = 0;
|
|
init.Speed = GPIO_SPEED_LOW;
|
|
HAL_GPIO_Init(GPIOC, &init);
|
|
|
|
// EXTI13 initialization
|
|
EXTI_ConfigTypeDef extiConf;
|
|
extiConf.Line = EXTI_LINE_13;
|
|
extiConf.GPIOSel = EXTI_GPIOC;
|
|
extiConf.Trigger = EXTI_TRIGGER_RISING;
|
|
extiConf.Mode = EXTI_MODE_INTERRUPT;
|
|
HAL_EXTI_SetConfigLine(&hEXTI13, &extiConf);
|
|
|
|
// enable interrupt source
|
|
HAL_NVIC_SetPriority(EXTI15_10_IRQn, 12, 0); // some medium-low priority
|
|
HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
|
|
}
|
|
|
|
__weak void btn_cb() {
|
|
return;
|
|
}
|
|
|
|
void EXTI15_10_IRQHandler() {
|
|
HAL_EXTI_ClearPending(&hEXTI13, EXTI_TRIGGER_RISING); // clear interrupt
|
|
btn_cb();
|
|
} |