完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
想问下定时器回调函数是否是在每次定时器时间到了时候才会被调用。[C] 纯文本查看 复制代码
void tmr1_callback(void *p_tmr,void *p_arg){u8 *pbuf;static u8 msg_num;OS_ERR err;pbuf = mymalloc(SRAMIN,10);if(pbuf){msg_num++;sprintf((char*)pbuf,"ALIENTEK %d",msg_num);OSTaskQPost((OS_TCB*)&Msgdis_TaskTCB, (void*)pbuf, (OS_MSG_SIZE)10, (OS_OPT)OS_OPT_POST_FIFO,(OS_ERR*)&err);if(err != OS_ERR_NONE){myfree(SRAMIN,pbuf);OSTmrStop(&tmr1,OS_OPT_TMR_NONE,0,&err); tmr1sta = !tmr1sta;LCD_ShowString(40,150,100,16,16,"TMR1 STOP! ");}}}当Msgdis_TaskTCB中的4个内建消息队列满后,OSTaskQPost((OS_TCB*)&Msgdis_TaskTCB出错,然后进入if(err != OS_ERR_NONE)释放内存并关闭定时器,这时候,定时器关闭了应该不会在进入这个回调函数里面了吧?所以msg_num这个变量应该只会自加到4啊,可是看视频,在内存释放的过程中msg_num还是会自加,一直加到8.想问下这块应该怎么理解?释放内存的时候定时器到底关闭了没?回调函数在什么情况下会进入?谢谢回答的人啦 |
|
相关推荐
2个回答
|
|
答案在STM32F4 UCOS开发手册V3.0 第180页 定时器虽然关了,但是消息队列里面还有没处理完的数据,所以msgdis_task不会停下来
|
|
|
|
什么叫定时器,楼主要好好理解
|
|
|
|
只有小组成员才能发言,加入小组>>
698 浏览 0 评论
1109 浏览 1 评论
2476 浏览 5 评论
2810 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2653 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
656浏览 9评论
651浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
784浏览 6评论
632浏览 5评论
672浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 01:32 , Processed in 1.234969 second(s), Total 82, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号