杰理AC692X 软开关机的实现

软开关机

    • 经过几天的摸索 终于实现了遥控软关机。其实很简单的几条语句而已,以为SDK自己内部已经做好了很多东西,就是奈何没有注释比较难搞。具体实现方法如下。
  • 一、首先你要知道几个消息枚举 和如何实现软开关机
  • 二、在空模式下实现软开关机
    • 1、 定义一个宏和flag标志,用来选择是否开启软件开关机
    • 2、在IDLE的初始化函数设置开关机的提示音
    • 3、实现
    • 4、把消息写进对应的模式下的按键消息表就行了

经过几天的摸索 终于实现了遥控软关机。其实很简单的几条语句而已,以为SDK自己内部已经做好了很多东西,就是奈何没有注释比较难搞。具体实现方法如下。

一、首先你要知道几个消息枚举 和如何实现软开关机

杰理AC692X 软开关机的实现_第1张图片
根据字面意思很容易知道这个些消息枚举是干嘛用的,我现在沿用MSG_POWER_OFF,也可以自己写一个,但是一定要在MSG_MAIN_MAX,这个消息前面添加。
我是在IDLE空模式下实现软关机的,让程序运行在空模式下面。

二、在空模式下实现软开关机

1、 定义一个宏和flag标志,用来选择是否开启软件开关机

因为开关机的方式比较多种,我这种实现方式是待机,并不是真正意义上的关机,真正意义上的关机后再开机需要IO驱动或者MOS管等。设置一个宏对以后的再次开发很有帮助,是个好习惯,我也刚开始学。
杰理AC692X 软开关机的实现_第2张图片
杰理AC692X 软开关机的实现_第3张图片

2、在IDLE的初始化函数设置开关机的提示音

杰理AC692X 软开关机的实现_第4张图片
将IDLE的半秒函数去掉,不然开机会调到蓝牙模式,我是需要调到关机前的模式。而且不注释掉的话,你关不了机的会进入蓝牙模式的,我的关机是卡在这里进行循环。
杰理AC692X 软开关机的实现_第5张图片

3、实现

先在task_common.C里面修改MSG_POWER_OFF消息对应的处理,跳转到IDLE空模式
杰理AC692X 软开关机的实现_第6张图片
空模式初始化后提示音结束,消息处理到提示音结束的处理:
杰理AC692X 软开关机的实现_第7张图片
task_post_msg(NULL,1,MSG_OPWERON_WORKMODE);这个是我软开机后调到我想要处理的消息进行处理,我这个是软开机后进入软关机前的最后的模式。读者可自行跳转到软开机想要处理的消息表。

4、把消息写进对应的模式下的按键消息表就行了

杰理AC692X 软开关机的实现_第8张图片
当然了,IDLE空模式的按键消息表只能是有关机消息 不然其他消息会使之退出循环。

你可能感兴趣的:(杰理开发)