原理图如下,电压配置的3.3V,用一个串口发送数据
HAL库开发,STM32CubeMX配置的项目工程
部分程序如下
- uint16_t ADC_Value = 0,ADC_Vol = 0;
- uint8_t str_buff[64];
- void UART_Send()
- {
- sprintf((char *)str_buff,"采样值:%d,电压值:%d.%d%dV\r\n",ADC_Value,ADC_Vol/100,(ADC_Vol%100)/10,ADC_Vol%10); //格式化输出
- HAL_UART_Transmit(&huart1,str_buff,sizeof(str_buff),1000); //串口输出
- }
-
- void ADC_Get_Value()
- {
- HAL_ADC_Start(&hadc1);
- LED_ON;
- if(HAL_ADC_PollForConversion(&hadc1,10) == HAL_OK)
- {
- ADC_Value = HAL_ADC_GetValue(&hadc1);
- ADC_Vol = ADC_Value * 330 /4096; //转化的电压值,3.3V,12位
- }
- UART_Send();
- LED_OFF;
- HAL_ADC_Stop(&hadc1);
- }
复制代码 然后在主函数main()的while(1)循环里每个500ms执行ADC_Get_Value()
也就是一直获取采样值,然后通过串口发出去
收到的结果一直是0
只有当我把ADC线直接接到3.3V电源上,才正常获取采样值
其他情况都是0,搞了很久看不出错误在哪儿
有没有大佬帮忙看看程序的,谢谢大家了
|