999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

MDK軟件不能模擬仿真STM32的問題解決方法

2013-08-27 08:33:48劉勇軍楊選成
單片機與嵌入式系統應用 2013年10期
關鍵詞:調試程序

劉勇軍,楊選成

(中山市中等專業學校,中山528458)

引 言

MDK 軟件在模擬仿真時,不能很好地支持各種STM32系列芯片,目前對STM32F103系列芯片支持模擬仿真,但對于其他系列芯片不支持或只是部分支持。主要存在的問題是:PC和SP不能自動裝載,存儲器不能訪問,中斷服務程序不能執行或觸發,外設寄存器不能修改或觀察。要解決上述問題,必須通過相應的設置和相關的操作,才能完成模擬仿真。

1 模擬仿真的實現及PC和SP的自動裝載

在MDK 軟件中,只有部分STM32芯片支持模擬仿真(如STM32F103),大部分芯片都不支持模擬仿真。主要的問題是,當進入調試界面后,R15 (PC)的值為0x00000000,不能進行調試操作(如單步、全速等)。要能對STM32進行模擬仿真,必須使PC的值不能為0。通過分析STM32 芯片的存儲器結構可知,在存儲器地址0x00000000處保存的是堆棧指針SP的值,程序加載時自動把該值送給SP,在存儲器地址0x00000004處保存的是程序指針PC的值,程序加載時自動把該值送給PC,程序從該PC值取指令執行程序,而不是從地址0x00000000處執行程序。而STM32芯片的Flash程序存儲器地址是從0x08000000處開始的,當進入模擬仿真時,MDK 軟件不能把Flash的地址送給PC 和SP。可通過以下操作步驟完成PC和SP的自動裝載。

①打開MDK 自帶的工程文件,如C:\Keil\ARM\Boards\ST\STM3240G-EVAL\Blinky\Blinky.uvproj。

②單擊“編譯”工具欄上面的下拉菜單,選擇“STM32F407Flash”。

③單擊 ,打開“Options”對話框,切換到“Output”選項卡,勾選“Debug Information”和“Browse Information”,用以產生調試信息。再切換到“Debug”選項卡,單擊“Use Simulator”,選擇模擬仿真,確保勾選“Load Application at Startup”,其他為默認設置。

④單擊 ,編譯程序,并保證編譯成功。

⑤單擊 ,開始調試,進入調試界面后,觀察“Registers”寄存器選項卡中的R15(PC)的值,如果值為0,則說明不能進行模擬仿真,“單步”調試等無效,須進行步驟⑥的操作,否則可不進行步驟⑥的操作。

⑥停止調試,再次單擊 ,打開“Options”對話框,切換到“Target”選項卡,將IROM1 的值[0x08000000,0x100000]修改為[0x0,0x100000],以使Flash的起始地址從0x0開始。單擊 重新編譯程序,再次單擊 ,開始調試,PC的值將不再為0,即可進入模擬仿真,“單步”調試等有效。

2 存儲器的訪問

當進入模擬仿真界面后,按“全速”F5 或“單步”F10調試鍵后,在“command”窗口中將會出現類似如下的錯誤提示:“***error 65:access violation at 0x40023800:no′read′permission”,意思是在地址0x40023800 處訪問違例,沒有“讀”的權限。地址0x40023800是外設寄存器地址。要使外設寄存器地址具有相應的“讀”、“寫”、“執行”權限,可在命令窗口中輸入MAP命令(不區分大小寫)。命令格式為:

MAP 起始地址,結束地址READ WRITE EXEC其中,READ表示“讀”權限,WRITE 表示“寫”權限,EXEC表示“執行”權限,結束地址與起始地址的空間尺寸不超過128 MB,即不超過0x08000000字節。外設寄存器的存儲空間分布較廣,不可能在每次調試時都通過命令窗口輸入MAP指令,可通過如下的操作步驟進行。

