各位,本人最近在写STM8 ADC程序时发现一个问题,将程序粘贴如下。 ADC1_DeInit(); ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_0, ADC1_PRESSEL_FCPU_D18); ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_1, ADC1_PRESSEL_FCPU_D18); ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_2, ADC1_PRESSEL_FCPU_D18); ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_4, ADC1_PRESSEL_FCPU_D18); ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_5, ADC1_PRESSEL_FCPU_D18); ADC1_Init(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_12, ADC1_PRESSEL_FCPU_D18); ADC1_ScanModeCmd(ENABLE); /*enable adc interrupt*/ ADC1_ITConfig(ADC1_IT_EOCIE, DISABLE); /*enable adc buffer register,the result is saved in ADC_DBxRH and ADC_DBxRL*/ ADC1_DataBufferCmd(ENABLE); /*enable ADC1*/ ADC1_Cmd(ENABLE); while(i--); ADC1_StartConversion(); 上述是初始化,因空间太小,我简写了。说下需求,我需要采样通道0、1、2、4、5、12通道,采用单次带缓存扫描模式。现在问题来了,STM8的12通道是不能使用扫描模式的。我现在开启中断应该怎样读取数据。 实验结果如下:开启中断,在定时器中开启ADC采样,频率为20KHz, ADC_RESULT_T.uwPVaPVNegSample= ADC1_GetBufferValue(0x00); ADC_RESULT_T.uwPVbPVNegSample= ADC1_GetBufferValue(0x01); ADC_RESULT_T.uwBusSample = ADC1_GetBufferValue(0x02); ADC_RESULT_T.uwPVbGndSample = ADC1_GetBufferValue(0x04); ADC_RESULT_T.uwPVaGndSample = ADC1_GetBufferValue(0x05); ADC_RESULT_T.uwNGndSample = ADC1_GetConversionValue(); 这样读取的数据,结果发现0通道和12通道读取结果一致,其他通道数据不更新。 如果使用查询方式,上面读取结果正常。 数据手册中解释道,如果使用扫描模式,那么最后一组数据读完,就进入中断。那么12通道也是采样完就进入中断,到底因该是怎么样呢? 我现在想得到的效果是使用中断方式读取结果,各位有什么好建议吗,不胜感激。 |
yolov5 转onnx 在cubeAI进行部署的时候 部署失败 我想一下大佬们这是什么原因
STM8AF系列可以通过Flash Loader Demonstrator用lin总线刷写程序吗
请问CubeIDE导入模型生成的代码卡死在MX_X_CUBE_AI_Process()函数有人遇到过吗
NanoEdge AI数据集该如何构建?
stedgeai-windows-9.0.0怎么安装呀
我学完了STM32F1,想将计算机视觉运用到STM32上,学习路线应该是怎样的?
Cube.AI开发者云中生成代码时只允许选择上面的开发板,如果用同芯片的最小系统板可以用吗
cubeai安装完成后想使用出现问题
导入模型失败,卡在进度条
为什么用CubeIDE导入ai模型进行分析的时候分析报错[AI:persondetection] [12152] Failed to execute scri
其实这个问题是上面问题的简化,各位有碰到吗,请不吝赐教。
你试试对channel0,1,2,3,4,5 六个通道做singel scan。
【CHANNEL 3你不用理它,哪个BUFFER对应哪个通道的值就好】
channel 5 转换完成后会产生 EOC中断。
对channel 12单独查询操作,因为CHANNEL 12不支持SCAN.