您好!
我需要根据电源通知事件启动和停止计时器
当事件为 PowerCC26XX_entering_standby -停止计时器时
当事件为 PowerCC26XX_awarn_standby 或 PowerCC26XX_awarn_standby_Late -启动计时器时
STOP 命令不起作用,我看到系统从 计时器事件唤醒。
这是我的代码:
时钟定义:
(三
Clock_Params_init (wdtClock._params);
wdtClock._params.period = 500000/ Clock_tickPeriod;//1000000/ Clock_tickPeriod;//每1秒或100.000个时钟节拍*
wdtClock._params.startFlag = false;// true;//立即开始*/
wdtClock._handle = Clock_create ((Clock_Functr) watchdogTimerCallback、
wdtClock._params.period、wdtClock._params、NULL);
电源通知定义:
(二
power_registerNotify (&g_powerNotificationObj、
PowerCC26XX_entering_standby | PowerCC26XX_awarn_standby | PowerCC26XX_awarK_STANDBY_Late,
(POWER_NotifyFxn) POWER_PowerNotification_CB、
g_clientarg);
通知回调函数定义:
(二
#pragma Optimize =无
unsigned int power_PowerNotification_CB (unsigned int eventType、unsigned int eventArg、uintptr_t clientArg)
{
//选通正弦启动-启动
//点1-1
Board_setPin (10);
Board_clrPin (10);
Board_setPin (10);
Board_clrPin (10);
Board_setPin (10);
asm ("nop");asm ("nop");asm ("nop");asm ("nop");
//选通正弦开始-结束
//点1-2
if (eventType = PowerCC26XX_entering_standby)
{
//点1-3
//系统进入睡眠状态时停止计时器
watchdogTimer_stopTimer();
//Clr 调试端口-系统进入睡眠状态时
Board_clrPin (14);
}
否则、如果((eventType = PowerCC26XX_awarn_standby)||(eventType = PowerCC26XX_awarn_standby_late))
{
//点1-4
//set debug port (//设置调试端口)-系统转到运行时
Board_setPin (14);
watchdogTimer_restartTimer();
}
//选通正弦结束-开始
//点1-5
Board_clrPin (10);
Board_setPin (10);
Board_clrPin (10);
Board_setPin (10);
Board_clrPin (10);
Board_setPin (10);
Board_clrPin (10);
asm ("nop");asm ("nop");asm ("nop");asm ("nop");
//选通正弦结束-结束
//点1-6
返回 Power_NOTIFYDONE;
}
(二
定时器停止/启动定义
(三
void watchdogTimer_stopTimer (void)
{
//停止计时器上的调试端口
Board_togglePin (18);
//停止计时器
//Point 2-1
clock_stop (wdtClock_handle);
}
void watchdogTimer_restartTimer (void)
{
//启动计时器上的调试端口
Board_togglePin (9);
//启动计时器
//Point 2-1
clock_start (wdtClock_handle);
//watchdogDriver_feedWatchdog();
}
输出信号缩小

输出信号放大 :

问题:
1.为什么点1-3凸轮在点1-1之前?
2.为什么系统唤醒时使用点2-2两次?
3.为什么计时器 每500ms 继续唤醒一次系统(计时器超时)?
谢谢
照烧
