本帖最后由 西奥伟 于 2018-12-3 15:22 编辑 这个项目中的主要需求是,在主循环中能够一直循环检测得到上位机进行开机操作以后,上位机发送过来的控制指令,并且,同时在循环中还要实现其他任务的检测,例如:关机任务、充电检测任务、充电完成任务等等。现在我只实现了开机以后,等待上位机发送过来的消息,如果,上位机没有发送信息过来,我就跳出等待接收消息的循环,返回到主循环中检测关机任务,虽然,这样能实现,但是,只能一次接收上位机发送过来的消息,也就是必须等开机任务执行了我才能去等待接收上位机发送过来的消息。在此,请教各位论坛朋友能够提供一点思路,非常感谢。 1 2 3 4 感谢大家的指点,本功能今天已经自己成功实现,在主循环中自己添加了另外一个函数,查询串口接收函数,在主循环中一直查询串口的接收状态标志位,就可以实现持续监测串口的接收状态了。 添加函数 |
我接收上位机的数据是采用的串口中断接收,我现在已经实现的是必须要检测到开机按键,串口才能够等待接收上位机数据,假如,我按下了开机按键之后,第一次等待上位机接收超时了,就回到主循环里面来了,也就不能再进入到串口接收里面去了,必须开机按键触发才能够,但是,我的需求是开机了以后,不仅串口接收能够实时接收数据,而且,还能够检测关机任务、充电任务、充电完成任务
我想过了串口任务使用串口中断,按键和充电检测以及充电完成分别使用外部中断,然后,把串口中断放在主循环里面,其余外部中断放在串口接收数据的标志位的判断里面。(若串口未接收到数据、就执行外部中断) 最后,实践证明这种方式不现实
那你可以根据需要设置外部中断到来时,在中断里使能串口中断即可。