参照移植教程进行ucos_II的移植,教程中没有使用OS_CPU_SysTickHandler(),而调用了stm32库中的systick-handler()。为了统一代码,启动文件startup_stm32f10x_hd.s尽量少该,能不改就不改。
基于上述理由,我把UCOS_II中的所有中断向量OS_CPU_PendSVHandler改成了pendsd_handler,
如:// EXPORT PendSV_Handler
EXTERN PendSV_Handler //用做上下文切换也就是任务切换,最重要的中断
还有it.c中的文件等等。
这样一来问题就出来了,在编译的出现了“PendSV_Handler”重复定义的问题:
//OS_CPU_PendSVHandler
PendSV_HandlerCPSID I ; Prevent interruption during context switch
MRS R0, PSP ; PSP is process stack pointer
CBZ R0, OS_CPU_PendSVHandler_nosave ; Skip register save the first time
SUBS R0, R0, #0x20 ; Save remaining regs r4-11 on process stack
STM R0, {R4-R11}
LDR R1, =OSTCBCur ; OSTCBCur->OSTCBStkPtr = SP;
LDR R1, [R1]
STR R0, [R1]
messages:
Building configuration: STM32_uCOSII_DEMO - Debug
Updating build tree...
os_cpu_a.asm
Error[42]: Duplicate label:'PendSV_Handler' D:\Stm32_ucosII_demo_yang\OS_uCOS_II\port\os_cpu_a.asm 202
Error while running Assembler
Total number of errors: 1
Total number of warnings: 0
我想这个问题应该出在STM32的启动代码那一块,不知道如何解决呢?求高手予以指点啊。