原理图查看
查原理图可以看到GD32F103C8T6的官方开发板GD32303C-START-V1.0的PA1没有接任何东西
使用PA1作为ADC端口

CubeMX配置ADC和时钟
配置ADC通道
启用循环模式
配置此通道ADC分频

配置ADC DMA为循环模式

配置时钟

可根据手册配置最大HZ
GD32F303最高频率设定
生成项目
Keil里面的配置
选择对应的GD32型号

编译参数里面,带上-mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard

置位CPACR寄存器(0xE000ED88)的第20~23这4个比特位(CP10、CP11)
c
(*(volatile uint32_t *)(0xE000ED88)) |= (15 << 20);

编写测试代码
c
uint16_t ADC_ByteData[4];
// 启动ADC DMA
HAL_ADC_Start_DMA(&hadc1, (uint32_t *)ADC_ByteData, 1);
c
//循环采样
float ADC_Data = 0.0;
while (1)
{
/* USER CODE END WHILE */
HAL_Delay(1000);
ADC_Data = (float)ADC_ByteData[0] / 4096.0f * 3.3f ;
printf("AD 0x%04X \r\n", ADC_ByteData[0]);
printf("AD %f V \r\n", ADC_Data);
/* USER CODE BEGIN 3 */
}
运行效果
