RT-Thread论坛
直播中

张杰

8年用户 1378经验值
私信 关注
[问答]

使用alarm模块的时候,设置时间之后没有更新新的alarm时间是为什么?

你好,我使用的是rt-thread studio 2.2.6,在STM32F407VG芯片上使用RT-THREAD的标准版本4.1.1。
在使用提供的alarm模块时,设置了一个每分钟触发的alarm。当我在msh命令行中,使用date命令设置时间之后,这个每分钟触发的alarm有可能出现没有更新的情况,通过实验是可以复现这个bug的。复现的方法是使用date命令设置时间是,秒的设置不是0秒,比如设置成12秒,就会出现每分钟触发的alarm不更新。
可以看如下截图

而使用date设置时间时,只有秒为0的时候,每分钟触发的alarm才能正确的更新

我创建的alarm的代码如下:

  • rt_alarm_t alarm_10min,alarm_timing,alarm_zerotime;

  • void create_10_min_alarm()
  • {
  •     struct rt_alarm_setup alarm_setup;
  •     alarm_setup.flag = RT_ALARM_MINUTE;
  •     alarm_setup.wktime.tm_sec = 0;
  •     alarm_10min = rt_alarm_create(alarm_10min_handle,&alarm_setup);
  • }

  • void create_alarm_app()
  • {
  •     rt_err_t err1,err2,err3;
  •     create_10_min_alarm();
  •     create_timing_alarm();
  •     create_zerotime_alarm();
  •     err1 = rt_alarm_start(alarm_10min);
  •     err2 = rt_alarm_start(alarm_timing);
  •     err3 = rt_alarm_start(alarm_zerotime);
  •     if((err1 != RT_EOK) || (err2 != RT_EOK)|| (err3 != RT_EOK)){
  •         LOG_E("ALARM start failed,%d-%d-%d",err1,err2,err3);
  •     }else{
  •         LOG_D("start Alarm");
  •     }
  • }


希望程序员们能够提供如何修改的方法。

更多回帖

发帖
×
20
完善资料,
赚取积分