读取模拟量想要串口实现,用其他的也可以,如果有的话,串口的配置看我的这篇文章https://blog.csdn.net/weixin_53000184/article/details/124463299?spm=1001.2014.3001.5502

在之前的串口配置上加配ADC就可以了,这个实验也是很简单 。

6a31e10aad6d46cc955ca9122ba6e701.png

 SYS和RCC的配置这里就不再重复说了,不了解的小伙伴可以去看我这些文章

https://blog.csdn.net/weixin_53000184/article/details/124246194?spm=1001.2014.3001.5502

 配置完这些,我们还是老样子,进入main.c文件。 

fc9ce16e64334697b72ab484e4786422.png

 要在将信息打印至串口中,所以这个实验我们还是要用打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

注意一下细节处理!!我把我的实验结果截图放这了。

6b78cfa34c714effa3c826c910a5e202.png

STM32F407ZG通过ADC获取模拟量-C文档类资源-CSDN下载 

Logo

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

更多推荐