这几天在移植ucosii,其实关于stm32的ucosii网上有很多例子,但是想改成自己用的芯片型号以及把自己的程序加进去还得做些改动,今天就遇到一些麻烦,而且与以前遇到的境况相同。
有时编译器会在不知名的情况下自己调用keil自带的stm32固件库,导致新库和旧库版本不兼容出现很多错误,但是明明没有写调用自带库的语句却为什么keil会强行从自带库中加载文件导致出错,这个问题以前整了我好多次,今天终于记住了,原因归结于keil的编译器在查找C/C++类文件时要求用户指明搜索路径,而且它不会自动搜索该路径下的子目录,如果所需要的文件在指定路径中无法找到,编译器就会在自带库中搜索。今天遇到很多错误首先就是由于包含路径不全,这路径最好按照一个简单的顺序,还有就是如果自己想用st库函数自己建立一个工程,强烈建议把stm32 官方库的文件将组织结构简化成2个文件,一个是将所有核心文件直接放在CMSIS文件夹下,另一个将库的所有头文件和C文件放在SRC文件夹下,这样在创建工程后会带来很多方便。比如指定工程文件包含路径的时候就很方便,因为关于库的文件夹只有2个,两下就填好了,但是如果按照官方的文件组织结构就需要在工程中添加很多次,而且可能漏掉某个路径,因为路径不支持自动搜索目录。
今天最后遇到的问题提示是:
startup_stm32f10x_hcl.0指不到main函数,很郁闷,最后重建立工程,简化文件结构,没有再出错。 |