#3 Добавлены файлы для реализации алгоритмов (не все готово)
Основные функции по файлам: - tester_adc_func Cодержит функции для управления АЦП и DMA. Для DMA есть хендлер (ADC_DMA_Handler), который перекидывает готовую половину DMA буфера в структуру АЦП Функция ADC_DMA_ReadForPeak стащена с МЗКТЭ и пока просто простаивает и ждет пока буффер заполниться, но можно потом добавить какую-то обрбаотку буфера, пока он еще заполяется. После окончания работы АЦП эта функция находит максимальное зачение и рассчитывает среднее значение в этом "пике" Добавлена функция ADC_ReadContinuous, которая считывает АЦП в континуес режиме, значение запихивает в буффер. Прерывается при таймауте.: - tester_func Cодержит функции для тестирования диодов: в обратном подключении (TESTER_TestDiode_NegativePower), в прямом подключении (TESTER_TestDiode_PositivePower), при переходе от прямого к обратному (TESTER_TestDiode_PosNegPower). Для работы АЦП, вызывает функции из tester_adc_func. Пока всё максимально примитивно, надо будет доработать - tester_main Содержит функции инициализации, подготовка к циклу и главный цикл тестер. По флагам вызываются соответствующие функции тестирования диодов из tester_func. Все функции этого файла вызываются в main.c. -tester_config.h Пока содержит настройки для тестера: пины для ключей, состяония подключенного и отключенного питания, которые подключают питание, настройки для АЦП
This commit is contained in:
@@ -98,7 +98,7 @@ void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle)
|
||||
hdma_adc1.Init.MemInc = DMA_MINC_ENABLE;
|
||||
hdma_adc1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
|
||||
hdma_adc1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
|
||||
hdma_adc1.Init.Mode = DMA_CIRCULAR;
|
||||
hdma_adc1.Init.Mode = DMA_NORMAL;
|
||||
hdma_adc1.Init.Priority = DMA_PRIORITY_LOW;
|
||||
if (HAL_DMA_Init(&hdma_adc1) != HAL_OK)
|
||||
{
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
/* Private includes ----------------------------------------------------------*/
|
||||
/* USER CODE BEGIN Includes */
|
||||
#include "rs_message.h"
|
||||
#include "tester_adc_func.h"
|
||||
#include "tester_main.h"
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* Private typedef -----------------------------------------------------------*/
|
||||
@@ -103,23 +103,18 @@ int main(void)
|
||||
/* USER CODE BEGIN 2 */
|
||||
// HAL_ADC_Start_DMA(&hadc1, (uint32_t *)buff, ADC_BUFF_SIZE);
|
||||
// HAL_TIM_Base_Start_IT(&htim3);
|
||||
TESTER_ADC_StructInit(&tester_adc);
|
||||
TESTER_Init(&TESTER);
|
||||
/* USER CODE END 2 */
|
||||
|
||||
/* Infinite loop */
|
||||
/* USER CODE BEGIN WHILE */
|
||||
TESTER_pre_while(&TESTER);
|
||||
while (1)
|
||||
{
|
||||
if(delay_en)
|
||||
msDelay(delay);
|
||||
// HAL_UART_Transmit(&huart1, (uint8_t *)"axaxa", 5, 100);
|
||||
TESTER_main_delay(&TESTER);
|
||||
TESTER_main_while(&TESTER);
|
||||
HAL_UART_Transmit(&huart1, (uint8_t *)"axaxa", 5, 100);
|
||||
|
||||
ADC_DMA_StartRead(&tester_adc);
|
||||
for(int i = 0; i < before_pulse_delay; i++);
|
||||
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, 1);
|
||||
for(int i = 0; i < pulse_delay; i++);
|
||||
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, 0);
|
||||
ADC_DMA_ReadWhileDMA(&tester_adc, 1000);
|
||||
/* USER CODE END WHILE */
|
||||
|
||||
/* USER CODE BEGIN 3 */
|
||||
|
||||
Reference in New Issue
Block a user