提示:本文為課程作業,存在很多不足。
1. 安裝mdk5軟體和stm32包,熟悉mdk開發環境,完成一個stm32的簡單程式的編譯。安裝過程可參考 網上或者「STM32底座實驗指導書」第1章。範例程式可以參考網上程式碼,或者「STM32底座實驗指導書」第 3章的「LED閃爍」。(注意,沒有硬體之前,只能做程式的編譯和模擬測試,無法下載到硬體上執行)
2. 安裝並熟悉Proteus 電路模擬軟體,完成一個51程式設計和模擬,可參考:http://m.elecfans.com/article/581557.html
在官網或者其他來源下載mdk5.0安裝包
Ps:官網下載較慢,建議使用其他來源進行下載
下載好安裝包後按照安裝步驟進行安裝即可
針對我在安裝時出現的問題以及解決方法
我在使用序號產生器時出現了以下情況
這裡是因為我沒有使用管理員許可權登入
我們這裡退出去,以管理員身份執行程式再進行註冊
下圖為註冊成功後介面顯示
由於這個只能用到2020年,所以可能會過期,建議使用2032版本的 序號產生器
之後我們再從官網或者其他來源下載安裝stm32
Ps:下載好後直接雙擊檔案進行安裝即可
如下範例:
點選專案-->選擇新uVsion專案
選擇晶片
點選cancel
專案建立成功
雙擊Source Group 1
找到startup_stm32f10x_hd.s檔案點選新增 (注意檔案型別,避免在目錄下找不到該檔案)
2. 建立原始檔main.c及程式碼輸入
右鍵單擊Source Group 1(如圖選擇Add New......)
建立main.c原始檔
輸入程式碼
程式碼如下:
#include<stdio.h>
void SystemInit(void)
{
printf("Hello World\n");
}
int main(void)
{
SystemInit();
return 0;
}
點選如圖所示按鍵進行編譯
編譯成功(存在警告)
警告解決辦法(在第十行後面加一個回車按鍵)
由於之前的課程中已經安裝protues軟體以及keil c51,所以這裡不展示安裝過程
設計的51程式為流水燈程式
新建專案 -->search處直接搜尋AT89C51
同上新增.c檔案後編寫程式
程式碼如下:
#include "reg51.h" //參照標頭檔案reg51.h
#include <intrins.h> //參照intrins.h函數,用於_nop_()指令
void delay_ms(int a) //建立delay_ms,設定延遲時間 a
{
int i,j; //定義變數i,j
for(i=0;i<a;i++)
{
for(j=0;j<1000;j++) _nop_(); //_nop_等同於NOP指令,完成一個機器週期,清空儲存的內容
}
}
void main(void)
{
while(1)
{
P0=0xfe; //P0口8個引腳被賦值成11111110,此時P0.0為低電平
delay_ms(100); //週期內迴圈,完成迴圈後_nop_清空內容
P0=0xfd; //P0口8個引腳被賦值成11111101,此時P0.1為低電平
delay_ms(100);
P0=0xfb; //P0口8個引腳被賦值成11111011,此時P0.2為低電平
delay_ms(100);
P0=0xf7; //P0口8個引腳被賦值成11110111,此時P0.3為低電平
delay_ms(100);
P0=0xef; //P0口8個引腳被賦值成11101111,此時P0.4為低電平
delay_ms(100);
P0=0xdf; //P0口8個引腳被賦值成11011111,此時P0.5為低電平
delay_ms(100);
P0=0xbf; //P0口8個引腳被賦值成10111111,此時P0.6為低電平
delay_ms(100);
P0=0x7f; //P0口8個引腳被賦值成01111111,此時P0.7為低電平
delay_ms(100);
}
}
生成.hex檔案
點選如圖目標選項 --> 點選Output -->勾選Create HEX File -->然後再進行編譯 -->Hex檔案生成成功
原理圖如下
新增Hex檔案
雙擊AT89C51 --> 點選Program File處資料夾 --> 找到之前生成的.hex檔案 --> 新增成功
(部分模擬截圖)
這次的作業內容比上次作業較複雜,有之前學習過的51程式的設計及模擬,也有沒學過的在mdk5開發環境下對stm32簡單程式的編譯。總的來說,還是有很多的收穫。