• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

IAR写的stm32单片机程序怎么移植到keil中

huihui163 2017-09-07 浏览量:5699
IAR写的stm32单片机程序怎么移植到keil中,都用库函数
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 感觉这种问题直接百度就好了,都有现成的答案,哎!但是要一句一句说的话,确实三言两语说不清,也似乎没必要,只好给你现成的答案了!最重要的一点就是:不管是IAR还是MDK,编程时使用的都是STM32的固件函数库,唯一不同的是启动文件。MDK在建立STM32工程时会自动创建启动文件 STM32F10x.s,而IAR使用的启动文件是cortexm3_macro.s。此外,两者对中断向量表的管理也不一样​。


    STM32 IAR工程->Keil MDK转换详解

    • 发布于 2017-09-07
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:11
  • 如果是用cubeMX和HAL库来写的,直接在输出代码那里选择Keil就可以生成并移植了,这也是ST推cubeMX的原因。

    • 发布于2017-09-07
    • 举报
    • 评论 0
    • 0
    • 0

  • IAR移植到Keil,主要是启动文件(.s文件),注意把相关的ISR函数都在Keil工程中的.s中IMPORT 。其他的C文件直接拷过来加入工程就行。注意,如果工程中使用了Lib库的接口,Lib需要使用Keil重新编译。
    • 发布于2017-09-07
    • 举报
    • 评论 1
    • 0
    • 0
huihui163 回复了 xiefy21 :现在就是定时和中断相关的函数全部编译显示未定义,我前面问的问题您也看到了 回复

  • 修改启动文件,检查是否使用了中断,修改中断函数,请参考下面的文章

    http://www.eepw.com.cn/article/201611/320910.htm

    • 发布于2017-09-07
    • 举报
    • 评论 2
    • 0
    • 0
huihui163 回复了 黄莨元 :现在就是定时和中断相关的函数全部编译显示未定义,我前面问的问题您也看到 回复
黄莨元 回复了 黄莨元 :参考我给你的链接,分中断移植和没有中断移植,函数显示没有定义,那你就去对比IAR工程和keil工程,看看缺少了那一部分 回复

  • 启动文件与很多的宏是不一样的,是不一样的编译器。
    所以,重新建一个工程,然后把应用层的程序移植过去,再慢慢调试。
    • 发布于2017-09-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 改下启动文件,其他都差不多。启动文件官方有写好,更换下就可以
    • 发布于2017-09-07
    • 举报
    • 评论 5
    • 0
    • 0
huihui163 回复了 Sourcelink :现在就是定时和中断相关的函数全部编译显示未定义,我前面问的问题您也看到了 回复
huihui163 回复了 Sourcelink :我把iar的启动文件换到keil里 回复
Sourcelink 回复了 huihui163 :因为iar和keil两种开发环境的编译器不一样,所以对应的汇编指令是由所不同的,才会出现未定义情况。 回复
Sourcelink 回复了 huihui163 :\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\iar 回复
Sourcelink 回复了 huihui163 :编译环境不同,编译器不一样,所以一些指令识别不了 回复

  • 用STM32CubeMX建个工程,时钟和IO等配置成一样,导出keil工程,然后把IAR里你自己后来添的那些函数拷贝过来
    • 发布于2017-09-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 移植的过程,还不好再新建一个工程,重新写呢。

    两个IDE的差另很大的。

    • 发布于2017-09-07
    • 举报
    • 评论 0
    • 0
    • 0

  • 应用层程序里面的内容可以直接用,库需要改一下,改用keil的库,不然有些函数会报错

    • 发布于2017-09-08
    • 举报
    • 评论 0
    • 0
    • 0

  • 直接打开keil模板,将IAR对应函数加上去。
    • 发布于2017-09-09
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果是用HAL庫

    只要直接用MDK創建專案後添加原始碼檔案和標頭檔即可

    這差異不大的

    然後再看看編譯有沒有問題


    • 发布于2017-09-10
    • 举报
    • 评论 2
    • 0
    • 0
huihui163 回复了 MOP :把原始代码和头文件吗 回复
MOP 回复了 huihui163 :嗯嗯是的唷 回复

  • 主要是启动文件不同。

    使用库的时候,重新生成个工程,再把必要程序直接复制过去就可了

    • 发布于2017-09-20
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

IAR写的stm32单片机程序怎么移植到keil中