日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

IAR EW6.30版本下建立STM32工程(芯片型号STM32F105VC)

發(fā)布時間:2025/6/15 c/c++ 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IAR EW6.30版本下建立STM32工程(芯片型号STM32F105VC) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考博客及文檔有:

1,http://www.cnblogs.com/ele-eye/archive/2011/11/28/2266229.html

? ? ? ? 2,http://www.cnblogs.com/king-77024128/articles/2512997.html(CMSIS介紹)

? ? ? ? 3, ??http://wenku.baidu.com/link?url=2blE__GxI1lmJglihBi5xJQPolza-NMxcZqGThxwysiY80ZOe6hLl5k6mowbTN2j30WsPftFZsBe1pRt8WlCDIT7Ce5EIReo4uGCEyegh7S(IAR 新建 STM32工程)

? ? ? ? 4,http://blog.sina.com.cn/s/blog_4c8287230100f0jw.html(IAR 新建 STM32工程)

? ? ? ? 5,http://blog.sina.com.cn/s/blog_4c8287230100eznh.html(IAR使用說明)

? ? ? ? 6,http://blog.sina.com.cn/s/blog_4c8287230100f2ah.html(IAR使用說明 第一個IAR項目)

? ? ? ? 7,http://blog.chinaunix.net/uid-26435987-id-3073074.html(啟動代碼和bootloader的關系)

? ? ? ?建立工程之前首先應知道IAR EW6.30版本較IAR EW6.20之前的版本有一個較大的改變。即IAR EW6.30已經植入了Cortex-m3的內核相關定義,所以在建立工程時就不需要添加ST庫中core_cm3.c 和 core_cm3.h 這兩個文件了。不過需在配置IAR EW選項是需勾選"Options - General Options - Library Configuration"界面下的Use CMSIS。如圖:

? ? ? ? ? ?建立工程前先介紹下相關文件夾及源文件:

? ? ? ? ?CMSIS:ARM定制的一個Cortex_M系列微控制器軟件接口標準(Cortex MicroController Software Interface Standard的縮寫)。主要是為了提供通用api接口來訪問內核和一些片上外設。提高代碼的可移植性。CMSIS有三個層:核內外設訪問層Core Peripheral Access Layer(CPAL),中間件(是一種獨立的系統(tǒng)軟件或服務程序如FatFS)訪問層Middleware Access Layer(MWAL),設備訪問層(Device Peripheral Access Layer)。CPAL用于訪問內核的寄存器和組件,如NVIC,調試系統(tǒng)等,該層是由ARM實現的。MWAL用于對中間件的訪問,現在該層還未實現。DPAL用于定義一些硬件寄存器的地址和一些外設訪問函數,由芯片制造商實現。CPAL的實現就是core_cm3.c,core_cm3.h文件。DPAL層實現的就是system_stm32f10x.c的文件(似乎還要加上外設的函數庫)。

? ? ? ?stm32f10x_flash.icf:編譯器鏈接庫文件,修改兩個參數即可改變代碼存放的地址空間。

? ? ? ?startup_stm32f10x_cl.s:stm32f105vc在IAR編譯器環(huán)境下專業(yè)的啟動文件。啟動文件用英文單詞來描述為“Bootloader”。無論性能高下,結構簡繁,價格貴賤,每一種微控制器(處理器)都必須有啟動文件,啟動文件的作用便是負責執(zhí)行微控制器從復位開始執(zhí)行main函數中間這段時間(稱為啟動過程)所必須進行的工作。開發(fā)環(huán)境往往自動完整地提供了這個啟動文件,不需要開發(fā)人員再行干預啟動過程,只需要從main函數開始進行應用程序的設計即可。由開發(fā)環(huán)境及啟動文件可知:STM32的啟動過程。首先對棧和堆的大小進行定義,并在代碼區(qū)的起始處建立中斷向量表,其第一個表項是棧頂地址,第二個表項是復位中斷服務入口地址。然后在復位中斷服務程序中跳轉??C/C++標準實時庫的__main函數,完成用戶堆棧等的初始化后,跳轉.c文件中的main函數開始執(zhí)行C程序。假設STM32被設置為從內部FLASH啟動(這也是最常見的一種情況),中斷向量表起始地位為0x8000000,則棧頂地址存放于0x8000000處,而復位中斷服務入口地址存放于0x8000004處。當STM32遇到復位信號后,則從0x80000004處取出復位中斷服務入口地址,繼而執(zhí)行復位中斷服務程序,然后跳轉__main函數,最后進入mian函數,來到C的世界。

? ? ? ? ?bootloader:不是一段代碼,它是一個具有引導裝載功能的完整程序,如可以引導裝載linux的vivi或uboot,以及通常PC機上的BIOS程序等。Bootloader也包含了相應的啟動代碼,也就是說啟動代碼是Bootloader的一部分,是所有相應應用程序的一部分。

