12 #include "stm32f7xx_hal.h" 13 #include "stm32f7xx_hal_adc.h" 15 ADC_HandleTypeDef hadc1;
18 static void MX_ADC1_Init(
void)
20 ADC_ChannelConfTypeDef sConfig;
22 hadc1.Instance = ADC1;
23 hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
24 hadc1.Init.Resolution = ADC_RESOLUTION_12B;
25 hadc1.Init.ScanConvMode = DISABLE;
26 hadc1.Init.ContinuousConvMode = DISABLE;
27 hadc1.Init.DiscontinuousConvMode = DISABLE;
28 hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
29 hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
30 hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
31 hadc1.Init.NbrOfConversion = 1;
32 hadc1.Init.DMAContinuousRequests = DISABLE;
33 hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
34 if(HAL_ADC_Init(&hadc1) != HAL_OK) {
35 SYSERR_PRINT(
"ADC1 Initialize Error.\n");
38 sConfig.Channel = ADC_CHANNEL_6;
40 sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
41 if(HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) {
42 SYSERR_PRINT(
"ADC1 Config Error.\n");
46 void HAL_ADC_MspInit(ADC_HandleTypeDef* hadc)
48 GPIO_InitTypeDef GPIO_InitStruct;
50 if(hadc->Instance==ADC1) {
53 GPIO_InitStruct.Pin = GPIO_PIN_6;
54 GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
55 GPIO_InitStruct.Pull = GPIO_NOPULL;
56 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
60 static int adc_register(
struct st_device *dev,
char *param)
67 static int adc_open(
struct st_device *dev)
72 static int adc_close(
struct st_device *dev)
77 static long adc_read(
struct st_device *dev,
unsigned char *data,
long size)
82 HAL_ADC_Start(&hadc1);
83 HAL_ADC_PollForConversion(&hadc1, 100);
84 val = HAL_ADC_GetValue(&hadc1);
88 *data = ((val >> 8) & 0xff);
101 const device adc_device = {
103 .explan =
"STM32F7 ADC(GPIO PC0)",
104 .register_dev = adc_register,