打印

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

[复制链接]
1813|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
阔砸|  楼主 | 2024-7-10 16:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
这些模拟pwm的子程序单独运行都没问题,给他们放在switch语句里面一运行他直接就运行到case6     “W_LOW ();”这是什么原因呢?
单片机型号是辉芒的 FT60E121-SOP8
下面有手册

1.png (66.88 KB )

中断程序

中断程序

2.png (85.27 KB )

初始化

初始化

3.png (94.01 KB )

定时器

定时器

4.png (70.06 KB )

pwm子程序

pwm子程序

5.png (55.98 KB )

主函数

主函数

ft60e11x_60e12x_ds_rev1p01_cn (1).pdf

3.48 MB

使用特权

评论回复

相关帖子

沙发
LcwSwust| | 2024-7-10 16:37 | 只看该作者
用调试器单步运行的?step值是多少?

使用特权

评论回复
评论
阔砸 2024-7-10 16:57 回复TA
这个软件我不会用单步运行 
阔砸 2024-7-10 16:52 回复TA
step初始是1 
板凳
阔砸|  楼主 | 2024-7-10 17:00 | 只看该作者
LcwSwust 发表于 2024-7-10 16:37
用调试器单步运行的?step值是多少?

灰色的点不了

11.jpg (293.65 KB )

11.jpg

使用特权

评论回复
地板
LcwSwust| | 2024-7-10 17:16 | 只看该作者

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

使用特权

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

使用特权

评论回复
评论
阔砸 2024-7-11 08:59 回复TA
好的我去试试,谢谢您 
6
apan| | 2024-7-11 09:22 | 只看该作者
5楼正解!

使用特权

评论回复
7
cdlongbo| | 2024-7-11 09:33 | 只看该作者
在case中赋值,同时又判单该值,这个不是自己把自己绕晕了! 程序执行效果是未定义的。

使用特权

评论回复
8
xch| | 2024-7-11 09:48 | 只看该作者
step 在哪里赋初值、引用和定义的?你做个记号再发截图

使用特权

评论回复
9
xionghaoyun| | 2024-7-11 11:58 | 只看该作者
是不是仿真片

使用特权

评论回复
评论
阔砸 2024-7-12 07:40 回复TA
不是,是现有的单片机 
10
阔砸|  楼主 | 2024-7-12 07:44 | 只看该作者
xch 发表于 2024-7-11 09:48
step 在哪里赋初值、引用和定义的?你做个记号再发截图

case初始值是1

1.png (34.66 KB )

1.png

使用特权

评论回复
11
阔砸|  楼主 | 2024-7-12 07:47 | 只看该作者
cdlongbo 发表于 2024-7-11 09:33
在case中赋值,同时又判单该值,这个不是自己把自己绕晕了! 程序执行效果是未定义的。 ...

我的几个子程序运行要1s左右,他不应该先运行上面的然后再赋值case吗?为什么会绕晕

使用特权

评论回复
12
阔砸|  楼主 | 2024-7-12 07:48 | 只看该作者
cdlongbo 发表于 2024-7-11 09:33
在case中赋值,同时又判单该值,这个不是自己把自己绕晕了! 程序执行效果是未定义的。 ...

我应该怎样才能避免这种情况发生

使用特权

评论回复
13
阔砸|  楼主 | 2024-7-12 08:03 | 只看该作者
我发现不用switch这两个子程序也有问题:单独运行时1和2别是蓝灯渐亮和白灯渐亮,但是给他们放一起通电只有白灯亮,渐亮效果也没有了这是为什么啊

使用特权

评论回复
14
阔砸|  楼主 | 2024-7-12 08:04 | 只看该作者
本帖最后由 阔砸 于 2024-7-12 08:07 编辑
阔砸 发表于 2024-7-12 08:03
我发现不用switch这两个子程序也有问题:单独运行时1和2别是蓝灯渐亮和白灯渐亮,但是给他们放一起通电只有 ...

这是程序

2.png (13.98 KB )

主程序

主程序

微信图片_20240712080524.png (49.72 KB )

B_UP W_UP子程序

B_UP   W_UP子程序

使用特权

评论回复
评论
yangxf1217 2024-7-24 14:05 回复TA
这个delayMS(1000)会不会有影响啊 
15
yangxf1217| | 2024-7-24 14:05 | 只看该作者
程序写的工整

使用特权

评论回复
16
liuhuainan| | 2024-8-3 11:48 | 只看该作者
本帖最后由 liuhuainan 于 2024-8-3 11:50 编辑

whiel里面不能死等,你中断里面pwm_counter一直在变,delayMS(1000)的时间就影响到B_UP和W_UP中case 1的判断(没有仿真不知道对不对)

使用特权

评论回复
17
yueguang3048| | 2024-8-7 09:27 | 只看该作者
LcwSwust 发表于 2024-7-10 17:16
我也基本不会用调试器,一般的方法是:
利用串口将数据发送到串口调试助手查看。
比如在while(1)里将step ...

串口输出和LED指示是没有调试器的,两种最优的程序调试方案

使用特权

评论回复
18
海洋无限| | 2024-8-8 12:30 | 只看该作者
这个case的逻辑有点乱,写的不好,建议先理清楚逻辑关系,case里面只处理逻辑,操作部分放到函数中

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

24

帖子

0

粉丝