[LiteOS移植]目标芯片STM32F1 创建工程并排错
到这里移植的大部分工作都做完了,可以通过IoT Link Studio创建一个工程来进行排错修改到最终能运行。
创建工程
打开IoT Link Studio点击左下角“home”选择“创建IoT工程”,工程名称可以自定义,我这里选择使用“STM32F103_First”,硬件平台选择之前我们创建的STM32F103RC,选择基于“hello_world_demo”,如下图所示:
编译并排错
点击左下脚“build”开始编译,出现如下图所示错误,提示缺少”stm32l4xx_hal.h”文件以及没有定义目标芯片:
删除工程中下图所示的几个头文件(.h结尾)及对应源文件(.c结尾)。
再次编译点击左下角“rebuild”,提示缺少”stm32l4xx.h”如下图所示:
修改OS_CONFIG\target_config.h文件,将#include “stm32l4xx.h”语句注释,新增#include“stm32f1xx.h”如下图所示:
当前文件夹中并没有stm32f1xx.h文件、stm32f103xe.h文件(stm32f1xx.h文件中引用了stm32f103xe.h文件)和system_stm32f1xx.h文件(stm32f103xe.h文件中引用了system_stm32f1xx.h文件),可以在之前STM32CubeMX软件生成的工程目录 STM32F103RC_Project\Drivers\CMSIS\Device\ST\STM32F1xx\Include中找到,并复制到当前工程的Inc目录下。
再次编译,出现下图所示错误,提示找不到“stm32f1xx_hal_exti.h”,该文件为外部中断相关,我们暂不使用,如下图所示:
打开“stm32f1xx_hal_conf.h”文件,将“#define HAL_EXTI_MOUDLE_ENABLE”语句注释,如下图所示:
并修改project.mk文件,之前我们将Src/stm32f103中的字母写成了大写,这里修改为小写即可,如下图所示:
再次编译,出现如下图所示错误,提示缺少“stm32l4xx.h”文件,如下图所示:
将缺少“stm32l4xx.h”文件的这些文件中的“stm32l4xx.h”修改为“stm32f1xx.h”即可
删除工程中以下未使用的文件spi.c、spi.h、i2c.c和i2c.h。
删除project.mk中对以上未使用文件编译的规则,如下图所示(删除红框中的规则):
删除“sys_init.h”文件中的以下语句,这些文件我们并未使用,如下图所示:
再次编译,出现如下图所示错误,提示Instance结构体中缺少RDR成员,这是STM32L4的命名方式,这里将RDR修改为DR即可,如下图所示:
修改uart_debug.c文件中的RDR修改为DR,如下图
注释main.c中部分语句,这些语句对应的初始化外设我们并未使用,如下图所示:
再次编译,出现如下图所示错误,提示没有LPUART1这个串口,这是STM32L4才有的串口。
在uart_at\uart_at.c将LPUART1和LPUART1 _IRQn修改为USART2和USART2 _IRQn,RDR修改为DR,如下图所示:
再次编译,出现下图所示错误,提示时钟初始化部分的语句有问题。
使用之前STM32CubeMX生成的工程中的main.c文件中的SystemClock_Config函数及函数体替换sys_init.c文件中的SystemClock_Config函数及函数体,如下图所示:
再次编译,出现下图所示警告,“atiny_random”函数导致的。
注释“sysy_init.c”文件中“atiny_random”函数,如下图所示。
再次编译,提示下图错误,“PendSV_Handler”函数重复定义。
注释“stm32f1xx_it.c”文件中对该函数的实现,如下图所示。
再次编译,提示编译成功,将程序下载到STM32F1单片机中,通过USB-TTL接到单片机的串口1(PA9和PA10),即可在串口助手中看到如下图所示输出,这正是hello_world_demo中的输出,说明LiteOS_Lab跑起来了,移植成功!
这时我们需要用STM32F103RC_First工程中修改过的文件去替换SDK/targets/STM32F103RC中的文件,下一次使用时直接创建工程就能使用,无需修改。
总结
移植过程中的难点集中在调试排错,一个程序三分写七分调,在调试过程中你遇到的错误可能和我的不一样,因为我们的操作步骤以及开发环境不可能百分百相同,所以你需要学会灵活运用,根据具体情况具体分析去调试并解决错误,如果遇到无法解决的错误,记得先通过搜索引擎找找答案,找不到到论坛中发帖求助,带上详细截图!
- 点赞
- 收藏
- 关注作者
评论(0)