①新建一個文本文件,打開該文件,執行文件菜單命令“另存為”,在打開的“另存為”對話框中,文件名輸入為initmap.ini,保存類型選擇為“所有文件”,并保存。在文件中輸入如下內容并保存:

根據需要,可在該文件中輸入包含所有外設寄存器的MAP命令,使所有外設寄存器都具有“讀”、“寫”權限。但注意映射空間不要超過0x08000000,否則調試時會提示錯誤:“***error 129:MapMem-map size truncated to 128MB”。

②單擊 ,打開“Options”對話框,切換到“Debug”,在“Initialization File”的右邊單擊 ,打開“選擇仿真初始化文件”對話框,選擇上一步保存的initmap.ini文件。單擊“Edit”按扭,可打開文件再次修改。

3 中斷服務程序的執行與觸發

當解決以上的兩個問題后,可以進行模擬仿真調試。但這時中斷服務程序不能執行,如系統定時中斷程序;或者不能觸發中斷,如不能自動觸發SPI中斷程序等。由于已經把Flash存儲器的起始地址調到了0x00000000 處,所以也需要把中斷向量偏移量地址設為0x00000000,即把SCB-﹥VTOR設為0。可通過如下方法解決。

①對于通過訪問SCB-﹥VTOR寄存器來修改中斷向量的,可通過“Edit”菜單命令中的“Find in Files”命令查找SCB-﹥VTOR,查找并修改宏定義FLASH_BASE 的值為0X00000000。

②如果不能通過以上的方法修改SCB-﹥VTOR,可以在進入仿真界面后,執行中斷程序前,選擇“Peripherals”→“Core Peripherals”→“Nested Vectored Interrupt Controller”命令,打開中斷向量對話框,修改VTO 的值為0x00000000。當然也可以通過如下的方法完成對外設寄存器SCB-﹥VTOR的修改,使它的值為0x00000000:當進入仿真后,在主函數main()前設置一個斷點,全速運行程序,程序在斷點處暫停執行,通過下節介紹的方法把外設寄存器SCB-﹥VTOR 添加到觀察窗口1,修改SCB-﹥VTOR外設寄存器的值,使它的值為0x00000000即可。

③對于SysTick定時器,可以自動觸發中斷,并執行中斷程序,但對于其他的中斷則不能自動觸發中斷。可按如下方法操作:在中斷程序中設一個斷點,并“全速”運行程序,通過選擇“Peripherals”→“Core Peripherals”→“Nested Vectored Interrupt Controller”命令,打開中斷向量對話框,單擊選擇相應的中斷,然后勾選Pending復選框,此時會自動執行相應的中斷服務程序,并在斷點處暫停執行程序。

4 外設寄存器的修改

在模擬仿真時,一般要對外設寄存器進行修改,有些外設寄存器可直接修改,有些外設寄存器不能直接修改,如只讀位不能直接修改。要實現對外設寄存器的修改,可通過如下的方法進行操作。

①對于要修改的寄存器,可通過鼠標選擇外設寄存器,如選擇RCC-﹥CR,然后再鼠標右鍵,彈出右鍵菜單,執行“Add‘RCC-﹥CR’to…”→“Watch 1”菜單命令,把RCC-﹥CR外設寄存器添加到觀察窗口1中,如下所示。

此時可在編輯框中修改該外設寄存器的值。當然也可在觀察窗口中,直接輸入外設寄存器的名稱“RCC-﹥CR”,但此種方法對某些芯片會失效。

②用以上方法也不能完成外設寄存器的修改時,可通過如下方法完成修改。停止仿真,單擊 ,打開“Options”對話框,切換到“Target”選項卡,確保特殊功能寄存器(sfr)文件已被添加。然后單擊的下拉箭頭,選擇并添加所要觀察的外設,如RCC等,可添加觀察多個外設。單擊添加的外設寄存器,可在下方顯示該外設寄存器的存儲器地址,如RCC-﹥CR外設寄存器的地址為0x40023800。最后再選擇“View”→“Memory Windows”→“Memory 1”打開存儲器觀察窗口,在地址欄中輸入地址“0x40023800”,按回車鍵確認輸入,在數據區雙擊數據可直接修改。STM32的存儲器采用小端模式,即低地址存放數據的低位,高地址存放數據的高位。在存儲器窗口中,可通過右鍵修改顯示方式。

