STM32F103移植uCOSIII始终卡在PendSV或Systick处解决办法

时间:2022-11-02 16:42:39

移植的硬件平台是奋斗stm32 V5板,移植教程对照的是http://wenku.baidu.com/view/a90468020b1c59eef8c7b48e.html,移植过程中开始忽略几处操作导致移植不成功,易忽略的分别是以下步骤。

1此处圈内是仅保留这两个函数。不要有其他函数。STM32F103移植uCOSIII始终卡在PendSV或Systick处解决办法STM32F103移植uCOSIII始终卡在PendSV或Systick处解决办法

2是BSP_Init函数不要忘记编写

STM32F103移植uCOSIII始终卡在PendSV或Systick处解决办法

3是两处容易忽略且易些错的地方莫要漏写或写错。

STM32F103移植uCOSIII始终卡在PendSV或Systick处解决办法


以上步骤做完后,虽然能编译通过但是实际程序并不能运行,因为移植教程作者设计如果移植成功是伴随流水灯闪烁的,因此打开调试器后发现uCOS卡死在B位置。

PendSV_Handler    PROC

                         EXPORT  PendSV_Handler             [WEAK]

                         B       .

                         ENDP

查阅相关资料后,其实所谓的“PendSV_Handler全部替换OSPendSV”策略本意是对的,但是并未更改完整,采取如下措施,按ctrl+shift+f组合键,调出全工程字符查找查找PendSV,关注与你所选的存储类型相关的文件,我的为HD后缀及图中蓝色标出的文件

STM32F103移植uCOSIII始终卡在PendSV或Systick处解决办法


全部替换!然后关注如下面两图,将其中PendSV_Handler也替换为OSPendSV

STM32F103移植uCOSIII始终卡在PendSV或Systick处解决办法

STM32F103移植uCOSIII始终卡在PendSV或Systick处解决办法

差不多就是次思路,貌似是之间的名字关联没有处理好,导致函数连接有问题,之后解决卡在B处问题后,又出现新的问题,就systick等待通过不了,查询后发现是库函数版本问题,改为0x08后通过!然后又出现了类似PendSV的问题,搜索了PensSV修改过 的地方,将其一律换写成SysTick_Handler,调试后问题解决!表示愕然

//while(RCC_GetSYSCLKSource()!=0x80);
while(RCC_GetSYSCLKSource() != 0x08);