2085|0

603

帖子

1

TA的资源

纯净的硅(中级)

楼主
 

【TI首届低功耗设计大赛】小狼,语音报时 [复制链接]

周天传完视频,周一就被管理员追啦,问我咋没发进度……最近实在太忙了。

来简单描述一下这次的进步点。

为了让小狼的时间机制正常运行,首先一定要琢磨它的RTC_B如何使用,好在有现成的库,因此我可以不多说了。

关键点:1——启动RTC,2——设置RTC,实际上,不调用库也可以,我的程序就没有用到那么多年月日的东西,暂时就按24小时来,所以只要设置小时分钟就足够了,于是就只是访问了这两个寄存器。于是除了RTC的init函数之外,我只是读写RTCHOUR和RTCMIN这两个寄存器就足够应付我目前对时间的要求啦。

接下来,就是对于整体的操作,包括设定时间和报时。我利用两个按键,一个作为Mode,切换模式(正常→小时设定→分钟设定→正常...),一个用来作为Set进行设定(正常模式报时,其他模式对设定值+1)。
于是我还需要一个简单的状态机来控制系统的模式。
写状态迁移控制器太麻烦了,这么个简单的状态迁移,用Switch就好了嘛——
  1. void main_stm(arg_t arg)
  2. {
  3.   switch(main_stm_stat | arg)
  4.   {
  5.     case (ST_IDLE | EV_KEY_M):
  6.       main_stm_stat = ST_RTC_H;
  7.       tellStr[0] = 'a';
  8.       tellStr[1] = 0;
  9.       tellIndex = 0;
  10.       spf_call_proc(PROC_MAIN, MAIN_START_CAST, PROC_CALL_SINGLE);
  11.       break;
  12.     case (ST_IDLE | EV_KEY_S):
  13.       spf_call_proc(PROC_MAIN, MAIN_TELL_TIME, PROC_CALL_SINGLE);
  14.       break;
  15.     case (ST_RTC_H | EV_KEY_M):
  16.       main_stm_stat = ST_RTC_M;
  17.       tellStr[0] = 'm';
  18.       tellStr[1] = 0;
  19.       tellIndex = 0;
  20.       spf_call_proc(PROC_MAIN, MAIN_START_CAST, PROC_CALL_SINGLE);
  21.       break;
  22.     case (ST_RTC_H | EV_KEY_S):
  23.       spf_call_proc(PROC_MAIN, MAIN_SET_HOUR, PROC_CALL_SINGLE);
  24.       break;
  25.     case (ST_RTC_M | EV_KEY_M):
  26.       main_stm_stat = ST_IDLE;
  27.       spf_call_proc(PROC_MAIN, MAIN_TELL_TIME, PROC_CALL_SINGLE);
  28.       break;
  29.     case (ST_RTC_M | EV_KEY_S):
  30.       spf_call_proc(PROC_MAIN, MAIN_SET_MIN, PROC_CALL_SINGLE);
  31.       break;
  32.     default:
  33.       break;
  34.   }
  35. }
复制代码

于是在主任务里,根据发来的事件,进行相应的处理就OK了。

最后分享一下相关的视频,很简单。夹杂在中间的音乐,完全是为了避免无聊……



 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表