原理圖如下,電壓配置的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,搞了很久看不出錯誤在哪兒
有沒有大佬幫忙看看程序的,謝謝大家了
|