1、我们直接调用官方的库即可,主要以下两个函数
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13//ADC初始化函数 //mode: 采样模式(0正常ADC模式,1麦克风模式) //freq: 采样频率 //data_num: 采样个数 //gpio_num: 采样管脚 int hal_adc_init(int mode, int freq, int data_num, int gpio_num) //获取AD转换结果 //gpio_num: 采样管脚 //raw_flag: 原始值标志(0返回0到65535之间的原始值,1返回0到3199之间的缩放值) int32_t hal_adc_get_data(int gpio_num, int raw_flag)
这些函数属于hal_drv模块,因此我们需要把工程路径下的Makefile文件中的INCLUDE_COMPONENTS字段添加hal_drv
下面我们创建一个ADC的任务,然后在里面间隔获取AD转换结果
复制代码
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//根据 BL602 参考手册,ADC 仅支持以下GPIO : 4、5、6、9、10、11、12、13、14、15 #define ADC_GPIO 12 /******************************************************************** *@brief ADC任务 *@input *@return ********************************************************************/ static void user_adc_task(void *arg) { //mode: 采样模式(0正常ADC模式,1麦克风模式) //freq: 采样频率 //data_num: 采样个数 //gpio_num: 采样管脚 hal_adc_init(0,1000,100,ADC_GPIO); //每秒1000个样本,我们将读取100个样本,需要0.1秒。 while(1) { vTaskDelay(500/portTICK_RATE_MS); //gpio_num: 采样管脚 //raw_flag: 原始值标志(0返回0到65535之间的原始值,1返回0到3199之间的缩放值) //hal_adc_get_data(ADC_GPIO,0); printf("hal_adc_get_data: %d %drn",hal_adc_get_data(ADC_GPIO,0),hal_adc_get_data(ADC_GPIO,1)); } vTaskDelete(NULL); } /******************************************************************** *@brief ADC初始化 *@input *@return ********************************************************************/ void user_adc_init() { xTaskCreate(user_adc_task, "", 512, NULL, 2, NULL); }
最后
以上就是坚定天空最近收集整理的关于BL602 ADC的使用的全部内容,更多相关BL602内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复