Добавлен ADC SEQ (заготовка пока)

И небольшой рефакторинг
This commit is contained in:
2025-12-26 18:44:38 +03:00
parent 8e350e6a91
commit c7fdf6776f
16 changed files with 1758 additions and 1933 deletions

View File

@@ -12,8 +12,9 @@
//-- Includes ------------------------------------------------------------------
#include "sysclk.h"
#include "gpio.h"
#include "tmr.h"
#include "uart.h"
#include "tmr.h"
#include "adc.h"
void Error_Handler(void);
//-- Общие Конфигурации -------------------------------------------------------
@@ -26,6 +27,13 @@ void Error_Handler(void);
#define USE_TMR2 1
#define USE_TMR3 0
#define USE_ADC_SEQ0 1
#define USE_ADC_SEQ1 0
#define USE_ADC_DC0 0
#define USE_ADC_DC1 0
#define USE_ADC_DC2 0
#define USE_ADC_DC3 0
//#define RETARGET // закоментирован - отключен,
// // разкоментирован - включен
//#define RETARGET_USE_ITM // закоментирован - использовать UART,
@@ -33,7 +41,7 @@ void Error_Handler(void);
// Для дальнейшей настройки RETARGET -> retarget_conf.h
//-- RCU Конфигурации ---------------------------------------------------------
static RCU_PLL_Ref_TypeDef SYSCLK_Oscil_Type = RCU_PLL_Ref_OSIClk;
static RCU_PLL_Ref_TypeDef SYSCLK_Oscil_Type = RCU_PLL_Ref_OSEClk;
#define SYSCLK_CORE_CLOCK_MHZ 100
//-- GPIO Конфигурации --------------------------------------------------------
@@ -42,7 +50,7 @@ static RCU_PLL_Ref_TypeDef SYSCLK_Oscil_Type = RCU_PLL_Ref_OSIClk;
Периферия сама настроит нужные пины в gpiox_config на альтернативные функции
*/
static GPIO_Init_TypeDef gpioa_config[] = {
// Пин, Режим, Выходной режим, Входной режим, Подтяжка, Нагрузка/Скорость
// Пин, Режим, Выходной режим, Входной режим, Подтяжка, Нагрузка/Скорость
{ GPIO_Pin_0, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast },
{ GPIO_Pin_1, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast },
{ GPIO_Pin_2, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast },
@@ -62,7 +70,7 @@ static GPIO_Init_TypeDef gpioa_config[] = {
};
static GPIO_Init_TypeDef gpiob_config[] = {
// Пин, Режим, Выходной режим, Входной режим, Подтяжка, Нагрузка/Скорость
// Пин, Режим, Выходной режим, Входной режим, Подтяжка, Нагрузка/Скорость
{ GPIO_Pin_0, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast },
{ GPIO_Pin_1, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast },
{ GPIO_Pin_2, GPIO_PinMode_Unused, GPIO_OutMode_PP, GPIO_InMode_Schmitt, GPIO_PullMode_Disable, GPIO_DriveMode_HighFast },
@@ -82,52 +90,158 @@ static GPIO_Init_TypeDef gpiob_config[] = {
};
//-- UART Конфигурации --------------------------------------------------------
#if USE_UART0==1
static UART_ExtInit_TypeDef uart0_config = {
//Стоп биты, Четность, Длина посылки, Скорость, FIFO, Направление работы
UART_StopBit_1, UART_ParityBit_Disable, UART_DataWidth_8, 115200, DISABLE, UART_Direction_RxTx,
//Rx Коллбек Tx Коллбек Idle Коллбек Error Коллбек
NULL, NULL, NULL, NULL
};
#endif
#if USE_UART1==1
static UART_ExtInit_TypeDef uart1_config = {
//Стоп биты, Четность, Длина посылки, Скорость, FIFO, Направление работы
UART_StopBit_1, UART_ParityBit_Disable, UART_DataWidth_8, 115200, DISABLE, UART_Direction_RxTx,
//Rx Коллбек Tx Коллбек Idle Коллбек Error Коллбек
NULL, NULL, NULL, NULL
};
#endif
//-- TMR Конфигурации ---------------------------------------------------------
#if USE_TMR0==1
static TMR_Init_TypeDef tmr0_config = {
// Частота Clk МГц, Период обновления Прерывания Запуск конверсии АЦП Реквест DMA Внешнее тактирование Коллбек
SYSCLK_CORE_CLOCK_MHZ, LOAD(0xFFFFFFFF, SYSCLK_CORE_CLOCK_MHZ-1), DISABLE, DISABLE, DISABLE, TMR_ExtInput_Disable, NULL
static TMR_ExtInit_TypeDef tmr0_config = {
//Частота Clk МГц, Период обновления
SYSCLK_CORE_CLOCK_MHZ, LOAD(0xFFFFFFFF, SYSCLK_CORE_CLOCK_MHZ-1),
//Прерывания Запуск конверсии АЦП Реквест DMA Внешнее тактирование
DISABLE, DISABLE, DISABLE, TMR_ExtInput_Disable
};
#endif
#if USE_TMR1==1
static TMR_Init_TypeDef tmr1_config = {
// Частота Clk МГц, Период обновления Прерывания Запуск конверсии АЦП Реквест DMA Внешнее тактирование Коллбек
SYSCLK_CORE_CLOCK_MHZ, FREQ_HZ(10), DISABLE, DISABLE, DISABLE, TMR_ExtInput_Disable, NULL
static TMR_ExtInit_TypeDef tmr1_config = {
//Частота Clk МГц, Период обновления
SYSCLK_CORE_CLOCK_MHZ, FREQ_HZ(10),
//Прерывания Запуск конверсии АЦП Реквест DMA Внешнее тактирование
DISABLE, DISABLE, DISABLE, TMR_ExtInput_Disable
};
#endif
#if USE_TMR2==1
static TMR_Init_TypeDef tmr2_config = {
// Частота Clk МГц, Период обновления Прерывания Запуск конверсии АЦП Реквест DMA Внешнее тактирование Коллбек
SYSCLK_CORE_CLOCK_MHZ, PERIOD_MKS(1000000),ENABLE, DISABLE, DISABLE, TMR_ExtInput_Disable, NULL
static TMR_ExtInit_TypeDef tmr2_config = {
//Частота Clk МГц, Период обновления
SYSCLK_CORE_CLOCK_MHZ, PERIOD_MKS(1000000),
//Прерывания Запуск конверсии АЦП Реквест DMA Внешнее тактирование
ENABLE, DISABLE, DISABLE, TMR_ExtInput_Disable
};
#endif
#if USE_TMR3==1
static TMR_Init_TypeDef tmr3_config = {
// Частота Clk МГц, Период обновления Прерывания Запуск конверсии АЦП Реквест DMA Внешнее тактирование Коллбек
SYSCLK_CORE_CLOCK_MHZ, PERIOD_MKS(1000), DISABLE, DISABLE, DISABLE, TMR_ExtInput_Disable, NULL
//Частота Clk МГц, Период обновления
SYSCLK_CORE_CLOCK_MHZ, PERIOD_MKS(1000),
//Прерывания Запуск конверсии АЦП Реквест DMA Внешнее тактирование
DISABLE, DISABLE, DISABLE, TMR_ExtInput_Disable
};
#endif
//-- UART Конфигурации --------------------------------------------------------
#if USE_UART0==1
static UART_ExtInitTypeDef uart0_config = {
// Стоп биты, Четность, Длина посылки, Скорость, FIFO, Направление работы Коллбек Rx Коллбек Tx Коллбек IDLE Коллбек Error
UART_StopBit_1, UART_ParityBit_Disable, UART_DataWidth_8, 115200, DISABLE, UART_Direction_RxTx, NULL, NULL, NULL, NULL,
//-- ADC SEQ Конфигурации -----------------------------------------------------
static RCU_PeriphClk_TypeDef ADC_ClockSource = RCU_PeriphClk_PLLClk;
static float ADC_ClockMHz = 12.5;
#if USE_ADC_SEQ0==1
static ADC_SEQ_ExtInit_TypeDef adc_seq0_config = {
//Событие запуска секвенсора, Разрешение программного запуска
ADC_SEQ_StartEvent_SwReq, ENABLE,
//Выбор каналов для запросов секвенсора
ADC_CH_Num_0, ADC_CH_Num_1, ADC_CH_Num_2, ADC_CH_Num_3,
//Последний запрос, Усреднение запросов, Усреднение запросов
ADC_SEQ_ReqNum_1, ADC_SEQ_Average_2, DISABLE,
//Кол-во рестартов секвенсора, Усреднение рестартов, Задержка между рестартами
0, DISABLE, 0,
//Разрешение каналов цифровых компараторов
DISABLE, DISABLE, DISABLE, DISABLE,
//Настройка DMA FIFO, Разрешение DMA
ADC_SEQ_DMAFIFOLevel_1, DISABLE,
//Прерывания, Количество запросов для прерывания
ENABLE, 0,
//SEQ Complete Коллбек, Error коллбек
NULL, NULL
};
#endif
#if USE_ADC_SEQ1==1
static ADC_SEQ_ExtInit_TypeDef adc_seq1_config = {
//Событие запуска секвенсора, Разрешение программного запуска
ADC_SEQ_StartEvent_SwReq, ENABLE,
//Выбор каналов для запросов секвенсора
ADC_CH_Num_0, ADC_CH_Num_1, ADC_CH_Num_2, ADC_CH_Num_3,
//Макс. кол-во запросов, Усреднение запросов, Усреднение запросов
ADC_SEQ_ReqNum_0, ADC_SEQ_Average_2, DISABLE,
//Кол-во рестартов секвенсора, Усреднение рестартов, Задержка между рестартами
0, DISABLE, 0,
//Разрешение каналов цифровых компараторов
DISABLE, DISABLE, DISABLE, DISABLE,
//Настройка DMA FIFO, Разрешение DMA
ADC_SEQ_DMAFIFOLevel_1, DISABLE,
//Прерывания, Количество запросов для прерывания
DISABLE, 0,
//SEQ Complete Коллбек, Error коллбек
NULL, NULL
};
#endif
#if USE_UART1==1
static UART_ExtInitTypeDef uart1_config = {
// Стоп биты, Четность, Длина посылки, Скорость, FIFO, Направление работы Коллбек Rx Коллбек Tx Коллбек IDLE Коллбек Error
UART_StopBit_1, UART_ParityBit_Disable, UART_DataWidth_8, 115200, DISABLE, UART_Direction_RxTx, NULL, NULL, NULL, NULL,
//-- ADC DC Конфигурации ------------------------------------------------------
#if USE_ADC_DC0==1
static ADC_DC_ExtInit_TypeDef adc_dc0_config = {
//Включение выхода компаратора
DISABLE,
//Нижний порог, Верхний порог
0, 0,
//Запуск измерения, Канал, Режим срабатывания, Условие срабатывания
ADC_DC_Source_EOC, ADC_CH_Num_1, ADC_DC_Mode_Multiple, ADC_DC_Condition_Low,
//DC Triggered Коллбек, Error коллбек
NULL, NULL
};
#endif
#if USE_ADC_DC1==1
static ADC_DC_ExtInit_TypeDef adc_dc1_config = {
//Включение выхода компаратора
DISABLE,
//Нижний порог, Верхний порог
0, 0,
//Запуск измерения, Канал, Режим срабатывания, Условие срабатывания
ADC_DC_Source_EOC, ADC_CH_Num_2, ADC_DC_Mode_Multiple, ADC_DC_Condition_Low,
//DC Triggered Коллбек, Error коллбек
NULL, NULL
};
#endif
#if USE_ADC_DC2==1
static ADC_DC_ExtInit_TypeDef adc_dc2_config = {
//Включение выхода компаратора
DISABLE,
//Нижний порог, Верхний порог
0, 0,
//Запуск измерения, Канал, Режим срабатывания, Условие срабатывания
ADC_DC_Source_EOC, ADC_CH_Num_3, ADC_DC_Mode_Multiple, ADC_DC_Condition_Low,
//DC Triggered Коллбек, Error коллбек
NULL, NULL
};
#endif
#if USE_ADC_DC3==1
static ADC_DC_ExtInit_TypeDef adc_dc3_config = {
//Включение выхода компаратора
DISABLE,
//Нижний порог, Верхний порог
0, 0,
//Запуск измерения, Канал, Режим срабатывания, Условие срабатывания
ADC_DC_Source_EOC, ADC_CH_Num_4, ADC_DC_Mode_Multiple, ADC_DC_Condition_Low,
//DC Triggered Коллбек, Error коллбек
NULL, NULL
};
#endif
#endif /*__PERIPH_CONFIG_H*/