完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
//中断测试任务函数
void interrupt_task(void *pvParameters) { static u32 total_num=0; while(1) { total_num+=1; if(total_num==5) { printf("关闭中断.............rn"); portDISABLE_INTERRUPTS(); //关闭中断 delay_xms(5000); //延时5s // printf("打开中断.............rn"); //打开中断 // portENABLE_INTERRUPTS(); } LED0=~LED0; vTaskDelay(1000); } } //我把最后打开中断的函数屏蔽掉了,但中断仍在继续。此实验完整代码就是发烧友FreeRTOS中断实验的代码。 |
|
相关推荐
3个回答
|
|
因为有其它的代码会打开中断!去vTaskDelay()函数里面去看看是不是有打开中断的代码
|
|
|
|
portDISABLE_INTERRUPTS()是屏蔽中断优先级5及以下的中断,而不是屏蔽所有中断。中断优先级0-4依旧可以正常运行,你看看你还能进中断的优先级设置的多少
|
|
|
|
我把vTaskDelay()给注释掉以后,确是中断关闭了,但我没找到在vTaskDelay()中哪开启了中断。
如果我在任务中想把中断屏蔽,必须调用vportDISABLE_INTERRUPTS().但想要实现任务切换,就不得不调用vTaskDelay()(此时任务才能放弃CPU使用权,且该任务优先级最高)(中断会再次开启)。那怎么才能正确调用vportDISABLE_INTERRUPTS()实现中断屏蔽呢? |
|
|
|
只有小组成员才能发言,加入小组>>
343 浏览 0 评论
959 浏览 1 评论
2347 浏览 5 评论
2667 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2479 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
518浏览 9评论
529浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
631浏览 6评论
502浏览 5评论
541浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-9 02:48 , Processed in 0.839795 second(s), Total 54, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191