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...