Keil程序移植到IAR要点总结

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、移植操作方法
  • 二、碰到的重要问题
    • 1.汇编启动文件不同
    • 2.中断处理函数
    • 3.项目DEVICE配置
    • 4.配置icf文件
    • 5.下载器配置
  • 总结


前言

针对STM32G030C8T6芯片,把Keil程序移植到IAR,碰到了很多问题,在此做个记录,同时也帮助遇到类似问题的朋友。


一、移植操作方法

移植可以有两种途径:
1 使用IAR创建一个空的项目,然后把KEIL项目的文件拷贝到IAR项目的目录下,然后在IAR软件的菜单添加到项目中。
2 使用IAR的转换工具,具体操作参考下面链接
https://www.cnblogs.com/liangbo-1024/p/10936353.html

我自己使用的是第一种方法。

二、碰到的重要问题

1.汇编启动文件不同

对于Keil和IAR,启动用的汇编文件的语法是有差异的,对于我的这个项目的启动文件名是startup_stm32g030xx.s,从Keil中直接拷贝到IAR中编译会报很多错误,一开始我是自己修改的,网上有人总结了修改的要点,后来才发现ST已经把这个文件准备好了,只需要去官网下载就可以了。
怎样在ST官网下载相关文件,参考这个链接:
https://jingyan.baidu.com/article/414eccf635aae42a421f0a00.html
我下载到的文件是en.STM32CubeG0_v1-5-0.zip,接近200M大小,解压缩后,找到汇编启动文件在以下路径:
STM32Cube_FW_G0_V1.5.0\Drivers\CMSIS\Device\ST\STM32G0xx\Source\Templates\iar\startup_stm32g030xx.s
注意一定要使用iar目录下的那个。

2.中断处理函数

在startup_stm32g030xx.s中定义了所有中断处理函数,但是只是定义,并没有具体实现,当你需要用到时要自己在c代码中定义自己的中断处理函数。
对于Keil项目,没有用到的中断处理函数我没有管它,运行正常。
对于IAR项目,一开始调试时发现总是跑飞到了没有用到的中断处理函数里,比如RCC_IRQHandler,虽然没有用到这个中断处理函数,还是给它在c代码里定义了一个实体:
void RCC_IRQHandler(void)
{
}
总之,对于IAR项目,startup_stm32g030xx.s中的所有中断处理函数,即便没有用到也都要定义一个空实体函数。

3.项目DEVICE配置

对于IAR项目,需要配置options中CPU型号:
Keil程序移植到IAR要点总结_第1张图片

4.配置icf文件

icf文件包含芯片的ROM和RAM配置信息:
Keil程序移植到IAR要点总结_第2张图片
我是在KEIL的安装目录下找到的对应芯片的icf文件:
./ARM/PACK/Keil/STM32G0xx_DFP/1.2.0/Drivers/CMSIS/Device/ST/STM32G0xx/Source/Templates/iar/linker/stm32g030xx_flash.icf
我把stm32g030xx_flash.icf拷贝到了我的IAR项目的根目录下。

5.下载器配置

在options中配置使用的下载器:
Keil程序移植到IAR要点总结_第3张图片
Keil程序移植到IAR要点总结_第4张图片
Keil程序移植到IAR要点总结_第5张图片


总结

以上就是Keil项目移植到IAR中的一些要点。

你可能感兴趣的:(单片机,单片机,stm32,c语言)