8H8K64U有DMA呀,用DMA
通过转换ADC step check状态决定ADC转换,用DMA也得他的状态返回ok,然后进DMA拿结果,并不冲突,
现在的问题是卡在step2,要一直等返回是1,但实际上他的转换函数只能返回0,所以就只能卡在这。
是不是定时器的100us没有清零 Yim_Hom 发表于 2024-8-31 20:22
好像有点问题吧?
return 0 是没转换完,等下一次定时器周期来了在检查一遍,现在的问题是不管等多久,都转换不完了 Yim_Hom 发表于 2024-8-31 20:22
好像有点问题吧?
return 1;就会跳出函数,不会继续运行到return 0; ldc521 发表于 2024-9-2 09:01
return 0 是没转换完,等下一次定时器周期来了在检查一遍,现在的问题是不管等多久,都转换不完了 ...
你的函数能返回1吗
Yim_Hom 发表于 2024-9-2 09:35
你的函数能返回1吗
转换成功就返回1 找到问题了,adc_check_step = 0的时候,这一句启动转换没有成功,ADC_CONTR = (ADC_CONTR & 0xF0) | 0x40 | channel; //启动 AD 转换
出问题之后是ADC_START这一位没置位,也就表示上面那句执行完了寄存器没写成功,不明白什么原因;
页:
1
[2]