有没有大佬懂的,switch语句为什么会直接跳到case6?

[复制链接]
 楼主| 阔砸 发表于 2024-7-10 16:28 | 显示全部楼层 |阅读模式
这些模拟pwm的子程序单独运行都没问题,给他们放在switch语句里面一运行他直接就运行到case6     “W_LOW ();”这是什么原因呢?
单片机型号是辉芒的 FT60E121-SOP8
下面有手册

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
LcwSwust 发表于 2024-7-10 16:37 | 显示全部楼层
用调试器单步运行的?step值是多少?

评论

这个软件我不会用单步运行  发表于 2024-7-10 16:57
step初始是1  发表于 2024-7-10 16:52
 楼主| 阔砸 发表于 2024-7-10 17:00 | 显示全部楼层
LcwSwust 发表于 2024-7-10 16:37
用调试器单步运行的?step值是多少?

灰色的点不了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
LcwSwust 发表于 2024-7-10 17:16 | 显示全部楼层

我也基本不会用调试器,一般的方法是:
利用串口将数据发送到串口调试助手查看。
比如在while(1)里将step的值用串口发出来。

评论

@阔砸 :可百度“串口调试助手”,推荐“sscom5.09a1.exe”。如果不想用串口,也可用IO控制LED或蜂鸣器产生摩尔斯电码来表示数据。  发表于 2024-7-10 17:32
我刚接触单片机,没用过串口调试助手请问怎么用。要下载什么软件吗  发表于 2024-7-10 17:28
zhj12ab 发表于 2024-7-10 18:02 | 显示全部楼层
你这个是在case里面直接赋值了,在PA4为低的情况下,运行后就是以极快的速度跑完case1/case2/case3/case6了,最终就停留到case6,建议加上延时或者增加按键检测,按键触发后才变更setp值

评论

好的我去试试,谢谢您  发表于 2024-7-11 08:59
apan 发表于 2024-7-11 09:22 | 显示全部楼层
5楼正解!
cdlongbo 发表于 2024-7-11 09:33 | 显示全部楼层
在case中赋值,同时又判单该值,这个不是自己把自己绕晕了! 程序执行效果是未定义的。
xch 发表于 2024-7-11 09:48 | 显示全部楼层
step 在哪里赋初值、引用和定义的?你做个记号再发截图
xionghaoyun 发表于 2024-7-11 11:58 | 显示全部楼层
是不是仿真片

评论

不是,是现有的单片机  发表于 2024-7-12 07:40
 楼主| 阔砸 发表于 2024-7-12 07:44 | 显示全部楼层
xch 发表于 2024-7-11 09:48
step 在哪里赋初值、引用和定义的?你做个记号再发截图

case初始值是1

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 阔砸 发表于 2024-7-12 07:47 | 显示全部楼层
cdlongbo 发表于 2024-7-11 09:33
在case中赋值,同时又判单该值,这个不是自己把自己绕晕了! 程序执行效果是未定义的。 ...

我的几个子程序运行要1s左右,他不应该先运行上面的然后再赋值case吗?为什么会绕晕
 楼主| 阔砸 发表于 2024-7-12 07:48 | 显示全部楼层
cdlongbo 发表于 2024-7-11 09:33
在case中赋值,同时又判单该值,这个不是自己把自己绕晕了! 程序执行效果是未定义的。 ...

我应该怎样才能避免这种情况发生
 楼主| 阔砸 发表于 2024-7-12 08:03 | 显示全部楼层
我发现不用switch这两个子程序也有问题:单独运行时1和2别是蓝灯渐亮和白灯渐亮,但是给他们放一起通电只有白灯亮,渐亮效果也没有了这是为什么啊
 楼主| 阔砸 发表于 2024-7-12 08:04 | 显示全部楼层
本帖最后由 阔砸 于 2024-7-12 08:07 编辑
阔砸 发表于 2024-7-12 08:03
我发现不用switch这两个子程序也有问题:单独运行时1和2别是蓝灯渐亮和白灯渐亮,但是给他们放一起通电只有 ...

这是程序

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评论

这个delayMS(1000)会不会有影响啊  发表于 2024-7-24 14:05
yangxf1217 发表于 2024-7-24 14:05 | 显示全部楼层
程序写的工整
liuhuainan 发表于 2024-8-3 11:48 | 显示全部楼层
本帖最后由 liuhuainan 于 2024-8-3 11:50 编辑

whiel里面不能死等,你中断里面pwm_counter一直在变,delayMS(1000)的时间就影响到B_UP和W_UP中case 1的判断(没有仿真不知道对不对)
yueguang3048 发表于 2024-8-7 09:27 | 显示全部楼层
LcwSwust 发表于 2024-7-10 17:16
我也基本不会用调试器,一般的方法是:
利用串口将数据发送到串口调试助手查看。
比如在while(1)里将step ...

串口输出和LED指示是没有调试器的,两种最优的程序调试方案
海洋无限 发表于 2024-8-8 12:30 | 显示全部楼层
这个case的逻辑有点乱,写的不好,建议先理清楚逻辑关系,case里面只处理逻辑,操作部分放到函数中

评论

好滴  发表于 2024-8-26 16:35
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

25

帖子

0

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