完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32F103ZET 包含有 3 个 ADC,分别为ADC1,ADC2,ADC3。
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%dVrn",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%dVrn",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 */ |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1780 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1621 浏览 1 评论
1081 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
728 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1679 浏览 2 评论
1938浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
731浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
570浏览 3评论
596浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
556浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 04:16 , Processed in 0.892909 second(s), Total 76, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号