[应用相关] for循环语句中,循环过程中,程序卡死的问题

[复制链接]
2515|15
 楼主| laocuo1142 发表于 2023-9-22 16:38 | 显示全部楼层 |阅读模式
  • void pulse(char *ON, char* OFF)
  • {
  • usart1_puts("a");
  • systick_delay(300);
  • usart1_puts("b");
  • }

[color=rgb(51, 102, 153) !important]复制代码


整个程序在板子上运行时,在两层的for循环语句里,每次第一层走第一遍没问题,第二层走完十次,再次进行第一层进行判断循环时,第二层循环有时候走一次,有时候走两次,或者不走,然后整个程序就停住卡死了,我软件调试的结果也是卡在这不动了;
当我去掉循环里的延时函数,以及定义pulse里面的延时函数时,就没有这个问题了,可以正常循环。但是我又需要延时操作,要怎么改程序
jcky001 发表于 2023-9-23 16:29 | 显示全部楼层
最常见的问题是循环条件始终为真,导致程序陷入无限循环。确保循环条件在某个时刻为假,或者设置合适的退出条件。
cr315 发表于 2023-9-23 16:29 | 显示全部楼层
如果循环中执行了某些耗资源的操作,比如大量计算或者读写文件,可能会导致系统资源耗尽,从而使程序卡死。优化代码,减少不必要的资源消耗。
elephant00 发表于 2023-9-23 16:30 | 显示全部楼层
在多线程或者并发环境下,如果存在竞态条件或者死锁,也可能导致程序卡死。
一只眠羊 发表于 2023-10-13 20:40 | 显示全部楼层
程序卡死?卡死不就重启了么
MessageRing 发表于 2023-10-13 21:08 | 显示全部楼层
为啥会卡死啊
在曼谷的春 发表于 2023-10-13 23:00 | 显示全部楼层
一般循环卡死的话,是逻辑有问题了,才会这样
月亮一键变蓝 发表于 2023-10-14 02:00 | 显示全部楼层
是不是用到什么判断了啊,然后还没有相应的结果,就卡住了
失物招領 发表于 2023-10-14 04:30 | 显示全部楼层
其实可以用仿真的方式试试,就知道程序为何卡死了
白马过平川 发表于 2023-10-14 08:00 | 显示全部楼层
你用断点,或者串口log的方式,试试程序杂执行的,然后分析一下呗
将爱藏于深海 发表于 2023-10-14 10:30 | 显示全部楼层
感觉是因为有些函数有问题了,就会这样
aimie 发表于 2023-10-14 11:06 | 显示全部楼层
把CPU资源时间分片。。。定时执行你需要的代码。。。如果是一个子代码里面再有分片。。就用Switch
西洲 发表于 2023-10-14 12:30 | 显示全部楼层
是不是因为你的延时函数有故障了呢?
捧一束彼岸花 发表于 2023-10-14 15:00 | 显示全部楼层
可以自己写个延时函数,一般就能好一些
故意相遇 发表于 2023-10-14 18:00 | 显示全部楼层
你这个延时函数用的是什么定时器做的吗?是不是没有数值变化啊?
风凉 发表于 2023-10-14 22:00 | 显示全部楼层
一般卡死都是哪里初始化不对,或者是外设没启动,再或者就是程序逻辑的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1296

主题

6239

帖子

15

粉丝
快速回复 在线客服 返回列表 返回顶部