1 步骤:
1.1 初始化ADC
ADC_HandleTypeDef hadc1; void MX_ADC1_Init(void) { ADC_ChannelConfTypeDef sConfig = {0}; hadc1.Instance = ADC1; hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4; //四分频,ADCCLK=PCLK2/4 hadc1.Init.Resolution = ADC_RESOLUTION_12B; //12位模式 hadc1.Init.ScanConvMode = DISABLE; //非扫描模式 hadc1.Init.ContinuousConvMode = DISABLE; //非连续转换模式 hadc1.Init.DiscontinuousConvMode = DISABLE; //禁止不连续采样模式 hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; //使用软件触发 hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; //软件触发 hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; //右对齐(推荐) hadc1.Init.NbrOfConversion = 1; //1个转换在规则序列中 hadc1.Init.DMAContinuousRequests = DISABLE; //关闭DMA请求 hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV; //关闭EOC中断 HAL_ADC_Init(&hadc1); //初始化
1.2 配置ADC底层驱动,配置引脚
void HAL_ADC_MspInit(ADC_HandleTypeDef* adcHandle) { GPIO_InitTypeDef GPIO_InitStruct = {0}; if(adcHandle->Instance==ADC1) //判断是否为ADC1 { __HAL_RCC_ADC1_CLK_ENABLE(); //使能ADC1时钟 __HAL_RCC_GPIOA_CLK_ENABLE(); //开启GPIOA时钟 GPIO_InitStruct.Pin = GPIO_PIN_5; //PA5 GPIO_InitStruct.Mode = GPIO_MODE_ANALOG; //模拟 GPIO_InitStruct.Pull = GPIO_NOPULL; //不带上下拉 HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); HAL_NVIC_SetPriority(ADC_IRQn, 0, 0); HAL_NVIC_EnableIRQ(ADC_IRQn); } }
1.3 配置通道,读取ADC值
uint16_t Get_ADC(uint32_t channel) { ADC_ChannelConfTypeDef sConfig = {0}; sConfig.Channel = channel; //通道,取值范围ADC_CHANNEL_0~ADC_CHANNEL_16 sConfig.Rank = 1; //第1个序列,序列1 sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES; //采样时间 HAL_ADC_ConfigChannel(&hadc1, &sConfig); HAL_ADC_Start(&hadc1); //开启ADC HAL_ADC_PollForConversion(&hadc1,10); //轮询转换 return (uint16_t)HAL_ADC_GetValue(&hadc1); //返回最近转换结果 }
1.4 在main函数中调用Get_ADC(uint32_t channel)
2 使用CubeMX配置
分类:
STM32+HAL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构