高级会员

- 积分
- 606
- 金钱
- 606
- 注册时间
- 2013-12-14
- 在线时间
- 125 小时
|
10金钱
本帖最后由 lialong1989 于 2016-4-20 15:56 编辑
我用的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
|
最佳答案
查看完整内容[请看2#楼]
以解决。
原因是启动文件中汇编语言不能这么注释,不能!不能!不能!
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_SysTickHan ...
|