工具/软件:TI-RTOS
您好!
我有一个基于简单外设示例的 BLE 设计。 我的应用中需要一个10ms 计时器、我正在创建周期性时钟来实现这一点。 大部分时间工作正常、但我遇到的问题是、10ms 时钟在我的应用中将无法间歇性重启。 我一直在切换一个引脚并在示波器上监控它、对于我所做的一周测试、它至少会在24小时内失败一次。
是否有什么想法会导致时钟发生故障或无法重新启动?
我可以确认、当10ms 计时器停止时、MCU 似乎仍在工作、因为我看到广播重启计时器仍然工作、我仍然可以通过 BLE 进行连接。
我还可以确认、将时钟从10ms 时钟更改为1秒时钟不会产生任何影响、1秒时钟仍将失败。
我们非常感谢您的任何帮助。
谢谢、
Steve
这是我用于创建10ms 时钟的代码:
#define ten_MS_PERIOD_EVT_PERIOD 10.
#define ten_MS_period_EVT 0x0020
// 10ms 计时器的时钟实例
静态时钟结构消息定时器时钟;
静态空 simplePeripheral_clockHandler (UARg 参数)
{
//存储事件。
事件|= arg;
//唤醒应用程序。
Semaphore_post (SEM);
}
1) 1)简单外设初始化:
//为10ms 计时器周期性事件创建单次时钟。
Util_constructClock (&tenMsTimerClock、simplePeripheral_clockHandler、
ten_ms_period_evt_period、0、false、ten_ms_period_evt);
2) 2)在 main 中(simplePeripheral_taskFxn (UArg a0、UArg A1)
对于(;)
{
if (事件和 ten_MS_period_EVT)
{
事件&=~ten_MS_periode_EVT;
//执行10ms 事件处理
simplePeripheral_tenMsTimerEvent();
//重新启动时钟
Util_startClock (&tenMsTimerClock);
}
}
3)静态空 simplePeripheral_tenMsTimerEvent (空)
{
//设置标志
appTimer.tMsPassedFlag = true;
//在此处切换引脚以验证它是否在示波器上停止
}