按照上一章建立的第一個工程模板,我們只需要在main函數里加入相關的點亮led燈的代碼,并使用keil的軟件仿真功能。
軟件仿真在一定程度上可以在設計的初期發現程序的錯誤,減少我們下載到開發板的麻煩。但是純軟件的仿真的正確,也不能保證程序就正確。有時候仿真正確,實物卻沒這個效果。有時軟件仿真結果是錯誤,你分析你的程序卻沒錯誤。
遇到多了,經驗也就出來,前幾天我仿真一個STM32的Systick ,仿真結果就不對,程序就是對的,我估計也許是軟件本身的問題。
我建議用STM32+JLINK 進行仿真,有個硬件平臺結果的正確性就有保證。
Main.c 函數代碼:
#include "stm32f10x.h"
void delay(void)
{
int i,j;
for(i=1000;i>0;i--)
for(j=1000;j>0;j--);
}
void GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB , &GPIO_InitStructure);
}
int main(void)
{
GPIO_Config();
SystemInit();
while(1)
{
GPIO_SetBits(GPIOB,GPIO_Pin_5 ); //點亮PB.5
delay();
GPIO_ResetBits(GPIOB,GPIO_Pin_5 );//熄滅PB.5
delay();
GPIO_SetBits(GPIOB,GPIO_Pin_6 );//點亮PB.6
delay();
GPIO_ResetBits(GPIOB,GPIO_Pin_6 );//熄滅PB.6
delay();
}
}
代碼分析:
GPIO_InitTypeDef GPIO_InitStructure;
定義一個結構變量GPIO_InitStructure ,結構體類型為GPIO_InitTypeDef ,相當于int A ;
GPIO_InitTypeDef =int GPIO_InitStructure=A一樣。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
開啟GPIOB的時鐘,要使用某個管腳都需要開啟該管腳的時鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6;
管腳號設置為第五腳和第六腳
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Speed_10MHz,
GPIO_Speed_2MHz,
GPIO_Speed_50MH
設置管腳電平翻轉的速率,比如不要求快速變化一般10M,做串口的時候設置較高波特率的話就使用50MHZ的。
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
設置輸出為推挽輸出。 它有8中工作模式,輸出只有兩種推挽和開漏輸出。其它可以參
考相關手冊
GPIO_Init(GPIOB , &GPIO_InitStructure);
這一句就是將前面四句的設置初始化到GPIOB中;
SystemInit(); 將系統時鐘設置為72M,不寫這句,默認為8M;
GPIO_SetBits(GPIOB,GPIO_Pin_5 ); //點亮PB.5
delay();// 延時
GPIO_ResetBits(GPIOB,GPIO_Pin_5 );//熄滅PB.5
delay();
GPIO_SetBits(GPIOB,GPIO_Pin_6 );//點亮PB.6
delay();
GPIO_ResetBits(GPIOB,GPIO_Pin_6 );//熄滅PB.6
delay();
編譯鏈接,然后開始軟件仿真
軟件仿真介紹:
1、編譯連接好后,點擊debug 進入調試界面

2、調試窗口如下

3、
圖片上加文字不好弄,大概就是復位、運行、停止、單步運行等我也不太熟悉,反正用到的時候試一試就知道了。

4、選擇菜單欄上的 peripherals 按鈕,選擇general purpose I/O 的GPIOB

5、點擊左上角的運行按鈕 或者按F5鍵 就可以看到GPIOB的5,6 在一閃一閃的

6、順便在看看波形仿真功能
點擊下圖的波形分析按鈕

7、、點擊setup 按鈕 會彈出一個窗口,在窗口的右上邊,有個new的按鈕,點擊后
分別輸入 PORTB.5 和PORTB.6

8、點擊運行,將窗口調到合適的位置,最終波形圖如下;

寫得有些地方可能有錯誤,明天就要回四川了,有些急。
我想把keil工程傳上來,沒有看見上傳文件的地方,以后把每個工程都上傳上去。
2014年1月12日
題外篇:
快半個月沒發表,我斷斷續續學到串口,滴答定時器那里了。我感覺這樣不好,以后我學習一課我就發表一篇學習筆記,不要老是等學了幾課后再發表前面的。
明天就回四川了,上個月六號離開四川去深圳,這個月13號又離開深圳回四川。深圳我不想多談的城市,細數了一下,到現在為止一共去了五趟深。今年最多,三入深圳,兩進手術臺,倒把人生的大多事看明白了看得淡了。好多事情我都不愿去管了,越來越漠不關心了。
估計再也不會來深圳,它的繁華亦不會再與我有交集。
PS: 理論夠硬,才能走得更遠。有問題,私信我。