完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近刚移植了UC/OS-III到STM32F105上面,只是单纯的点亮LED灯还有串口通信,都是正常的,若是使用外部中断,且不停的使用,让其进行嵌套之后,程序就会跑飞,觉得我哪里是移植错了,但很难找出,想请教一下,在移植过程中对于
void OS_CPU_SystickHandler (void) { CPU_SR_ALLOC(); time32_incr += 10; CPU_CRITICAL_ENTER(); OSIntNestingCtr++; /* Tell uC/OS-III that we are starting an ISR */ CPU_CRITICAL_EXIT(); OSTimeTick(); /* Call uC/OS-III's OSTimeTick() */ OSIntExit(); /* Tell uC/OS-III that we are leaving the ISR */ } 这个函数怎么处理的? |
|
相关推荐
1个回答
|
|
STM32F105可以移植UC/OS-III。在移植过程中,确保你遵循了正确的步骤和配置。对于中断嵌套的处理,UC/OS-III提供了一种机制来管理中断嵌套。
1. 在移植UC/OS-III时,请确保你已经正确配置了系统时钟和中断优先级。这将确保中断能够正确地嵌套。 2. 对于`OS_CPU_SysTickHandler`函数,它是一个系统滴答定时器中断处理函数。在这个函数中,`OSIntNestingCtr`用于跟踪中断嵌套的深度。当进入中断时,`OSIntNestingCtr`会增加,当退出中断时,它会减少。这有助于UC/OS-III管理中断嵌套。 3. 如果你的程序在中断嵌套时出现问题,可能是由于中断优先级配置不当或者中断服务例程(ISR)中的代码问题。请检查以下几点: a. 确保你已经正确设置了中断优先级,以避免优先级反转问题。 b. 在ISR中,尽量避免执行过多的任务,特别是那些可能阻塞调度器的任务。如果需要执行耗时的任务,请在ISR中设置一个标志,然后在任务级别处理该任务。 c. 确保你的ISR是可重入的,这意味着它们不应该依赖于任何全局或静态变量,除非这些变量是专门为中断设计的。 4. 如果问题仍然存在,你可以尝试使用调试器逐步执行代码,以找出导致程序跑飞的具体位置。 5. 另外,确保你已经阅读了UC/OS-III的官方文档,了解如何正确地使用和配置中断嵌套。 总之,STM32F105可以移植UC/OS-III,但在移植过程中需要仔细配置中断优先级和处理中断嵌套。通过检查上述建议,你应该能够找到并解决问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1909 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1678 浏览 1 评论
1172 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
771 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1732 浏览 2 评论
1972浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
807浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
256浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
624浏览 3评论
634浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-24 11:25 , Processed in 1.179734 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号