OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4146|回复: 16

STM32如何在程序运行时还实时监测另一变量,并在变量变化时停止当前程序

[复制链接]

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2018-7-10
在线时间
44 小时
发表于 2018-8-13 11:07:26 | 显示全部楼层 |阅读模式
5金钱
STM32如何在程序运行时还实时监测另一变量,并在变量变化时停止当前程序进而执行其他程序,例如控制电机正在运行,监测到变量变化时停止该电机,进而控制其他电机运行

最佳答案

查看完整内容[请看2#楼]

已解决,检测到变量变化,直接把函数return掉
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2018-7-10
在线时间
44 小时
 楼主| 发表于 2018-8-13 11:07:27 | 显示全部楼层
323232 发表于 2018-8-13 11:56
我不信你这个函数是20秒延时...      这20秒是由什么构成的?循环?还是延时?循环的话可以在每次循环里判 ...

已解决,检测到变量变化,直接把函数return掉
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-13 11:09:45 | 显示全部楼层
变量是怎么来的?用if或者case不行吗?
回复

使用道具 举报

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2018-7-10
在线时间
44 小时
 楼主| 发表于 2018-8-13 11:12:54 | 显示全部楼层
323232 发表于 2018-8-13 11:09
变量是怎么来的?用if或者case不行吗?

变量也需要实时监测,是一个实时变化的值,用if进入控制函数后怎么在监测到变量变化时停止该程序进而运行其他步骤
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-13 11:19:24 | 显示全部楼层
us级别的机器周期不能算实时监测吗?主要看你变量每个值代表的含义。比如说那个变量是1,电机1转,其他停止;变量是2,电机2转,其他停止;变量是3,电机3转,其他停止;变量是4,电机4转,其他停止。用if或者case都能写啊。搞清楚你的需求,说清楚你想要达到的效果
猪猪熊呢?
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-13 11:22:29 | 显示全部楼层
进入if之后程序不是一直停在if里面的啊。机器执行一条语句的时间是多少?你只要循环判断,不就能实现实时检测么?
猪猪熊呢?
回复

使用道具 举报

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2018-7-10
在线时间
44 小时
 楼主| 发表于 2018-8-13 11:24:00 | 显示全部楼层
323232 发表于 2018-8-13 11:19
us级别的机器周期不能算实时监测吗?主要看你变量每个值代表的含义。比如说那个变量是1,电机1转,其他停止 ...

变量是1时运行一个函数,在函数没执行完情况时;实时检测的变量变为其他(2、3、4。。。),停止当前函数执行步骤,执行其他变量下的函数
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-13 11:26:08 | 显示全部楼层
必须没执行完?执行完和没执行完有什么区别吗?还是说你那个函数执行的时间非常长?不知道你这样做的意义,除非你这个变量由外部中断得到,才能实现你说的操作
猪猪熊呢?
回复

使用道具 举报

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2018-7-10
在线时间
44 小时
 楼主| 发表于 2018-8-13 11:30:07 | 显示全部楼层
323232 发表于 2018-8-13 11:26
必须没执行完?执行完和没执行完有什么区别吗?还是说你那个函数执行的时间非常长?不知道你这样做的意义, ...

函数执行时间超过20秒,应为控制的是气囊,时间上没法减少
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-13 11:32:37 | 显示全部楼层
QQWWEERR 发表于 2018-8-13 11:30
函数执行时间超过20秒,应为控制的是气囊,时间上没法减少

那我只能说    你能不能试试看在这个函数里加变量判断了...............
猪猪熊呢?
回复

使用道具 举报

20

主题

200

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
金钱
462
注册时间
2015-11-28
在线时间
89 小时
发表于 2018-8-13 11:50:38 | 显示全部楼层
加个定时器..周期短一点.(根据你的需求)..每次进入中断就判断一次 就ok了
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-13 11:56:57 | 显示全部楼层
我不信你这个函数是20秒延时...      这20秒是由什么构成的?循环?还是延时?循环的话可以在每次循环里判断一次变量,如果检测到变量变化,直接把函数return掉;如果是延时,改为用定时器延时,然后在定时器中断里判断变量,,,
猪猪熊呢?
回复

使用道具 举报

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2018-7-10
在线时间
44 小时
 楼主| 发表于 2018-8-13 11:59:33 | 显示全部楼层
森海有眼泉 发表于 2018-8-13 11:50
加个定时器..周期短一点.(根据你的需求)..每次进入中断就判断一次 就ok了

那怎么打断函数的运行去执行其他函数呢
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4521
金钱
4521
注册时间
2018-5-11
在线时间
946 小时
发表于 2018-8-13 12:18:15 | 显示全部楼层
QQWWEERR 发表于 2018-8-13 11:59
那怎么打断函数的运行去执行其他函数呢

用systick中断,每隔一定周期如10ms检测一次该变量
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

24

主题

695

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1666
金钱
1666
注册时间
2016-4-29
在线时间
266 小时
发表于 2018-8-13 12:48:52 | 显示全部楼层
楼主的业务逻辑没做好,用一个变量定义状态,每个任务对应一个状态,每个任务不要做成封闭的,或者改变状态后,break跳出来就可以
回复

使用道具 举报

13

主题

45

帖子

0

精华

初级会员

Rank: 2

积分
117
金钱
117
注册时间
2016-4-14
在线时间
33 小时
发表于 2018-8-13 14:29:15 | 显示全部楼层
楼主你这个程序整体框架就搭的有问题,周期20s的主程序,我的天,一个单片机程序你执行20s。是不是延时加多了,楼主你可以把延时改为计数的模式,不必要让单片机等着延时结束啊。
回复

使用道具 举报

15

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2018-7-10
在线时间
44 小时
 楼主| 发表于 2018-8-13 16:57:57 | 显示全部楼层
323232 发表于 2018-8-13 11:56
我不信你这个函数是20秒延时...      这20秒是由什么构成的?循环?还是延时?循环的话可以在每次循环里判 ...

已解决,本来要点你最佳答案的,点错了,sorry
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-18 09:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表