完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
我用的MCU是STM32F103VCT6,编译环境是IAR,今天开始移植ucosii,参考的是原子推荐的“UCos-ii_在STM32上的移植详解.pdf”。
移植完编译后,没有出现错误,可是当程序红色行运行完就进入硬件错误中断,我把堆栈大小变大变小都不起作用,按照网上别人类似的情况修改也没用,实在没有办法了,希望原子哥和高手们指点一下。 OSStartHighRdy LDR R0, =NVIC_SYSPRI14 ; Set the PendSV exception priority LDR R1, =NVIC_PENDSV_PRI STRB R1, [R0] MOVS R0, #0 ; Set the PSP to 0 for initial context switch call MSR PSP, R0 LDR R0, =OSRunning ; OSRunning = TRUE MOVS R1, #1 STRB R1, [R0] LDR R0, =NVIC_INT_CTRL ; Trigger the PendSV exception (causes context switch) LDR R1, =NVIC_PENDSVSET STR R1, [R0] CPSIE I ; Enable interrupts at processor level OSStartHang B OSStartHang ps:OS_CPU_PendSVHandler中断函数是官网下载的,没有一点修改。 程序中所有PendSV_Handler都已经修改为OS_CPU_PendSVHandler |
|
相关推荐
4个回答
|
|
|
以解决。
原因是启动文件中汇编语言不能这么注释,不能!不能!不能! PUBWEAK OS_CPU_PendSVHandlerendSV_Handler SECTION .text:CODE:REORDER(1) OS_CPU_PendSVHandlerendSV_Handler B OS_CPU_PendSVHandlerendSV_Handler PUBWEAK OS_CPU_SysTickHandler;SysTick_Handler SECTION .text:CODE:REORDER(1) OS_CPU_SysTickHandler;SysTick_Handler B OS_CPU_SysTickHandler;SysTick_Handler 把后面的删掉就运行正常。 |
|
|
|
|
|
不能石沉大海啊!!!
|
|
|
|
|
|
|
|
|
我也遇到过这个问题,我的解决方法是把堆栈设置大一点,最后就ok了。最后,注意LCD_Fill();这个函数有古怪。我在不改变堆栈大小的情况下,把任务函数加入lcd_fill();函数,系统就能正确运行,删除这个函数,就不行。这个我也一直没弄明白。
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1022 浏览 1 评论
1852 浏览 0 评论
1833 浏览 1 评论
3258 浏览 5 评论
3585 浏览 9 评论
1026浏览 1评论
1853浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1364浏览 1评论
1856浏览 0评论
1181浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 18:46 , Processed in 0.724889 second(s), Total 51, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1999