完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本帖最后由 一只耳朵怪 于 2018-6-6 17:02 编辑
您好,我使用Task_sleep(5000000 / Clock_tickPeriod);让系统进入待机模式,待机时间为5秒,并使能一个引脚中断,用于唤醒cc1310。但实测中,在待机模式时,我通过按一个按键触发中断,的确能唤醒cc1310,但唤醒后代码执行中断函数后退出似乎又进入待机模式,除非5秒过后才退出。 所以请问怎么才能唤醒cc1310并且再唤醒后执行Task_sleep的下一句代码? |
|
相关推荐
13个回答
|
|
|
|
|
|
您好,我是在task中调用Task_sleep的。 在task中首先我注册按键下降沿中断 const PIN_Config keyPinTable[] = [ KEY | PIN_INPUT_EN | PIN_PULLUP | PIN_IRQ_NEGEDGE, PIN_TERMINATE ]; keyPinHandle = PIN_open(&keyPinState, keyPinTable); if (keyPinHandle != 0) [ PIN_registerIntCb(keyPinHandle, &keyCallbackFxn); ] 然后再一个大循环中每睡眠5秒后进行一次RF发送 while(1) [ RF_TxPacket txPacket = [0]; /* Create packet with incrementing sequence number and random payload */ txPacket.payload[0] = (uint8_t)(seqNumber >> 8); txPacket.payload[1] = (uint8_t)(seqNumber++); txPacket.payload[2] = battMeasure(); uint8_t i; for (i = 3; i < PAYLOAD_LENGTH; i++) [ txPacket.payload = i;//rand(); ] txPacket.len = PAYLOAD_LENGTH; txPacket.dstAddr[0] = 0xaa; txPacket.dstAddr[1] = 0x55; txPacket.absTime = 0;/*RF_getCurrentTime() + RF_ms_To_RadioTime(1000);*/ LED_Set(Led_Red,1); //红灯亮 RF_transmit(rfHandle, &txPacket); LED_Set(Led_Red,0); //红灯灭 Task_sleep(5000000 / Clock_tickPeriod); ] 在按键中断函数中让蓝灯反转 void keyCallbackFxn(PIN_Handle handle, PIN_Id pinId) [ LED_Set(Led_Blue, !PIN_getOutputValue(LED_BLUE)); ] 结果的现象是:我在进入待机时,按下按键,蓝色灯反转,说明进入中断,但红色灯不会亮即不发送RF,需等待机5秒后才发送RF |
|
|
|
十个名字V 发表于 2018-6-6 10:51 LaoSheng Lin, 你这样按键也不会唤醒task呀,你按键中断跟这个task没任何关系,中断归中断,task还在5秒中睡着呢,所以肯定是每隔5秒醒来一次调用RF_transmit(),所以就是你看到的现象。 正确的做法你应该用semaphore,while(1) 之后等待semaphore, 这个时候这个task就是在sleep的, 然后按键中断的处理函数发送semaphore去唤醒task,不要用sleep函数。 如果你同时想要每隔5秒RF_transmit一下,那么你就要结合timer来做,用的也不是sleep。在上面我说的方法的基础上,设置个timer,每隔5秒用semaphore唤醒task,给task一个event, 在这个event中重新设置timer。如果收到按键中断, 也给个event给task,task在这个event下面停止timer,然后重启5秒的timer。 |
|
|
|
骑猪去天山 发表于 2018-6-6 11:07 谢谢Y的指点,我明白了,也就是说TI-RTOS自动会进入待机模式的吧,难怪我以前测试待机电流时,使用Task_Sleep和不使用时的功耗都差不多,都小于1uA |
|
|
|
十个名字V 发表于 2018-6-6 11:25 LaoSheng Lin , 是的. 只要没有关闭standby模式,TI-RTOS会自动进入standby模式。 |
|
|
|
您好!我用例程pinStandby测试电流,发现跟手册描述相差很大,进入Task_sleep之后,电流在770uA左右,硬件和软件都检查了,没发现问题在哪里。 请问,我应该从哪些方面入手检查这个问题呢?谢谢! |
|
|
|
cham3070 发表于 2018-6-6 11:43 我发现问题了,是我的32.768KHz晶体没有起振,导致休眠电流变大,现在已经解决了。进入Task_sleep之后电流只有0.3uA左右。 |
|
|
|
骑猪去天山 发表于 2018-6-6 11:07 是否能提供例程参考参考!因为对TI的库函数还是不太熟悉! |
|
|
|
0.3uA左右的电流,最大会不会超过资料上说的0.7uA? |
|
|
|
standby模式下,电流会超过资料上说的0.7uA吗? |
|
|
|
请问你是如何设置在standby模式下 电流消耗只有0.3uA呢?我测试总是在几个uA降不下去,能指导下吗? |
|
|
|
hi, Meng Zhang4 您好,你的standby模式下的例程是否可以给我参考一下,谢谢你啦! best regards , fenglin |
|
|
|
SDK里的empty和pinStandby都可以作为standby模式的例程。 |
|
|
|
只有小组成员才能发言,加入小组>>
325 浏览 1 评论
523 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
763 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
644 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1119 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
16浏览 28评论
38浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
234浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
191浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
51浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 04:20 , Processed in 1.194083 second(s), Total 103, Slave 87 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号