gpt4 book ai didi

c - STM32 上的电压测量

转载 作者:太空宇宙 更新时间:2023-11-04 07:46:20 25 4
gpt4 key购买 nike

我是 ANSI C @STM32 的新手,但我尝试使用分压器和模拟 GPIO 测量电压(~12V)。

我试过:

value = HAL_GPIO_ReadPin(VOLTAGE_GPIO_Port, VOLTAGE_Pin);

但它总是返回 0

然后我尝试使用 ADC(我不知道那是必需的)

value = HAL_ADC_GetValue(&hadc1);

但还是0。

在 Arduino 上你可以简单的使用:

value = analogRead(1);

并且有效。

这里是 ADC channel 的初始化:

    static void MX_ADC1_Init(void)
{

/* USER CODE BEGIN ADC1_Init 0 */

/* USER CODE END ADC1_Init 0 */

ADC_ChannelConfTypeDef sConfig = {0};

/* USER CODE BEGIN ADC1_Init 1 */

/* USER CODE END ADC1_Init 1 */
/** Common config
*/
hadc1.Instance = ADC1;
hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
hadc1.Init.ContinuousConvMode = DISABLE;
hadc1.Init.DiscontinuousConvMode = DISABLE;
hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
hadc1.Init.NbrOfConversion = 1;
if (HAL_ADC_Init(&hadc1) != HAL_OK)
{
Error_Handler();
}
/** Configure Regular Channel
*/
sConfig.Channel = ADC_CHANNEL_15;
sConfig.Rank = ADC_REGULAR_RANK_1;
sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5;
if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN ADC1_Init 2 */

/* USER CODE END ADC1_Init 2 */

}

我真的需要一个 ADC channel 吗,没有像 Arduino 这样的“简单”模拟输入吗?

我知道我需要对输入值进行除法以获得正确的电压,但目前我没有得到任何数据。

单片机为STM32F107VCT7

编辑:

现在尝试了以下方法:

HAL_ADC_Start(&hadc1);
if (HAL_ADC_PollForConversion(&hadc1, 1000000) == HAL_OK)
{
g_ADCValue = HAL_ADC_GetValue(&hadc1);

}
HAL_Delay(500);

现在 g_ADCValue 返回值但看起来像随机数......输入电压没有改变并得到各种数据。

找到代码:https://hackaday.io/project/4277-stm32f030f4p6-breakout-board/log/13897-printing-adc-values-over-uart

尝试过 1:1,但它总是品脱 0x3E,改变电压不会产生任何影响

最佳答案

如果您要尝试使用它们,则需要阅读 STM32 HAL 函数的文档。
您缺少一些函数调用,例如 HAL_ADC_Start
HAL_ADC_GetValue 只会在您告诉 ADC 模块开始转换并等待转换完成后返回新的 ADC 读数。

所有这些类型的操作也发生在 Arduino 环境中 - 它们只是对您隐藏以使事情变得简单。

关于c - STM32 上的电压测量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56692702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com