STM32單片機在Keil5下仿真的問題解決及GPIO口初始化、使用


STM32單片機在Keil5下仿真的問題解決及GPIO口初始化、使用

最近看了視頻,里面有仿真,可以清楚看到GPIO口的數據變化,也想嘗試下,DUG時卻出現*** error 65: access violation at 0x40021000 : no 'read' permission,按照網上給的各種辦法,包括修改memory map,以及其他各種辦法,都無法解決,后來發現問題在下面這張圖所示的位置:

這個圖上紅色框中的兩個參數是我修改之后的,原來的值是軟件安裝之后的默認值:

Dialog DLL默認是DCM3.DLL
Parameter默認是-pCM3

應改為

Dialog DLL默認是DARMSTM.DLL
Parameter默認是-pSTM32F103RC

然后就可以愉快的仿真了。

仿真過程:

點擊Debug,然后點擊Peripheral菜單項,然后在General Purpose I/O這兒選擇你要看的管腳,我這里選擇GPIOA,完成后點擊setup添加PORTA.0  就可以看GPIOA_Pin0的信號了:

借鑒這里的經驗,在此感謝http://www.stmcu.org/module/forum/thread-599469-1-1.html

 

以下是一段GPIO口初始化及輸出的使用的代碼:

 1 #include<stm32f10x.h>
 2 
 3 int main(){  4     
 5     //定義一個GPIO初始化結構體,要在RCC使能之前定義,否則會報錯
 6  GPIO_InitTypeDef GPIO_InitStruct;  7     
 8     //初始化RCC並使能
 9  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); 10     
11     //設置要初始化的GPIO的管腳
12     GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1; 13     
14     //設置要初始化的GPIO的速度
15     GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; 16     
17     //設置要初始化的GPIO的模式
18     GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; 19     
20     //調用初始化函數,傳入參數為GPIO初始化結構體的地址
21     GPIO_Init(GPIOA, &GPIO_InitStruct); 22     
23     //在循環中給GPIO_Pin_1不斷置位復位,也就是給高低電平,可以用來點亮對應管腳的led
24     while(1){ 25         
26         //GPIO管腳置位函數,第一個參數為那個GPIO口,第二個為GPIO口的第幾個引腳
27  GPIO_SetBits(GPIOA, GPIO_Pin_0); 28         
29         //GPIO管腳復位函數,第一個參數為那個GPIO口,第二個為GPIO口的第幾個引腳
30  GPIO_ResetBits(GPIOA, GPIO_Pin_0); 31  } 32     
33     
34     
35     
36     
37     return 0; 38 }

 

 

以上是使用軟件仿真的設置,那么硬件仿真(jlink)應該如何設置呢?

需要把右邊的:

Dialog DLL默認是TARMSTM.DLL
Parameter默認是-pSTM32F103RC

保存之后點擊Utilities,並進行如下設置:

然后就可以使用jlink仿真了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM