完善资料让更多小伙伴认识你,还能领取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();函数,系统就能正确运行,删除这个函数,就不行。这个我也一直没弄明白。
|
|
|
|
只有小组成员才能发言,加入小组>>
691 浏览 1 评论
2118 浏览 5 评论
2433 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2198 浏览 6 评论
2165 浏览 7 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
317浏览 9评论
302浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
436浏览 6评论
301浏览 5评论
349浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-26 23:54 , Processed in 0.835565 second(s), Total 80, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号