移植的硬件平台是奋斗stm32 V5板,移植教程对照的是http://wenku.baidu.com/view/a90468020b1c59eef8c7b48e.html,移植过程中开始忽略几处操作导致移植不成功,易忽略的分别是以下步骤。
1此处圈内是仅保留这两个函数。不要有其他函数。
2是BSP_Init函数不要忘记编写
3是两处容易忽略且易些错的地方莫要漏写或写错。
以上步骤做完后,虽然能编译通过但是实际程序并不能运行,因为移植教程作者设计如果移植成功是伴随流水灯闪烁的,因此打开调试器后发现uCOS卡死在B位置。
PendSV_Handler PROC
EXPORT PendSV_Handler [WEAK]
B .
ENDP
查阅相关资料后,其实所谓的“PendSV_Handler全部替换OSPendSV”策略本意是对的,但是并未更改完整,采取如下措施,按ctrl+shift+f组合键,调出全工程字符查找查找PendSV,关注与你所选的存储类型相关的文件,我的为HD后缀及图中蓝色标出的文件
全部替换!然后关注如下面两图,将其中PendSV_Handler也替换为OSPendSV。
差不多就是次思路,貌似是之间的名字关联没有处理好,导致函数连接有问题,之后解决卡在B处问题后,又出现新的问题,就systick等待通过不了,查询后发现是库函数版本问题,改为0x08后通过!然后又出现了类似PendSV的问题,搜索了PensSV修改过 的地方,将其一律换写成SysTick_Handler,调试后问题解决!表示愕然
//while(RCC_GetSYSCLKSource()!=0x80);while(RCC_GetSYSCLKSource() != 0x08);