欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: stm32單片機AD為什么兩個通道數值一樣啊? [打印本頁]

作者: 2979181478    時間: 2023-7-29 15:43
標題: stm32單片機AD為什么兩個通道數值一樣啊?
int main(void)
{
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  MX_ADC1_Init();
  printf("this is adc\n");

  while (1)
  {
   HAL_ADC_Start(&hadc1);
      
        while((hadc1.Instance->DR)==RESET);
        temp=HAL_ADC_GetValue(&hadc1);
        printf("light adc=%d\n",temp);
      
               
        while((hadc1.Instance->DR)==RESET);
ht adc2=%d\n",temp);

                HAL_Delay(1000);
}
        }



作者: liyonghua111    時間: 2023-7-30 13:59
在你的代碼中,你只啟動并讀取了一個ADC通道(hadc1),然后兩次打印出這個通道的值。所以,你看到的兩個數值是一樣的,因為它們都來自同一個ADC通道。

如果你想從兩個不同的ADC通道獲取值,你需要分別啟動和讀取每個通道。例如,假設你有兩個ADC通道:hadc1和hadc2,你可以這樣修改你的代碼:

c
int main(void)
{
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  MX_ADC1_Init();
  printf("this is adc\n");

  while (1)
  {
    // Start ADC for channel 1
    HAL_ADC_Start(&hadc1);
    while((hadc1.Instance->DR)==RESET);
    temp1=HAL_ADC_GetValue(&hadc1);
    printf("light adc=%d\n",temp1);

    // Start ADC for channel 2
    HAL_ADC_Start(&hadc2); // Assuming you have hadc2 for the second channel
    while((hadc2.Instance->DR)==RESET);
    temp2=HAL_ADC_GetValue(&hadc2);
    printf("ht adc2=%d\n",temp2);

    HAL_Delay(1000);
  }
}
請注意,你需要確保你已經正確地初始化了第二個ADC通道(在這個例子中是hadc2)。此外,我使用了兩個不同的變量(temp1和temp2)來存儲每個通道的值,以避免混淆。
作者: spirit01    時間: 2023-7-30 14:10
liyonghua111 發表于 2023-7-30 13:59
在你的代碼中,你只啟動并讀取了一個ADC通道(hadc1),然后兩次打印出這個通道的值。所以,你看到的兩個數 ...

厲害厲害
作者: 2979181478    時間: 2023-7-30 15:35
你好我是用的adc多通道掃描的方式,也就是只是使用adc1
作者: 2979181478    時間: 2023-7-30 15:36
不是說每當一個通道讀取完成后就會置位eoc嗎
作者: TTQ001    時間: 2023-7-31 01:05
代碼只是讀取相同的通道,因此讀數應該相同。
作者: 2979181478    時間: 2023-7-31 08:56
可是我是多通道連續掃描啊




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1