完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我想开启多个adc。
1、在不使用sce的情况下,必须建立多个线程任务,每个线程任务都开启一个adc任务? 2、那么在使用sce的情况下,也是开启多个任务? 3、使用多个adc的时候,我不想连续测试,又想功耗很低,需要采集的时候才采集,那么我应该用哪个好? 我下面写的程序可行吗? #include "adc.h"#include <ti/drivers/ADC.h>ADC_Params params;ADC_Handle adc23,adc24,adc25,adc26,adc27,adc28,adc29,adc30;void ADC_Init(void)[ ADC_init(); ADC_Params_init(¶ms);]uint16_t ADC23_Convert(void)[ int_fast16_t res = 0; uint16_t adcValue = 0; adc23 = ADC_open(CC1310_LAUNCHXL_ADC0, ¶ms); res = ADC_convert(adc23, &adcValue); ADC_close(adc23); if (res == ADC_STATUS_SUCCESS) [ if(adcValue < 1) adcValue=1;//避开0,这样就知道是不是转换成功了 return adcValue; ] else [ return 0; ]]uint16_t ADC24_Convert(void)[ int_fast16_t res = 0; uint16_t adcValue = 0; adc24 = ADC_open(CC1310_LAUNCHXL_ADC1, ¶ms); res = ADC_convert(adc24, &adcValue); ADC_close(adc24); if (res == ADC_STATUS_SUCCESS) [ if(adcValue < 1) adcValue=1;//避开0,这样就知道是不是转换成功了 return adcValue; ] else [ return 0; ]]uint16_t ADC25_Convert(void)[ int_fast16_t res = 0; uint16_t adcValue = 0; adc25 = ADC_open(CC1310_LAUNCHXL_ADC2, ¶ms); res = ADC_convert(adc25, &adcValue); ADC_close(adc25); if (res == ADC_STATUS_SUCCESS) [ if(adcValue < 1) adcValue=1;//避开0,这样就知道是不是转换成功了 return adcValue; ] else [ return 0; ]]uint16_t ADC26_Convert(void)[ int_fast16_t res = 0; uint16_t adcValue = 0; adc26 = ADC_open(CC1310_LAUNCHXL_ADC3, ¶ms); res = ADC_convert(adc26, &adcValue); ADC_close(adc26); if (res == ADC_STATUS_SUCCESS) [ if(adcValue < 1) adcValue=1;//避开0,这样就知道是不是转换成功了 return adcValue; ] else [ return 0; ]]uint16_t ADC27_Convert(void)[ int_fast16_t res = 0; uint16_t adcValue = 0; adc27 = ADC_open(CC1310_LAUNCHXL_ADC4, ¶ms); res = ADC_convert(adc27, &adcValue); ADC_close(adc27); if (res == ADC_STATUS_SUCCESS) [ if(adcValue < 1) adcValue=1;//避开0,这样就知道是不是转换成功了 return adcValue; ] else [ return 0; ]]uint16_t ADC28_Convert(void)[ int_fast16_t res = 0; uint16_t adcValue = 0; adc28 = ADC_open(CC1310_LAUNCHXL_ADC5, ¶ms); res = ADC_convert(adc28, &adcValue); ADC_close(adc28); if (res == ADC_STATUS_SUCCESS) [ if(adcValue < 1) adcValue=1;//避开0,这样就知道是不是转换成功了 return adcValue; ] else [ return 0; ]]uint16_t ADC29_Convert(void)[ int_fast16_t res = 0; uint16_t adcValue = 0; adc29 = ADC_open(CC1310_LAUNCHXL_ADC6, ¶ms); res = ADC_convert(adc29, &adcValue); ADC_close(adc29); if (res == ADC_STATUS_SUCCESS) [ if(adcValue < 1) adcValue=1;//避开0,这样就知道是不是转换成功了 return adcValue; ] else [ return 0; ]]uint16_t ADC30_Convert(void)[ int_fast16_t res = 0; uint16_t adcValue = 0; adc30 = ADC_open(CC1310_LAUNCHXL_ADC7, ¶ms); res = ADC_convert(adc30, &adcValue); ADC_close(adc30); if (res == ADC_STATUS_SUCCESS) [ if(adcValue < 1) adcValue=1;//避开0,这样就知道是不是转换成功了 return adcValue; ] else [ return 0; ]] |
|
相关推荐
3个回答
|
|
需要开启多个任务,采用ADC的不同通道。CC1310的ADC最多支持8个通道,但是每次只能采样一个
|
|
|
|
你好,Viki Shi: 谢谢你的回答。 uint16_t value0=0,value1=0;value0 = ADC23_Convert();value1 = ADC24_Convert();我没有创建多个任务,这样调用上面的函数也能正常采集adc,我这样写可以吗?有什么弊端吗? |
|
|
|
qq967873880 发表于 2018-6-6 12:13 value0 = ADC23_Convert();value1 = ADC24_Convert();这样写是没错的。没什么弊端,open -close -open -close, 是可以的 |
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
686 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
601 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1055 浏览 1 评论
744 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
526 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
167浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
128浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
127浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
123浏览 12评论
GD32F303RCT6配置PA4 ADC引脚,将PA2代替key功能,PA2连接时无法实现预期功能,为什么?
54浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 09:06 , Processed in 1.466891 second(s), Total 82, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号