#include <stdio.h>
#include <stdint.h>
#include <stm32c0xx_hal.h>
#define GPIO_PORT GPIOA
#define BUTTON_PORT GPIOB
#define GPIO_LED GPIO_PIN_5
#define GPIO_BUTTON GPIO_PIN_3
#define LED_PORT_CLK_ENABLE __HAL_RCC_GPIOA_CLK_ENABLE
//#define PORT_NVIC_ENABLE __HAL_RCC_GPIOB_CLK_ENABLE
void GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_Config;
//========= Конфигурация пина светодиода============
GPIO_Config.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_Config.Pull = GPIO_NOPULL;
GPIO_Config.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_Config.Pin = GPIO_LED;
LED_PORT_CLK_ENABLE();
HAL_GPIO_Init(GPIO_PORT, &GPIO_Config);
//==================================================
GPIO_Config.Mode = GPIO_MODE_IT_RISING;
GPIO_Config.Pull = GPIO_NOPULL;
GPIO_Config.Speed = GPIO_SPEED_FREQ_HIGH;
GPIO_Config.Pin = GPIO_BUTTON;
HAL_GPIO_Init(BUTTON_PORT, &GPIO_Config);
HAL_NVIC_SetPriority(EXTI2_3_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(EXTI2_3_IRQn);
}
void EXTI2_3_IRQHandler(void)
{
HAL_GPIO_EXTI_IRQHandler(GPIO_BUTTON);
}
__weak void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
if(GPIO_Pin == GPIO_PIN_3)
HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
}
int main(void)
{
HAL_Init();
SystemClock_Config();
GPIO_Init();
while (1)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);
HAL_Delay(3000);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_RESET);
HAL_Delay(3000);
}
return 0;
}