Введите текст заголовка

Страница на этапе разработки

В данном уроке мы напишем программный код который будет запускать АЦП через заданные промежутки времени, то есть по таймеру. Данная возможность может понадобиться если Вам не нужно постоянно считывать значения с ножки АЦП.
Для начала настроим наш АЦП:
Использовать будем ADC1 нулевой канал.

Теперь необходимо установить событие по которому будет запускаться наш АЦП:

Запускаться наш АЦП будет от Timer3, для этого External Trigger Conversion Source ставим Timer3 Trigger Out event.

/* USER CODE BEGIN Includes */
#include <stdio.h>
#include <string.h>
/* USER CODE END Includes */

/* USER CODE BEGIN PTD */
void send_str(char* str);
/* USER CODE END PTD */

/* USER CODE BEGIN PV */
volatile uint16_t adc=0;
char trans_str[14]={0,};
/* USER CODE END PV */

/* USER CODE BEGIN 0 */
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){
 if(hadc->Instance == ADC1){
  adc=HAL_ADC_GetValue(&hadc1);
sprintf(trans_str,»adc = %5i; «,adc);
send_str(trans_str);
send_str(«\r\n»);
  adc=0;
  }
 }
void send(char chr) {
while(!(USART1->SR & USART_SR_TC));
USART1->DR = chr;
}
 
void send_str(char* str) {
int i=0;
while(str[i])
send(str[i++]);
}
/* USER CODE END 0 */
 
/* USER CODE BEGIN 2 */
HAL_ADCEx_Calibration_Start(&hadc1);
HAL_ADC_Start_IT(&hadc1);
HAL_TIM_Base_Start(&htim3);
/* USER CODE END 2 */