728x90
반응형
0. ADC 구성
ADC 는 3가지 모드로 구성되어 있습니다.
- Polling 모드
- IT(인터럽트) 모드
- DMA 모드
Polling 모드부터 올릴 예정입니다.
1. STM32CubeMX 설정
single 모드 로 해봤습니다.
그리고 샘플링 시간 계산 입니다.
2. main.c
int fputc(int ch, FILE *f)
{
uint8_t temp[1]={ch};
HAL_UART_Transmit(&huart1, temp, 1, 2);
return(ch);
}
/* USER CODE END 0 */
int main(void)
{
/* USER CODE BEGIN 1 */
uint32_t ADC_Val=0;
/* USER CODE END 1 */
/* MCU Configuration----------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_ADC1_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */
while(!(HAL_ADCEx_Calibration_Start(&hadc1)==HAL_OK));
printf("test_adc\r\n");
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_ADC_Start(&hadc1);
ADC_Val=HAL_ADC_GetValue(&hadc1);
printf("%d\r\n",ADC_Val);
HAL_Delay(500);
}
/* USER CODE END 3 */
}
3. 소스 해석
int fputc(int ch, FILE *f) { uint8_t temp[1]={ch}; HAL_UART_Transmit(&huart1, temp, 1, 2); return(ch); } |
printf 쓰기위함 함수 |
while(!(HAL_ADCEx_Calibration_Start(&hadc1)==HAL_OK)); printf("test_adc\r\n"); |
Calibration 완료 후 printf 출력 |
HAL_ADC_Start(&hadc1); ADC_Val=HAL_ADC_GetValue(&hadc1); printf("%d\r\n",ADC_Val); HAL_Delay(500); |
single mode 요청 할때마다 값을 가져온다 |
4. 결과
https://hnydiy.tistory.com/43?category=786244
https://hnydiy.tistory.com/47?category=786244
728x90
반응형
'공부 > STM32F1' 카테고리의 다른 글
27.[stm32f103][hal] ADC (3) -DMA ADC (3) | 2018.02.28 |
---|---|
26.[stm32f103][hal] ADC (2) - Polling Multi 모드 (2) | 2017.12.21 |
24.[stm32f103][hal] TFT LCD (구동칩ads7846) 터치 데이터 TFT 화면에 쓰기 (0) | 2017.12.08 |
23.[stm32f103][hal] TFT LCD (구동칩ads7846) 터치 하기 (0) | 2017.12.07 |
22.[stm32f103][hal] TFT LCD (구동칩ssd1289) 문자 쓰기 (0) | 2017.11.30 |