色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32學(xué)習(xí)筆記(1):GPIO口的使用

          STM32學(xué)習(xí)筆記(1):GPIO口的使用

          作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏
          摸索了很久之后終于把ARM開(kāi)發(fā)板上的LED燈點(diǎn)亮了,雖然是很簡(jiǎn)單的一個(gè)IO口操作,但是由于以前從來(lái)都沒(méi)有什么經(jīng)驗(yàn),所以浪費(fèi)了很多時(shí)間,也查找了很多資料?,F(xiàn)在可以操作IO口了,證明邁出了學(xué)習(xí)ARM的第一步。

          實(shí)驗(yàn)平臺(tái)清單如下:

          本文引用地址:http://cafeforensic.com/article/201611/322598.htm

          開(kāi)發(fā)板:奮斗STRIVE V3

          核心芯片:STM32F103VET6

          開(kāi)發(fā)環(huán)境:RealView MDK-ARM Version:3.50

          PC操作系統(tǒng):Windows 7家庭普通版

          仿真器:SEGGER J-Link

          其中,STM32F103VET6芯片是基于ARM Cortex-M3內(nèi)核的,具體技術(shù)參數(shù)請(qǐng)參考ST公司給出的芯片資料(http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/DATASHEET/CD00191185.pdf

          )。關(guān)于該芯片的其他資料,可以在

          http://www.st.com/cn/mcu/product/164491.jsp

          上找到。如果對(duì)RealView MDK不熟悉的話(huà),可以參考ARM RealView系列叢書(shū)《ARM開(kāi)發(fā)工具RealView MDK使用入門(mén)》,李寧編著,北京航空航天大學(xué)出版社出版。如果對(duì)于STM32不熟悉的話(huà),可以參考ARM RealView MDK系列叢書(shū)《基于MDK的STM32處理器開(kāi)發(fā)應(yīng)用》,李寧編著,北京航空航天大學(xué)出版社出版。

          當(dāng)軟硬件平臺(tái)都準(zhǔn)備好之后,就可以開(kāi)始新的工程了。對(duì)于一個(gè)初學(xué)者來(lái)說(shuō),新建一個(gè)可以運(yùn)行的工程其實(shí)是有難度的,因?yàn)楦静恢缽暮蜗率?。因此,我將每一步?xì)節(jié)都描述出來(lái),以便于即使是初學(xué)者也能很好的理解ARM的初級(jí)操作。

          打開(kāi)MDK開(kāi)發(fā)平臺(tái),在菜單欄中單擊“Project - New μVision Project”創(chuàng)建一個(gè)新的工程。然后在彈出的“Select Device for Target 1”對(duì)話(huà)框中選擇合適的芯片。由于我采用的是STM32F103VET6,所以選擇ST – STM32F103VE。

          選擇好芯片之后,會(huì)彈出一個(gè)消息框,“Copy STM32 Startup Code to Project Folder and Add File to Project?”問(wèn)你是否需要加載啟動(dòng)代碼。選擇“是”后進(jìn)入工程。

          所謂啟動(dòng)代碼,就是處理器在啟動(dòng)的時(shí)候執(zhí)行的一段代碼,主要任務(wù)是初始化處理器模式,設(shè)置堆棧,初始化變量等等。由于以上的操作均與處理器體系結(jié)構(gòu)和系統(tǒng)配置密切相關(guān),所以一般由匯編來(lái)編寫(xiě)。而對(duì)于初學(xué)者而言,自己設(shè)計(jì)啟動(dòng)代碼有一定的難度,MDK開(kāi)發(fā)平臺(tái)內(nèi)置了一些常用芯片的啟動(dòng)代碼,因此在新建工程的時(shí)候,最好是采用默認(rèn)的啟動(dòng)代碼。當(dāng)然,芯片制造廠商也會(huì)自己編寫(xiě)一些啟動(dòng)代碼,放在官網(wǎng)上供開(kāi)發(fā)者下載。

          進(jìn)入工程之后,我們就可以開(kāi)始寫(xiě)代碼了。首先得新建一個(gè)文件,然后將其保存成為*.c的格式,這樣開(kāi)發(fā)環(huán)境就可以識(shí)別出編寫(xiě)的代碼里面一些常用的關(guān)鍵字和其他信息了。我就直接保存成為main.c。然后在屏幕左邊的Project Workspace中的Source Group 1單擊右鍵,選擇Add Files to Group “ Source Group 1”,將我們剛剛保存起來(lái)的main.c添加到Source Group 1中,或者直接雙擊Source Group 1,也可以添加文件。

          接下來(lái)就可以開(kāi)始寫(xiě)代碼了,對(duì)于初學(xué)者而言,最基礎(chǔ)的操作應(yīng)該是對(duì)芯片IO口的操作了。因此我在學(xué)習(xí)ARM的時(shí)候,第一個(gè)工程就選擇了讓開(kāi)發(fā)板上的3個(gè)LED燈順序點(diǎn)亮。STM32F103VET6中一共有A-G共7組通用輸入輸出接口(General-Purpose Inputs/Outputs),每個(gè)GPIO引腳都可以由軟件配置成輸出(推挽或開(kāi)漏)、輸入(帶或不帶上拉或下拉)或復(fù)用的外設(shè)功能端口。多數(shù)GPIO引腳都與數(shù)字或模擬的復(fù)用外設(shè)共用。具體的細(xì)節(jié)請(qǐng)參考Datasheet。在《基于MDK的STM32處理器開(kāi)發(fā)應(yīng)用》一書(shū)中,“7.1通用IO端口”詳細(xì)描述了各個(gè)端口的功能、寄存器格式以及其他相關(guān)信息,因此就不在這里贅述了。

          回到MDK開(kāi)發(fā)平臺(tái),現(xiàn)在要在main.c中加入相關(guān)代碼了。代碼清單如下:

          #include "stm32f10x_lib.h"

          int main()

          {

          int i;

          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOB, ENABLE);//開(kāi)啟外設(shè)時(shí)鐘

          GPIOD->CRL = 0x33333333;//設(shè)置端口配置寄存器

          GPIOB->CRL = 0x33333333;

          while(1)

          {

          GPIOD->ODR = 0xffffffbf;//設(shè)置端口輸出寄存器

          for(i=0;i<1000000;i++);//延時(shí)

          GPIOD->ODR = 0xffffffff7;

          for(i=0;i<1000000;i++);

          GPIOD->ODR = 0x00000000;

          GPIOB->ODR = 0xffffffff;

          for(i=0;i<1000000;i++);

          GPIOB->ODR = 0x00000000;

          }

          }

          上述代碼中,#include "stm32f10x_lib.h"包含了開(kāi)發(fā)stm32f10x系列芯片所需的基本頭文件,在進(jìn)行程序編寫(xiě)的時(shí)候,務(wù)必要包含此頭文件。


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