<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Keil MDK轉(zhuǎn)換詳解“>STM32 IAR工程->Keil MDK轉(zhuǎn)換詳解

          Keil MDK轉(zhuǎn)換詳解“>STM32 IAR工程->Keil MDK轉(zhuǎn)換詳解

          作者: 時間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
          我在STM32的學(xué)習(xí)中發(fā)現(xiàn),大部分的STM32示例程序都是基于IAR開發(fā)環(huán)境的,但我認(rèn)為使用Keil MDK開發(fā)環(huán)境更加方便,可以利用RVMDK強大的外設(shè)仿真功能加速STM32的開發(fā)。我在以前的Blog文章里介紹過如何在RVMDK中建立STM32 工程,以及如何使用RVMDK的軟件仿真功能,下面我將詳細(xì)說明怎樣將已有的IAR工程移植到RVMDK。

          不管是IAR還是RVMDK,編程時使用的都是STM32的固件函數(shù)庫,唯一不同的是啟動文件。RVMDK在建立STM32工程時會自動創(chuàng)建啟動文件 STM32F10x.s,而IAR使用的啟動文件是cortexm3_macro.s。此外,兩者對中斷向量表的管理也不一樣。
          在移植STM32工程時首先要檢查IAR工程中是否使用了中斷。方法是要看工程中stm32f10x_it.c文件內(nèi)的各中斷函數(shù)是否為空函數(shù),中斷函數(shù)為空說明沒有使用中斷;否則若中斷函數(shù)有修改并且在main函數(shù)中對NVIC進(jìn)行了設(shè)置,則說明使用了中斷。
          下面分沒有使用中斷和使用了中斷這兩種情況分別介紹移植方法。
          無中斷:
          沒使用中斷時的移植較為簡單,此時還可以使用RVMDK自動創(chuàng)建的啟動文件STM32F10x.s,只要把IAR工程project文件夾中的 stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h和main.c等文件復(fù)制到建立好的RVMDK工程文件夾下,然后為RVMDK工程添加使用到的庫函數(shù)文件即可。
          有中斷:
          如果IAR工程中使用了NVIC時,在RVMDK下就不能再使用自動生成的STM32F10x.s啟動文件了,但可以用IAR工程中的啟動文件 cortexm3_macro.s和stm32f10x_vector.s來替換。下面以萬利EK-STM32F開發(fā)板提供的ADCDemo為例,介紹如何將IAR工程移植到RVMDK。由于在ADCDemo中使用到了TIM2_IRQHandler,需要在RVMDK中作以下修改:
          第一步、在RVMDK中建立工程,命名為ADC_MDK;然后將啟動文件cortexm3_macro.s和stm32f10x_vector.s復(fù)制到建立好的ADC_MDK工程文件夾下,并在ADC_MDK工程中將RVMDK自動建立的啟動文件STM32F10x.s刪除,用以上兩個文件替換。
          第二步、將ADCDemo IAR工程project文件夾中的lcd.c、lcd.h、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h和main.c文件復(fù)制到ADC_MDK工程文件夾內(nèi)。

          第三步、為ADC_MDK工程添加使用到的庫函數(shù)文件,然后進(jìn)行編譯。
          最后的工程目錄:

          只需以上三步,不用改動任何代碼就能搞定IAR工程的移植!只要掌握了將IAR工程移植到Keil MDK中的方法,就可以利用現(xiàn)有的大量IAR STM32示例來加快在RVMDK中的開發(fā)。

          本文引用地址:http://www.ex-cimer.com/article/201611/318950.htm


          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();