完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
Delay_T = 1000;
while(Delay_T); 上面这部分程序在Main()中的初始化程序后,仿真可正常执行。但脱机后,就不能运行了。 改为 Delay_T = 1000; for(i = 0x00; i > 0xff;){ if(Delay_T == 0x00){ break; } } 后可以正常执行。 Delay_T在定时中断中递减1,直到为零。 不知道是什么原因?哪位遇到到,给解释一下。谢谢 |
|
相关推荐
1个回答
|
|
根据提供的信息,我们可以推测在STM8程序脱机后无法运行的原因可能是由于定时中断的处理方式不同造成的。
首先,Delay_T的初始化为1000。然后,在之后的循环中,每经过一段时间后,定时中断会递减Delay_T的值。当Delay_T为0时,循环会终止。 在仿真模式下,由于可能存在调试器的支持,程序会按照设定的规则进行执行,定时中断会按照规定的方式递减Delay_T的值,直到为0,然后循环终止。 然而,在脱机模式下,没有调试器的干预,程序可能会按照更快或更慢的速度运行。这意味着,定时中断递减Delay_T的速度可能会不同步,即定时中断的频率可能与预期不符合。因此,当Delay_T递减为0时,循环可能尚未结束,导致程序无法正常执行。 为了解决这个问题,可以尝试使用第二段代码中的方法,通过一个for循环进行等待。在这种方式下,程序会在Delay_T递减为0后立即终止循环,不再依赖于定时中断的频率。 总结来说,可能是因为脱机模式下,程序执行的速度与预期不同步而导致不能正常运行。可尝试使用更准确的方式进行等待,如第二种代码中的方法。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1202 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1217 浏览 1 评论
625 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
470 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1146 浏览 2 评论
1678浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
337浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
333浏览 3评论
327浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
304浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-1 07:43 , Processed in 0.777169 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191