完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
系统设置2个任务,系统运行时出现一些异常现象,请问有没有遇到过?是什么原因引起的?
方式1:系统运行正常 void Task1_Task(void * pvParameters) { while(1) { vTaskDelay(500); //延时函数(任务调度) printf("Task1rn"); //串口打印 } } void Task2_Task(void * pvParameters) { while(1) { Delay_Ms(500); //延时函数(无任务调度) LED_TOGGLE; //LED闪烁(取反) } } 方式2:任务1正常,任务2没反应,LED不闪烁 void Task1_Task(void * pvParameters) { while(1) { Delay_Ms(500); //延时函数(无任务调度) printf("Task1rn"); //串口打印 } } void Task2_Task(void * pvParameters) { while(1) { vTaskDelay(500); //延时函数(任务调度) LED_TOGGLE; //LED闪烁(取反) } } 方式3:任务1正常,任务2没反应,LED不闪烁 void Task1_Task(void * pvParameters) { while(1) { Delay_Ms(500); //延时函数(无任务调度) printf("Task1rn"); //串口打印 } } void Task2_Task(void * pvParameters) { while(1) { Delay_Ms(500); //延时函数(无任务调度) LED_TOGGLE; //LED闪烁(取反) } } |
|
相关推荐
1个回答
|
|
FreeRTOS任务调度异常的原因可能有多种,以下是一些可能的原因:
1. 任务优先级设置不当:如果任务1的优先级高于任务2,而任务1又是一个无限循环的任务,那么任务2可能永远无法运行,导致系统异常。 2. 任务运行时间过长:如果任务1运行时间过长,导致任务2无法及时运行,可能会引起系统异常。可以尝试对任务进行优化,减少运行时间,或者调整任务优先级。 3. 任务堆栈溢出:如果任务的堆栈大小设置不合适,任务可能会发生堆栈溢出,导致系统异常。可以尝试增大任务的堆栈大小。 4. 中断冲突:如果任务中的中断处理函数与系统中其他中断发生冲突,可能会导致系统异常。可以尝试禁用某些中断,或者对中断处理函数进行优化。 5. 资源竞争:如果任务1和任务2对共享资源进行争夺,可能会导致系统异常。可以尝试使用互斥锁或信号量来保护共享资源,避免资源竞争。 以上只是一些常见的原因,具体的问题需要根据实际情况进行分析和调试。可以通过观察系统的运行日志、使用调试工具或者检查代码逻辑来确定异常的原因。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1816 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1631 浏览 1 评论
1098 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
739 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1691 浏览 2 评论
1951浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
754浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
585浏览 3评论
604浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
568浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 02:27 , Processed in 0.828399 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号