这个是什么问题哦? 打开串口就出现这个 (已解决)
把自己的代码里面加入了 "05-16路ADC轮询-每路16次ADC转换取中间8次求平均值,USB-CDC虚拟串口返回结果"这个里面的代码
如果不加这个 for循环就没问题.加入这个for循环就跳这个错误31
我测试了原代码没有问题.
把部分adc的代码移植到我的代码里面就出现这个了. 找到原因了..
把这个delayms去掉就没问题了
我的天.
原代码上面也有delayms啊
搞得晕晕的了 很奇怪 这个delayms (20) 可以用没有问题.正常打印... 超过20就不行了.就出现上面那个图
adc_tongdao2 = Get_ADC12bitResult(2);
adc_tongdao15 = Get_ADC12bitResult(15);
vcc = (int)(4096L * 1194 / adc_tongdao15);
for(i=0; i<16; i++)
{
delayms(20);
// ADC_convert(3); //发送固定通道AD值
ADC_convert(i); //发送轮询通道AD值
if((i & 7) == 7) //分两行打印
{
printf(" dao2= %u vcc= %u \r\n",adc_tongdao2,vcc);
}
} 软件延时函数导致程序阻塞 固定值,轮询值都可以正常打印温度和 外部电压
可就是不能delayms超过20 .一直打不停
DebugLab 发表于 2025-5-16 22:17
软件延时函数导致程序阻塞
意思是我的原程序,有个地方和这个阻塞了是吗?
我用官方那个代码,我看也是延迟没有问题.
如果是阻塞,那我用个中断200ms的标志位应该就能解决了 这个应该就是程序堵塞了 jwd 发表于 2025-5-16 22:30
这个应该就是程序堵塞了
是了.
弄了半天终于弄好了.
有可能主频开的太低了.
我开11.0592 终于全部搞清楚了.现在开delayms200ms也没问题了
我开了看门狗, 用的1秒左右.. 清看门狗也在1秒附近.
导致我delayms超过20ms,没来得及喂狗,系统复位了
页:
[1]
2