Добавлено API для UART и TMR

This commit is contained in:
2025-12-26 18:43:40 +03:00
parent c6e1dc049f
commit 8e350e6a91
22 changed files with 4359 additions and 1854 deletions

View File

@@ -9,7 +9,7 @@
*/
//-- Includes ------------------------------------------------------------------
#include "gpio.h"
#include "periph_config.h"
//-- Defines -------------------------------------------------------------------
@@ -18,18 +18,20 @@ void gpio_init(void)
{
RCU_AHBClkCmd(RCU_AHBClk_GPIOA, ENABLE);
RCU_AHBRstCmd(RCU_AHBRst_GPIOA, ENABLE);
RCU_AHBClkCmd(RCU_AHBClk_GPIOB, ENABLE);
RCU_AHBRstCmd(RCU_AHBRst_GPIOB, ENABLE);
/* Сброс пинов */
GPIO_DeInit(GPIOA);
GPIO_DeInit(GPIOB);
// Инициализируем порт A
// Инициализация порта A
for (int i = 0; i < sizeof(gpioa_config) / sizeof(gpioa_config[0]); i++)
{
GPIO_Init(GPIOA, &gpioa_config[i]);
}
// Инициализируем порт B
// Инициализация порта B
for (int i = 0; i < sizeof(gpiob_config) / sizeof(gpiob_config[0]); i++)
{
GPIO_Init(GPIOB, &gpiob_config[i]);
@@ -66,3 +68,28 @@ void gpio_init(void)
// gpio_init.Pin = GPIO_OUT_OD_PB_PINS;
// GPIO_Init(GPIOB, &gpio_init);
}
GPIO_Init_TypeDef *gpio_get_init(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
{
uint8_t pin_index = __builtin_ctz(GPIO_Pin);
if (GPIOx == GPIOA)
{
// Проверяем границы массива
if (pin_index < sizeof(gpioa_config) / sizeof(gpioa_config[0]))
{
return &gpioa_config[pin_index];
}
}
else if (GPIOx == GPIOB)
{
// У тебя была опечатка: возвращал gpioa_config вместо gpiob_config
if (pin_index < sizeof(gpiob_config) / sizeof(gpiob_config[0]))
{
return &gpiob_config[pin_index];
}
}
return NULL;
}