keil5工程移植到IAR工程

2021-10-10 12:33:43 字數 2761 閱讀 2781

keil5工程移植到iar工程

一、 軟體版本

mdk-arm professional  version: 5.14.0.0

iar 8.1

移植工程:基於正點原子開發板建立的stm32f407zgt6工程

二、 開始建立iar對應工程

1、 keil5例程結構如下:

2、 建立對應的iar工程:

3、 建立好的對應iar工程如下:

可以看到,基本按照mdk中的結構建立了對應的iar工程

三、 修改對應的檔案(重點)

1、 修改startup_stm32f40_41***.s檔案,由於iar中使用的是自己的啟動檔案,所以先要找到對應的檔案進行代替。在韌體庫的此路徑下:

\stm32f4xx_dsp_stdperiph_lib_v1.4.0\libraries\cmsis\device\st\stm32f4xx\source\templates\iar

2、修改sys.c檔案

iar中的彙編引用於mdk中是不一樣的,移植時務必注意,這也就導致了無法同時很好支援兩個編譯器,只能做不同的版本了。修改後的**如下:

#include "sys.h" 

//本程式只供學習使用,未經作者許可,不得用於其它任何用途

//alientek stm32f407開發板

//系統時鐘初始化

//包括時鐘設定/中斷管理/gpio設定等

//正點原子@alientek

//技術論壇:www.openedv.com

//建立日期:2014/5/2

//版本:v1.0

//修改說明

//無//thumb指令不支援彙編內聯

//採用如下方法實現執行彙編指令wfi 

#if defined ( __iccarm__ )  //iar下使用

void wfi_set(void)

asm("wfi");           

//關閉所有中斷(但是不包括fault和nmi中斷)

void intx_disable(void)

asm("cpsid   i");

asm("bx      lr");    

//開啟所有中斷

void intx_enable(void)

asm("cpsie   i"); 

asm("bx      lr");    

//設定棧頂位址

//addr:棧頂位址

void msr_msp(u32 addr)

asm("msr msp, r0");    //set main stack value

asm("bx r14");     

#else

__asm void wfi_set(void)

wfi;        

//關閉所有中斷(但是不包括fault和nmi中斷)

__asm void intx_disable(void)

cpsid   i

bx      lr    

//開啟所有中斷

__asm void intx_enable(void)

cpsie   i

bx      lr 

//設定棧頂位址

//addr:棧頂位址

__asm void msr_msp(u32 addr)

msr msp, r0                      //set main stack value

bx r14

#endif

3、修改usart.c

主要修改部分如下:

// //加入以下**,支援printf函式,而不需要選擇use microlib  

#if defined ( __iccarm__ )  //iar下使用

//重定義fputc函式

int fputc(int ch, file *f)

while((usart1->sr&0x40)==0);//迴圈傳送,直到傳送完畢    

usart1->dr = (u8) ch;     

return ch;

#else  //非iar下使用

#pragma import(__use_no_semihosting)

//標準庫需要的支援函式                

struct __file ;

file __stdout;      

//定義_sys_exit()以避免使用半主機模式   

_sys_exit(int x)

x = x;

//重定義fputc函式

int fputc(int ch, file *f)   

while((usart1->sr&0x40)==0);//迴圈傳送,直到傳送完畢  

usart1->dr = (u8) ch;     

return ch;

} #endif

4、 修改相關工程設定

Keil工程到IAR工程的移植

keil工程到iar工程的移植 stm32工程使用的啟動檔案有不同的版本,在移植stm32工程之前先檢查mdk工程的啟動檔案。啟動檔案為cortexm3 macro.s和stm32f10x vector.s,如下圖時 下面以建立iar工程example為例講述如何移植。首先建立資料夾命名為examp...

keil5到iar8的使用配置遷移

1 關於標頭檔案的包含。keil alt f7 c c iar alt f7 c c compiler preprocessor,高版本彙編需要包含的標頭檔案需要另外配置 alt f7 assembler preprocessor keil alt f7 utilities settings iar...

keil5到iar8的使用配置遷移

1 關於標頭檔案的包含。keil alt f7 c c iar alt f7 c c compiler preprocessor,高版本彙編需要包含的標頭檔案需要另外配置 alt f7 assembler preprocessor keil alt f7 utilities settings iar...