? ? ??system_stm32f10x.c/.h:設置系統(tǒng)以及總線時鐘,這個里面有個非常重要的SystemInit()函數,這個函數在我們系統(tǒng)啟動的時候都會調用,用來設置系統(tǒng)的整個時鐘系統(tǒng)。不知從哪個版本開始該函數被加入了啟動文件中,可在啟動文件查找。所以我們不需使用該函數了。系統(tǒng)主頻時鐘(主頻率)的改變依實際芯片主頻修改,如圖:

? ? ??

? ? ??stm32f10x.h:這個文件相當重要,只要你做STM32開發(fā),你幾乎時刻都要查看這個文件的相關定義。這個文件打開可以看到,里面非常多的結構體以及宏定義。這個文件里面主要是系統(tǒng)寄存器定義聲明以及包裝內存操作。外部時鐘頻率在該文件里改變,如圖:

? ? ? ?你外部晶振使用多少HZ,就改變?yōu)槎嗌佟?/span>

? ? ?misc.c:定義了中斷向量表初始位置。對比ARM7/ARM9內核(復位后起始地址固定0x000000,中斷向量表位置不固定),Cortex_M3則是固定了中斷向量表的位置(若FLASH啟動,復位后中斷向量位置固定在0x08000000.),而程序起始地址(程序被安置的地址)是可變化的。編譯器鏈接器分配了中斷向量表實際放置的地址。所以cm3中斷向量表初始位置不可變,程序起始地址可改變(對CPU來說)。如圖: misc.c

? ? ??

? ? ? 如圖啟動文件內修改當前程序的開始地址(內部flash啟動時即ROM_start的地址):

? ? ??

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? ??下面開始建立工程:

? ? ? ???1,打開IAR EW。

? ? ? ? ? ? 2,點選“File --- New --- ?Workspace”創(chuàng)建一個工作區(qū)。創(chuàng)建工作區(qū)先新建一個文件夾,我在E盤新建一個名為IAR_Pro的文件夾,作為工作空間。然后在該文件夾下再新建一個名為Project1的工程文件夾,一會要在此目錄下新建工程。

? ?

? ? ? ? ? ?3,點選“Project --- Create New Project”。彈窗后Tool Chain選擇ARM,Project templates選擇Empty project。點擊OK,后彈出另存為窗口。選擇文件路徑為工作空間路徑“E:\IAR_Pro\Project1”。填寫文件名為NEW_Project,即工程名。

? ? ? ? ? ?4,在“E:\IAR_Pro”文件夾下新建USER,CMSIS,STM32F10x_FWLIB這三個文件夾。USER存放用戶實現的代碼如main.c和stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h,system_stm32f10x.c。CMSIS存放cm3的內核文件及啟動文件和stm32f10x.h和system_stm32f10x.h,這里只存放啟動文件startup_stm32f10x_cl.s。STM32F10x_FWLIB存放ST官方提供的標準庫文件。?

? ? ? ? ? ?5,將IAR 鏈接腳本文件stm32f10x_flash.icf添加到Project1目錄下。

? ? ? ? ? ?6,將上述文件都添加到IAR 工程里。如圖:

? ? ? ? ? ?

? ? ? ? ? ?7,配置編譯器選項。右擊工程名選擇Options。

? ? ? ? ? (1)配置General Options。如圖:

? ? ? ? ? ??

? ? ? ? ? ?

? ? ? ? ? ?(2)配置C/C++ Compiler。點擊Optimization(最優(yōu)化)選擇 High,如圖:

? ? ? ? ? ? ?

? ? ? ? ? ? ?點擊Option--C/C++ Compiler--Preprocessor下添加頭文件路徑及相應宏定義符號例如USE_STDPERIPH_DRIVER和STM32F10X_CL(互聯(lián)型)。如圖:

? ? ? ? ? ? ??

? ? ? ? ? ? ?(3)配置Output Converter,如圖:

? ? ? ? ? ? ? ?

? ? ? ? ? ? ? (4)配置Linker。如圖:

? ? ? ? ? ? ? ??

? ? ? ? ? ? ? 路徑可改為$PROJ_DIR$\stm32f10x_flash.icf。增加可移植性。

? ? ? ? ? ? ?(5)配置Debugger。如圖:

? ? ? ? ? ? ??

? ? ? ? ? ? ??

? ? ? ? ? ? ? 以上配置開發(fā)環(huán)境OK。編譯OK,使用的是3.5庫ADC1_DMA文件夾里的main.c,編譯OK,如圖:

? ? ? ? ? ? ??

? ? ? ??? ?Cortex-M3內核規(guī)定,起始地址必須存放堆頂指針,而第二個地址則必須存放復位中斷入口向量地址,這樣在Cortex-M3內核復位后,會自動從起始地址的下一個32位空間取出復位中斷入口向量,跳轉執(zhí)行復位中斷服務程序。

