Part Number:CC1310
参考例程 mutex.c (ti.com)
发现功耗加大了3.15mA,请问是不是开启Semaphore就会有这么大的功耗呢?有没有其他方案,使得两个task运行在低功耗模式下?
主要代码截图图下:
static void app_task1_cb(void)
{
while(1)
{
task1();
Semaphore_post(semHandle);
}
}
static void app_task2_cb(void)
{
while(1)
{
task2();
Semaphore_pend(semHandle, BIOS_WAIT_FOREVER);
Task_sleep(sleepTickCount);
}
}
Kevin Qiu1:
低功耗主要是在没有数据处理时进入standby模式,如果一直有任务在运行,那MCU就不会进入standby模式
上面两个任务如果一直是切换运行,MCU一直在处理的话,功耗高则是正常的
,
crepse:
之所以用两个任务是想在低功耗模式下,还能检测按键中断。原来的帖子链接:CC1310: CC1310的rfWakeOnRadioRx例程中如何把RF_runCmd引起的阻塞方式修改为非阻塞方式 – 低于 1GHz 论坛 – 低于 1GHz – E2E 设计支持 (ti.com)
原来使用一个任务时,带来的问题是在RF阻塞休眠500ms期间(使用500ms的周期),按键中断没响应,需要按键长按超过500ms才能响应。请教有没有好的方法?
,
Kevin Qiu1:
将任务1和任务2的具体代码传上来看一下,在在RF任务休眠的500ms期间,按键任务的功耗是3.15mA?
这样的话按键任务中应该不只是在等待中断,而是有其他功能使CPU无法进入休眠
,
crepse:
任务优先级最高的task1里跑的是按键检测的逻辑,task2里面跑的是500ms周期的rfWakeOnRadioRx阻塞。就是在500ms休眠期间还能检测到3.15mA的电流,相当于是两个task一直在切换。另外我如果把task2移到task1的任务下面,功耗能降下来(就是有500ms低功耗阻塞的效果,但是这时按键短按是检测不到的),想问在500ms阻塞期间,是不能触发按键中断的吗??
,
Kevin Qiu1:
根据之前帖子的回复,这应该是不行的
你可以参考例程pinShutdown中的方式在第一个任务中尝试使用中断的方式,其他时间 sleep,按键中断到来时处理