社区导航

 

搜索
查看: 740|回复: 3

[求助] 蓝牙BLE-BlueNRG2 VTimer

[复制链接]

11

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-7-6 02:47 | 显示全部楼层 |阅读模式

 while(1)
  {
    BTLE_StackTick();
    printf("ticks=%d\r\n",HAL_VTimerGetCurrentTime_sysT32());
}

在测试的时候,一切正常,但是当我把    BTLE_StackTick(); 删掉后,发现ticks在超过一个数值大于12997974的时候,会重新从0开始,但是如果有BTLE_StackTick();的时候,甚至能得到ticks=64687425。

有人知道这是为什么吗?



回复

使用道具 举报

6891

TA的帖子

19

TA的资源

版主

Rank: 6Rank: 6

发表于 2019-7-6 12:06 | 显示全部楼层

你想要实现什么功能?

BTLE_StackTick();是程序在运行时必需要执行的,功能包括低速振荡器校准等等

在每次休眠唤醒后都要至少执行一次

我做了测试,在不执行BTLE_StackTick()(此操作无实际意义)时HAL_VTimerGetCurrentTime_sysT32能得到的最大值是13107199,对应32000毫秒

执行BTLE_StackTick()时HAL_VTimerGetCurrentTime_sysT32返回的数值要比64687425更大

有可能达到4294967295

 

虾扯蛋


回复

使用道具 举报

11

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2019-7-11 03:55 | 显示全部楼层

SdkEvalLedOn(LED3);

while(1)   {     BTLE_StackTick();

    HAL_VTimerStart_ms(0, 20000);     ret=BlueNRG_Sleep(SLEEPMODE_WAKETIMER, WAKEUP_IO13,wakeuplevel); }

然后在void HAL_VTimerTimeoutCallback(uint8_t timerNum)里点亮了led3.

结果在测试的时候,led1在15s的时候亮了一次,在20s的时候led1和3都亮了,

所以不管我timer设的是多少秒,只要大于15,就会15s先wakeup一次吗?大家测得时候也是这样吗?

点评

led1你是在哪控制的? 检查蓝牙设置了吗? 把工程发过来我帮你试试  详情 回复 发表于 2019-7-12 11:05


回复

使用道具 举报

6891

TA的帖子

19

TA的资源

版主

Rank: 6Rank: 6

发表于 2019-7-12 11:05 | 显示全部楼层
andiliu 发表于 2019-7-11 03:55 SdkEvalLedOn(LED3); while(1)   {     BTLE_StackTick();     HAL_VTimer ...

led1你是在哪控制的?

检查蓝牙设置了吗?

把工程发过来我帮你试试

虾扯蛋


回复

使用道具 举报

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

关闭

站长推荐上一条 /5 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-2-24 10:35 , Processed in 0.144741 second(s), 17 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表