[APM32F4] 【极海APM32F402 Micro-EVB开发板】--ADC采样

[复制链接]
603|1
dirty123 发表于 2025-8-30 23:55 | 显示全部楼层 |阅读模式
本帖最后由 dirty123 于 2025-8-31 00:05 编辑

本篇讲述使用开发板电阻采样。
一.硬件准备
查阅芯片手册PA0作为ADC采集口,接上可调电阻变位器。选用电位器10K可调范围。
1971668b32050ad8d6.jpg

二.代码
  1. int main(void)
  2. {
  3.     /* ADC convert to voltage */
  4.     float voltage = 0;

  5.     USART_Config_T USART_ConfigStruct;

  6.     /* USART config */
  7.     USART_ConfigStructInit(&USART_ConfigStruct);
  8.     USART_ConfigStruct.baudRate = 115200;
  9.     USART_ConfigStruct.hardwareFlow = USART_HARDWARE_FLOW_NONE;
  10.     USART_ConfigStruct.mode = USART_MODE_TX;
  11.     USART_ConfigStruct.parity = USART_PARITY_NONE;
  12.     USART_ConfigStruct.stopBits = USART_STOP_BIT_1;
  13.     USART_ConfigStruct.wordLength = USART_WORD_LEN_8B;
  14.     BOARD_COM_Config(COM1, &USART_ConfigStruct);

  15.     /* ADC1 initialization */
  16.     ADC_Init();

  17.     /* Infinite loop */
  18.     while (1)
  19.     {
  20.         if (DMA_ReadStatusFlag(DMA1_FLAG_TC1) == SET)
  21.         {
  22.             voltage = (double)DMA_ADCConvertedValue / 4095 * 3.3;

  23.             printf("\r\n");
  24.             printf("ADC register data = 0x%04X \r\n", DMA_ADCConvertedValue);
  25.             printf("voltage           = %.03f V \r\n", voltage);

  26.             Delay(5000);
  27.             DMA_ClearStatusFlag(DMA1_FLAG_TC1);
  28.         }
  29.     }
  30. }

三.调试

编译烧录后,扭动旋钮调节电阻,可看到随着阻值变化adc读值与电压变化。
4987068b32131a2400.png



HeartbeatEcho 发表于 2025-8-31 16:03 | 显示全部楼层
话说,您的printf居然支持浮点数打印
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

136

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部