結 語

目前最新的MDK 版本也未能解決在模擬仿真時出現的上述問題,通過本文介紹的方法則可以解決,這對于學習STM32,以及使用MDK 軟件都有一定的幫助。以上介紹的方法是一個全面的描述,不是所有的芯片都需要通過以上步驟來完成,有的只需要部分操作即可完成。

猜你喜歡
調試程序
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
基于航拍無人機的設計與調試
電子制作(2018年12期)2018-08-01 00:47:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
核電廠主給水系統調試
中國核電(2017年1期)2017-05-17 06:10:11
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
無線通信中頻線路窄帶臨界調試法及其應用
電子制作(2017年19期)2017-02-02 07:08:38
調壓柜的調試與試運行探討
工業電氣設備控制系統的安裝與調試
音頻處理器的調試
主站蜘蛛池模板: 亚洲综合精品第一页| 亚洲综合网在线观看| 国产精品2| 91蜜芽尤物福利在线观看| 日韩精品毛片| 在线观看精品自拍视频| 欧美 亚洲 日韩 国产| 五月激情综合网| 色香蕉网站| 免费a级毛片视频| a在线亚洲男人的天堂试看| 国产免费黄| 国产一级做美女做受视频| 久久久精品无码一二三区| 五月婷婷激情四射| 亚洲午夜国产片在线观看| 国产美女在线观看| 久久综合色播五月男人的天堂| 免费中文字幕在在线不卡 | 亚洲欧美一区二区三区麻豆| 精品久久综合1区2区3区激情| 国产视频 第一页| 久久性妇女精品免费| 最新日本中文字幕| 欧美第九页| 91成人在线免费视频| 欧美区一区| 久久精品亚洲热综合一区二区| 欧洲熟妇精品视频| 国产极品粉嫩小泬免费看| 亚洲色大成网站www国产| 午夜不卡视频| 国产国产人免费视频成18| 国产欧美亚洲精品第3页在线| 91麻豆国产精品91久久久| 亚洲国产成人麻豆精品| 日韩精品专区免费无码aⅴ| 中文字幕在线永久在线视频2020| 无码精品一区二区久久久| 丝袜美女被出水视频一区| 在线一级毛片| 亚洲大尺码专区影院| 91娇喘视频| 中国一级特黄视频| 亚洲欧美成aⅴ人在线观看| 国产精鲁鲁网在线视频| 国产精品第| 91亚洲影院| 亚洲Va中文字幕久久一区| 午夜国产精品视频黄| 香蕉久久永久视频| 国产在线97| 久久久四虎成人永久免费网站| 国产手机在线小视频免费观看| 亚洲一区国色天香| 国产高清在线精品一区二区三区| 国产成人无码AV在线播放动漫 | 91无码国产视频| 欧美午夜理伦三级在线观看| 手机在线免费不卡一区二| 国产熟女一级毛片| 真人高潮娇喘嗯啊在线观看| 亚洲大尺码专区影院| 国产精品第一区| 5388国产亚洲欧美在线观看| 国语少妇高潮| 欧美在线观看不卡| yy6080理论大片一级久久| 日韩免费毛片视频| 国产一区二区三区日韩精品| 一区二区偷拍美女撒尿视频| 国产成人AV综合久久| 好吊色妇女免费视频免费| 亚洲天堂成人在线观看| 亚洲无卡视频| 亚洲综合精品香蕉久久网| 狠狠做深爱婷婷综合一区| 亚洲香蕉久久| 欧美精品一区在线看| 尤物亚洲最大AV无码网站| 国产综合在线观看视频| 亚洲国产成人自拍|