博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STM32F103ZET6【HAL函开发】STM32CUBEMX------6.ADC实验
阅读量:615 次
发布时间:2019-03-13

本文共 1963 字,大约阅读时间需要 6 分钟。

STM32F103ZET 包含有 3 个 ADC,分别为ADC1,ADC2,ADC3。

ADC通道引脚对应关系
查询和中断方式

在这里插入图片描述

STM32CUBEMX配置:

省略配置时钟和仿真口,直接设置IO,配置如下图。
在这里插入图片描述

代码编写(阻塞式进行ADC转换):

1.因为需要将PB0采集到的电压值通过串口打印到串口调试助手,所以需要用到sprintf,所以需要增加一个头文件#include "stdio.h"

2.宏定义led灯亮灭状态+变量

#include "stdio.h"#define LED0_ON() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET)//LED0点亮#define LED0_OFF() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET)//LED0熄灭uint16_t adc_value=0,adc_volt=0;uint8_t str_buff[64];

3.定义串口发送函数+ADC采样函数

void URE_Send_Info(){
sprintf((char*)str_buff,"采样值:%d,电压值:%d.%d%dV\r\n",adc_value,adc_volt/100,(adc_volt%100)/10,adc_volt%10); HAL_UART_Transmit(&huart1,str_buff,sizeof(str_buff),10000);}
void adc_get_value(){
HAL_ADC_Start(&hadc1); //启动ADC单次转换 LED0_ON(); if(HAL_ADC_PollForConversion(&hadc1,10)==HAL_OK) {
adc_value=HAL_ADC_GetValue(&hadc1); adc_volt=adc_value*330/4096; }URE_Send_Info();LED0_OFF(); HAL_ADC_Stop(&hadc1); }

4.主函数中的while(1)中加入ad采集函数

while (1)  {
/* USER CODE BEGIN 3 */ adc_get_value(); HAL_Delay(500); } /* USER CODE END 3 */

一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一

代码编写(中断式进行ADC转换):
1.第一步是一样的,都需要用到sprintf,所以需要增加一个头文件#include "stdio.h"
2.第二步也是一样,需要用到led灯和一些变量

#include "stdio.h"#define LED0_ON() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_RESET)//LED0点亮#define LED0_OFF() HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,GPIO_PIN_SET)//LED0熄灭uint16_t adc_value=0,adc_volt=0;uint8_t str_buff[64];

3.定义串口发送函数+ADC采样函数。目的一样,但是函数不一样了

void URE_Send_Info(){
sprintf((char*)str_buff,"采样值:%d,电压值:%d.%d%dV\r\n",adc_value,adc_volt/100,(adc_volt%100)/10,adc_volt%10); HAL_UART_Transmit(&huart1,str_buff,sizeof(str_buff),10000);}
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){
if(hadc->Instance==ADC1) {
adc_value=HAL_ADC_GetValue(&hadc1); adc_volt=adc_value*330/4096; URE_Send_Info(); LED0_OFF(); }}

4.主函数中的while(1)中开启ADC

while (1)  {
/* USER CODE BEGIN 3 */ LED0_ON(); HAL_ADC_Start_IT(&hadc1); HAL_Delay(500); } /* USER CODE END 3 */

转载地址:http://odxaz.baihongyu.com/

你可能感兴趣的文章