? ? ? ? ? ??查看IAR編譯器編譯后的匯編代碼===================================
編輯界面右擊工程名,點擊Options選項,選擇c/c++ compiler選項中的list選項,勾選output assembler files,編譯后生產離線匯編代碼文件。
調試界面下,點擊view/disassembly菜單項,則顯示在線匯編代碼窗口。
在線調試,需將Debugger選項下Setup下的Driver改為simulator模擬器,run to到你想到的地方。然后點擊Download and Debug


產生map文件================================================、
Options--linker--list --- Generate linker map file




仿真器作用=================================================
仿真器是在程序運行時,用來觀察寄存器里的數值的。比如說你定義了一個變量,程序運行過程中這個變量會變化。當你需要確定當前值時候,可以用仿真器看到。
所以,如果做大工程,仿真器是必不可少的。如果是很小的代碼,可以不用仿真器,用串口直接下載程序就OK了。?


硬件仿真與軟件仿真區(qū)別=======================================
硬件仿真依賴實際的硬件實物,程序是運行在實際的cpu中的,讀取到的任何數值、狀態(tài)都是實際的現有狀態(tài),一旦能通那基本就沒問題了。


軟件仿真是在pc上用軟件模擬了硬件cpu的各種功能、寄存器等,不依賴實際的硬件,其實可以看成是多個函數,你寫的程序是多個輸入,有一個輸入,對應的函數就輸出相應的結果。


軟件仿真即使成功,實際下載到硬件上也有可能會出問題,比如電源、晶振這些都是沒法仿真的。?


總結

以上是生活随笔為你收集整理的IAR EW6.30版本下建立STM32工程(芯片型号STM32F105VC)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 涩涩精品 | 欧美一级片免费在线观看 | 国产91精品高潮白浆喷水 | 中文人妻熟女乱又乱精品 | 中文字幕一区二区在线老色批影视 | 内射无码专区久久亚洲 | 草莓巧克力香氛动漫的观看方法 | 公侵犯一区二区三区四区中文字幕 | ass日本粉嫩pics珍品 | 国产精品久久亚洲 | 精品一区二区久久久久久久网站 | av无线看 | 免费成人深夜夜国外 | 天天拍天天干 | 男人操女人免费网站 | 国产4区| 精品在线观看一区 | 欧美在线一级片 | 国产高潮流白浆喷水视频 | 欧美视频一区在线 | 日本不卡免费在线 | 校园伸入裙底揉捏1v1h | 亚洲精品国产日韩 | 欧美亚洲综合视频 | 久久久久久久黄色片 | 亚洲成人精品久久久 | 成人毛片18女人毛片免费 | 99精品人妻少妇一区二区 | av在线播放器 | 精品黄色片 | a级在线观看视频 | xxxxx在线观看 | 国产依人| 国产精品美女www爽爽爽 | 久久奇米 | 在线观看sm | a在线播放 | 免费在线成人av | 亚洲视频在线观看免费视频 | av猫咪| 麻豆av影院 | 67194国产| 亚洲97 | 一级做a免费视频 | 久久国产激情视频 | 日本网站在线免费观看 | 天天射网 | 噜噜色成人 | 久久伊人中文字幕 | 欧美日韩在线免费 | 在线观看av资源 | 毛片视频免费观看 | 欧美性猛交乱大交 | 91香蕉国产在线观看 | 成a人v | 日本高清视频免费看 | 中文字幕视频一区二区 | 自拍偷拍欧美视频 | 国产亚洲精品久久 | 欧美日韩高清一区二区 国产亚洲免费看 | 97国产高清| 拔插拔插海外华人永久免费 | 欧美黄色成人 | 国产高清亚洲 | 伊人久久综合视频 | 亚洲综合图色 | 亚洲乱码一区二区三区在线观看 | 久久入 | 成人亚洲免费 | 国产激情网站 | 欧美日本韩国一区二区 | h视频网站在线观看 | 国产91九色| 91精品视频一区 | 99热这里只有精品66 | 日韩欧美国产亚洲 | 国产精品96久久久久久 | 蜜臀久久精品久久久用户群体 | 北条麻妃久久精品 | 久草免费在线播放 | 国产福利免费在线观看 | 国产精品久久久久av | 好爽…又高潮了毛片免费看 | 91精品人妻一区二区三区果冻 | 四虎永久免费影院 | 久草视频资源 | 91亚洲精品久久久蜜桃 | 婷婷激情小说网 | 国产福利第一页 | 日韩爱爱爱 | 黄色一级大片在线免费看产 | 看黄免费网站 | 日韩欧美一级视频 | 两性av| 蜜臀av性久久久久蜜臀aⅴ流畅 | 最新超碰 | 成人一级黄色片 | 精品一区二区视频在线观看 | 婷婷国产在线 |