目錄
一、準(zhǔn)備工作
二、建立工程模板
三、配置keil5
四、程序
五、程序下載(燒錄)
?六、總結(jié)
一、準(zhǔn)備工作
① keil5,自行下載安裝;
② 庫(kù)函數(shù)包,這里我上傳了一個(gè)F1xx的庫(kù)函數(shù)包,可以在建立工程模板的時(shí)候用到;1,STM32F1xx固件庫(kù).rar - 藍(lán)奏云
③ STM32F103C8T6最小系統(tǒng)班,淘寶十幾塊;
④ ST-Link V2下載器,一般都會(huì)和MCU綁定著賣;
⑥ 杜邦線若干,一般買上面的東西會(huì)送幾根夠用;
二、建立工程模板
??① 先建立一個(gè)文件夾,這里我命名為L(zhǎng)ED_3,在LED_3文件夾下建立如下圖所示文件夾:
??② 從下載的庫(kù)函數(shù)包中將文件復(fù)制到相對(duì)的文件夾下:
????????Lib_CMSIS 文件夾下包含下列文件:該文件下放置的是一些核心程序和啟動(dòng)程序。
?文件路徑分別為:
????????路徑:
1. 1,STM32F1xx固件庫(kù)\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport
2.1,STM32F1xx固件庫(kù)\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
3.1,STM32F1xx固件庫(kù)\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
????????Lib_MyDriver文件夾下包含下列文件:該文件夾下放置的是一些自定義的外設(shè)文件,包含兩個(gè)文件夾,一個(gè)放置.c后綴的文件,用于初始化一些功能/函數(shù)/引腳;一個(gè)放置.h后綴的文件,用作頭文件申明一些功能/函數(shù)/引腳。這里事先放置了兩個(gè)延時(shí)文件,這是系統(tǒng)內(nèi)部的,放在這里后面方便修改和使用,直接調(diào)用即可。
???????如果找不到的話就直接下載從這里獲取后放入:
延時(shí)和中斷.rar - 藍(lán)奏云
????????my_inc文件夾下放置.h后綴文件,my_src文件夾下放置.c后綴文件。然后我們?cè)俳⒁粋€(gè)led.c空文件和led.h空文件放置在對(duì)應(yīng)的文件夾,這兩個(gè)文件就是我們?cè)诔绦蛑幸暈椴僮鞯耐庠O(shè)了。
Lib_PeriphDriver文件夾下包含下列文件:該文件夾下放置的是一些系統(tǒng)內(nèi)部的文件,如定時(shí)器等等,我們從庫(kù)函數(shù)包中直接復(fù)制對(duì)應(yīng)的文件夾過來即可。
????????路徑:1,STM32F1xx固件庫(kù)\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver
User文件夾包含下列文件:其中main.c文件就是我們的主程序文件。
????????路徑:?1,STM32F1xx固件庫(kù)\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template
????????到這里,一個(gè)初始的工程模板就建立完成了,在很多情況下,工程模板是通用的,只略微修改即可開始另一個(gè)項(xiàng)目。
三、配置keil5
????????打開keil5軟件,點(diǎn)擊Project選項(xiàng)卡,點(diǎn)擊new μVision Project..,新建一個(gè)工程;
?????????會(huì)彈出的對(duì)話框,在剛才建立的工程模板的User文件夾下建立一個(gè)命名為L(zhǎng)ED的工程文件;
????????會(huì)彈出一個(gè)芯片選型,我們點(diǎn)擊+擴(kuò)展選項(xiàng),找到STM32F103C8,點(diǎn)擊OK-OK;
????????在打開的窗口界面中,左邊,右鍵點(diǎn)擊Target,選擇Manage Project Item...;在彈出的對(duì)畫框中做如圖所示修改:實(shí)際上就是將剛剛我們復(fù)制到對(duì)應(yīng)文件夾的文件,將其中的.c后綴的頭文件重新添加一次,這里要注意的是在Lib_CMSIS組添加文件時(shí),在對(duì)話框中要選擇所有文件類型,不然是無(wú)法看到.s后綴文件的。
?
?
?
????????此時(shí)窗口右邊就可以看到新建工程的文件列表了:
?
????????接下來我們點(diǎn)擊魔法棒,對(duì)keil做最后的配置,主要是涉及到一些編譯的頭文件路徑和生成HEX文件的問題。
???????在output選項(xiàng)卡下勾選 create HEX_File ,這個(gè)就是編譯后生成的文件,可以下載到驅(qū)動(dòng)板上加載。
????????????????接著在C/C++選項(xiàng)卡下進(jìn)行如下設(shè)置,點(diǎn)擊箭頭處可彈出對(duì)話框,將對(duì)應(yīng)文件路徑添加進(jìn)去即可:最小系統(tǒng)板,可使用? STM32F10X_MD,USE_STDPERIPH_DRIVER
?
????????到這里,keil5軟件的基本配置就完成了,接下來可以開始編寫程序了。
四、程序
????????led.c文件中的程序如下圖所示:
主程序:
#include "led.h"
#include "delay.h"
#include "sys.h"
//主函數(shù)
int main (void)
{
delay_init(); //初始化延時(shí)函數(shù)
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中斷優(yōu)先級(jí)
LED_Init(); //LED初始化
while(1) //主循環(huán)函數(shù)
{
LED = 1; //LED燈亮
delay_ms(500); //延時(shí)保持500毫秒
LED = 0; //LED燈滅
delay_ms(500); //延時(shí)保持500毫秒
}
}
?led.c:
#include "led.h" //引入頭文件
void LED_Init(void) //初始化LED引腳
{
GPIO_InitTypeDef GPIO_InitStructure; //初始化結(jié)構(gòu)體
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); //使能時(shí)鐘,必須要先使能IO的時(shí)鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //初始化第13引腳
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度為50MHz
GPIO_Init(GPIOC,&GPIO_InitStructure);
GPIO_SetBits(GPIOC,GPIO_Pin_13); //初始化引腳為高電平輸出,相當(dāng)于LED = 1;
}
?led.h:
#ifndef _LED_H_
#define _LED_H_
#include "sys.h"
#define LED PCout(13) //定義輸出引腳為13
void LED_Init(void); //初始化LED引腳
#endif
????????然后我們就可以點(diǎn)擊工具欄上的編譯按鈕了,看程序是否有報(bào)錯(cuò)!
????????出現(xiàn)下面的結(jié)果,就表明你的程序在邏輯上是沒有錯(cuò)誤的,后面就需要下載到開發(fā)板上實(shí)際觀察結(jié)果了。
????????這里提示幾點(diǎn):①主程序中原本的文件是可以刪除的;②剛開始寫代碼,多多少少會(huì)出現(xiàn)一些錯(cuò)誤,比如大小寫區(qū)分,或者標(biāo)點(diǎn)符號(hào)缺失或者多寫等等,編譯后根據(jù)下方編譯輸出窗口查看報(bào)錯(cuò)的條目,雙擊條目一般都會(huì)跳轉(zhuǎn)到你的代碼錯(cuò)誤地方,如果實(shí)在找不到可以將報(bào)錯(cuò)信息復(fù)制后上百度查找;③如果多看幾個(gè)案例,你會(huì)發(fā)現(xiàn)對(duì)于有些地方的代碼是通用的,比如.c文件中的初始化引腳函數(shù),基本上都是這個(gè)結(jié)構(gòu),歸根結(jié)底實(shí)際上就是對(duì)各個(gè)引腳的操作。
????????!?。〉度胧接刑嗵嘁獙W(xué)的了,這點(diǎn)點(diǎn)簡(jiǎn)直一根毛毛都算不上。對(duì)于一些理論上的東西這里沒辦法講解,我的理解也有限,這里上傳一個(gè)開發(fā)手冊(cè)文檔,里面有LED燈點(diǎn)亮的具體描述,可以自行下載查看。如果對(duì)其他經(jīng)典案例有需求,我后續(xù)再上傳相關(guān)的文件,實(shí)際上這些文件網(wǎng)絡(luò)上已經(jīng)有很多了。
STM32不完全手冊(cè)_庫(kù)函數(shù)版本_V3.2.pdf - 藍(lán)奏云
五、程序下載(燒錄)
????????這里我采用的是ST-Link v2 下載器,將MCU和下載器根據(jù)引腳對(duì)應(yīng)連接起來即可,這里注意的是我們使用的是ST-Link 下載器的下面一排引腳,除了5v供電不接,分別對(duì)應(yīng)接上3.3v、GND、SWDIO、SWCLK四根引腳,與MCU上的對(duì)應(yīng)引腳接上即可,如下圖所示:
?
?
????????線接好后,我們將下載器連接上PC,查看設(shè)備管理器中的通用串行總線設(shè)備中是否有ST-Link驅(qū)動(dòng)出現(xiàn),如果沒有的話,需要下載一個(gè)STM32 ST-Link的驅(qū)動(dòng)PC和Keil才會(huì)識(shí)別的到下載器。這里附一個(gè)ST-Link 驅(qū)動(dòng)的下載官網(wǎng),去里面下載一個(gè)最新的驅(qū)動(dòng)即可,可能會(huì)要求注冊(cè),但很簡(jiǎn)單,填寫一個(gè)郵箱,在郵箱里面驗(yàn)證一下,彈出來的網(wǎng)站加載完成后會(huì)自動(dòng)彈出下載框;下載完成后,解壓縮,在里面找到對(duì)應(yīng)x86或x64的.exe文件,安裝即可,安裝全過程默認(rèn)下一步。STSW-LINK009 - 為Windows 7、Windows 8、Windows 10簽署的ST-LINK、ST-LINK/V2、ST-LINK/V2-1 USB驅(qū)動(dòng) - 意法半導(dǎo)體STMicroelectronics
????????驅(qū)動(dòng)安裝完成后,此時(shí)我們?cè)赑C的設(shè)備管理器中已經(jīng)可以發(fā)現(xiàn)ST-Link的驅(qū)動(dòng)了,接著,我們打開keil5,找到剛才建立的工程,點(diǎn)擊魔術(shù)棒,在DeBug選項(xiàng)卡中做如下圖所示操作:
?
?
????????設(shè)置好后,我們點(diǎn)擊確定回到主窗口,點(diǎn)擊窗口工具欄的下載(燒錄)按鈕,即可開始燒錄程序。當(dāng)出現(xiàn)verify OK后,標(biāo)明程序燒錄成功。
????????效果如下圖所示(由于不能動(dòng)態(tài)展示,這里只顯示了藍(lán)燈亮起):紅色燈為MCU的通電燈,只通電正常就會(huì)點(diǎn)亮,而我們操作的引腳是PC13?,控制的是藍(lán)燈,所以藍(lán)燈會(huì)閃爍,延時(shí)后熄滅,再延時(shí)后亮起,反復(fù)執(zhí)行,如果想延時(shí)效果明顯一些,可以在將主文件的中的delay_ms(500)數(shù)值調(diào)大一些,比如1000,就會(huì)很明顯,但是若想要更精準(zhǔn)的延時(shí)效果和更長(zhǎng)的延時(shí)就需要用到到定時(shí)器中斷了,比如通用定時(shí)器TIM3。所以從這個(gè)小項(xiàng)目也可以往外擴(kuò)展成流水燈,按鍵控制等等,因?yàn)槎贾皇菍?duì)引腳的高低電平的簡(jiǎn)單操作,如控制流水燈實(shí)際上就是控制多個(gè)led燈不同時(shí)間點(diǎn)亮而已。
?六、總結(jié)
????????可能前面建立工程模板和寫程序等不會(huì)有什么問題,但是后面的驅(qū)動(dòng)部分以及程序燒錄部分出問題的幾率很大,涉及到很多因素,包括軟件版本,WINDOWS系統(tǒng)限制,硬件等等,對(duì)應(yīng)的問題報(bào)錯(cuò)在百度上方案很多,但不一定起作用,所以如果報(bào)錯(cuò)了,盡可能多嘗試一下吧!祝各位順利!文章來源:http://www.zghlxwxcb.cn/news/detail-428306.html
????????另,本文純屬初學(xué)者剛接觸時(shí)撰寫的,其中存在的錯(cuò)誤望各位大佬指出,有不妥之處還望海涵!文章來源地址http://www.zghlxwxcb.cn/news/detail-428306.html
到了這里,關(guān)于[初學(xué)單片機(jī)]stm32f103C8T6最小系統(tǒng)板快速完成點(diǎn)亮led燈的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!