完善资料让更多小伙伴认识你,还能领取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();函数,系统就能正确运行,删除这个函数,就不行。这个我也一直没弄明白。
|
|
|
|
只有小组成员才能发言,加入小组>>
772 浏览 0 评论
1148 浏览 1 评论
2527 浏览 5 评论
2858 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2709 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1061浏览 3评论
189浏览 2评论
453浏览 2评论
365浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
452浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 18:00 , Processed in 1.171436 second(s), Total 84, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号