扫一扫,分享给好友
采集AD输入电压值,并点亮小灯。但小灯无法点亮。同时,单步运行,每次adc_value的值不一样。
|
|
相关推荐
2个回答
|
|
*sizeof(u16) ); while(1) { ADC_SoftwareStartConvCmd(ADC1, ENABLE); while(!DMA_GetFlagStatus(DMA1_FLAG_TC1)); DMA_ClearFlag(DMA1_FLAG_TC1); for(i=0;i<10;i++) { adc_value=TxBuf[i]; if(adc_value>2000) LED_SET(0); else LED_RESET(0); } } }
这段代码存在几个问题: 1. DMA_Tx_Init()函数中第一个参数应该是DMA的通道号,而不是ADC的RDATAR寄存器指针,可以尝试替换为DMA1_Channel1。 2. DMA的传输模式应该是从外设到内存,所以应该使用DMA_Mode_Normal而不是DMA_Mode_Circular。 3. ADC采集完数据后,应该禁止采集,可以在for循环外部调用ADC_StopOfConversion()来实现。 4. LED_SET和LED_RESET函数的具体实现未知,可能存在问题。 5. 每次ADC采集到的数据应该是一个累加值,需要除以采样次数(在此例子中为10)才能得到正确的平均值。 关于每次adc_value的值不一样,可以考虑在ADC_Init函数中设置合适的采样时间、采样周期和转换模式等参数,以及在ADC_SoftwareStartConvCmd函数调用前先执行一次ADC_GetCalibrationValue函数来获取校准值。 |
|
|
|
还没做过DMA方面的测试。学习中。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
RV 和ARM有什么区别
risc-v目前在什么领域最热门?
RISC-V的指令有什么特点?
最近国产的rsic-v的mcu有什么新品发布
请问是否可以使用Keil对CH32V系列MCU进行开发?
risc-v有哪些开发环境?
CH32V的产品周期是多长时间啊?
单片机跑Freertos怎么样?
RISC-V在AI领域的发展前景怎么样?
沁恒的蓝牙分析仪怎么用?
扫一扫,分享给好友
电子发烧友网
电子发烧友论坛
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号