基于HAL库SMT32CuBe实现简单的ADC读取模拟量(芯片STM32F407)
读取模拟量想要串口实现,用其他的也可以,如果有的话,串口的配置看我的这篇文章https://blog.csdn.net/weixin_53000184/article/details/124463299?spm=1001.2014.3001.5502在之前的串口配置上加配ADC就可以了,这个实验也是很简单 。SYS和RCC的配置这里就不再重复说了,不了解的小伙伴可以去看我这些文章https://b
读取模拟量想要串口实现,用其他的也可以,如果有的话,串口的配置看我的这篇文章https://blog.csdn.net/weixin_53000184/article/details/124463299?spm=1001.2014.3001.5502
在之前的串口配置上加配ADC就可以了,这个实验也是很简单 。

SYS和RCC的配置这里就不再重复说了,不了解的小伙伴可以去看我这些文章
https://blog.csdn.net/weixin_53000184/article/details/124246194?spm=1001.2014.3001.5502
配置完这些,我们还是老样子,进入main.c文件。

要在将信息打印至串口中,所以这个实验我们还是要用打printf函数。用到printf函数,就是说我们想要重写printf函数。具体的操作也是看我的这篇文章。下面我就简单的给出代码了。(具体为什么看链接)
https://blog.csdn.net/weixin_53000184/article/details/124463299?spm=1001.2014.3001.5502
#include "stdio.h"
int fputc(int c, FILE *stream) //
{
HAL_UART_Transmit(&huart1, (unsigned char *)&c, 1, 1000);
return 1;
}
接下来才是重点--ADC的代码编写了。
首先我们定义一个变量(后面的函数中要用)
uint16_t ADC_Value;
开启ADC:
HAL_ADC_Start(&hadc1);
然后把下面的代码写到main函数的while里面,注释我就不写了,挺简单的,如果看过我之前的文章的话。
HAL_ADC_PollForConversion(&hadc1, 50);
if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc1), HAL_ADC_STATE_REG_EOC))
{
ADC_Value = HAL_ADC_GetValue(&hadc1);
printf("PA5 True Voltage value : %.5f \r\n",ADC_Value*3.3f/4096);
HAL_Delay(500);
}
然后就是将程序烧进板子了,我用的是FlyMcu和XCOM这两个软件。具体步骤看我这篇文章。https://mp.csdn.net/mp_blog/creation/editor/124463633
注意一下细节处理!!我把我的实验结果截图放这了。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)