你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于STM32一个主程序逻辑的问题

[复制链接]
西奥伟 提问时间:2018-12-1 18:08 /
本帖最后由 西奥伟 于 2018-12-3 15:22 编辑

这个项目中的主要需求是,在主循环中能够一直循环检测得到上位机进行开机操作以后,上位机发送过来的控制指令,并且,同时在循环中还要实现其他任务的检测,例如:关机任务、充电检测任务、充电完成任务等等。现在我只实现了开机以后,等待上位机发送过来的消息,如果,上位机没有发送信息过来,我就跳出等待接收消息的循环,返回到主循环中检测关机任务,虽然,这样能实现,但是,只能一次接收上位机发送过来的消息,也就是必须等开机任务执行了我才能去等待接收上位机发送过来的消息。在此,请教各位论坛朋友能够提供一点思路,非常感谢。

1

1

2

2

3

3


4

4



感谢大家的指点,本功能今天已经自己成功实现,在主循环中自己添加了另外一个函数,查询串口接收函数,在主循环中一直查询串口的接收状态标志位,就可以实现持续监测串口的接收状态了。

添加函数

添加函数



收藏 评论5 发布时间:2018-12-1 18:08

举报

5个回答
wenyangzeng 回答时间:2018-12-2 07:36:18
接收上位机采用中断方式就能解决问题了。或者在等待接收循环里添加一个计数器,超时就退出等待。
strang 回答时间:2018-12-2 08:41:32
楼上的思路就能实现,放在中断里
西奥伟 回答时间:2018-12-2 17:13:57
wenyangzeng 发表于 2018-12-2 07:36
接收上位机采用中断方式就能解决问题了。或者在等待接收循环里添加一个计数器,超时就退出等待。 ...

我接收上位机的数据是采用的串口中断接收,我现在已经实现的是必须要检测到开机按键,串口才能够等待接收上位机数据,假如,我按下了开机按键之后,第一次等待上位机接收超时了,就回到主循环里面来了,也就不能再进入到串口接收里面去了,必须开机按键触发才能够,但是,我的需求是开机了以后,不仅串口接收能够实时接收数据,而且,还能够检测关机任务、充电任务、充电完成任务
西奥伟 回答时间:2018-12-2 17:18:36
strang 发表于 2018-12-2 08:41
楼上的思路就能实现,放在中断里

我想过了串口任务使用串口中断,按键和充电检测以及充电完成分别使用外部中断,然后,把串口中断放在主循环里面,其余外部中断放在串口接收数据的标志位的判断里面。(若串口未接收到数据、就执行外部中断) 最后,实践证明这种方式不现实
wenyangzeng 回答时间:2018-12-2 22:00:58
西奥伟 发表于 2018-12-2 17:13
我接收上位机的数据是采用的串口中断接收,我现在已经实现的是必须要检测到开机按键,串口才能够等待接收 ...

那你可以根据需要设置外部中断到来时,在中断里使能串口中断即可。
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版