我是靠谱客的博主 动人路人,这篇文章主要介绍ADC 获取数据(stm32),现在分享给大家,希望可以做个参考。

ADC 单通道获取 光敏传感器的数据(只是ADC采集不需要回调函数)

main.c

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
HAL_ADC_Start(&hadc1);//ADC开始获取 HAL_ADC_PollForConversion(&hadc1,100);//等待获取完成, 参数1:adc的地址,时间; vola=HAL_ADC_GetValue(&hadc1);//将获取的数据放到变量中保存 int vola; if(vola>=3000)//对数据进行判断并操作 { HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET); if(i==0) { printf("灯打开 %d",vola); i=1; } } else{ HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET); if(i==1) { printf("灯关闭 %d",vola); i=0; } } HAL_ADC_Stop(&hadc1);//ADC结束获取;

ADC多通道扫描

GPIO.C

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
uint16_t Value[2]; int fputc(int ch,FILE *f)//重定向,向串口发送数据 { while(!(USART1->ISR & 0X40)){}; USART1->TDR=ch; } void HAL_GPIO_EXTI_Rising_Callback(uint16_t GPIO_Pin)//按键外部中断回调函数 { if(GPIO_Pin==GPIO_PIN_8) { HAL_ADC_Start(&hadc1);//启动ADC采集 while(!(ADC1->ISR &1<<2)){};//判断第一个通道转换完成 Value[0]=HAL_ADC_GetValue(&hadc1);//将转换完成的ADC读出来 while(!(ADC1->ISR &1<<3)){};//判断通道转换结束 Value[1]=HAL_ADC_GetValue(&hadc1);//将转换完成的ADC读出来 HAL_ADC_Stop(&hadc1); if((Value[1])>=2990 && (Value[1]<=3000)) { printf("中"); } if ((Value[1])>=2975 && (Value[1]<=2985)) { printf("上"); } if ((Value[1])>=2920 && (Value[1]<=2940)) { printf("下"); } if ((Value[1])>=2950 && (Value[1]<=2970)) { printf("左"); } else if (Value[1] > 3000) { printf("右"); } } } //备注(真实电压公式): 2950*(3.3/4095); 2095(采集到的值 )(3.3/4095)(单份占比)

最后

以上就是动人路人最近收集整理的关于ADC 获取数据(stm32)的全部内容,更多相关ADC内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部