新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32學(xué)習(xí)筆記——控制GPIO輸出點(diǎn)亮LED燈

STM32學(xué)習(xí)筆記——控制GPIO輸出點(diǎn)亮LED燈

作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏

具體編程:

新建工程并設(shè)置好環(huán)境,添加c文件,鍵入如下程序:

//**********************************************

//*通過(guò)直接操作存儲(chǔ)器控制GPIO輸出點(diǎn)亮LED燈*

//* LED1=GPIOC_Pin6;*

//* LED2=GPIOC_Pin7;*

//* LED3=GPIOC_Pin8;*

//* LED4=GPIOC_Pin9;*

//* ------------------Sah_Pah----------------- *

//**********************************************

#include

//定義各寄存器地址

#define GPIOC_CRL(* (volatile unsigned long *)(0x40011000))

#define GPIOC_CRH(* (volatile unsigned long *)(0x40011004))

#define GPIOC_ODR(* (volatile unsigned long *)(0x4001100C))

#define GPIOC_BSRR (* (volatile unsigned long *)(0x40011010))

#define GPIOC_BRR(* (volatile unsigned long *)(0x40011014))

#define RCC_APB2ENR (*(volatile unsigned long *)(0x40021018))

//設(shè)置GPIOC_Pin6,Pin7,Pin8,Pin9為推挽輸出模式,最大速度50MHz

#define _GPIOC_CRL 0x33000000

#define _GPIOC_CRH 0x00000033

void delay(void);

void main(void)

{

volatile int i;

//使能APB2的PORTC時(shí)鐘

RCC_APB2ENR |=(1<<4);

//設(shè)置GPIOC_Pin6,Pin7,Pin8,Pin9為推挽輸出模式,最大速度50MHz

GPIOC_CRL = _GPIOC_CRL;

GPIOC_CRH = _GPIOC_CRH;

while(1)

{

delay();

//利用端口位復(fù)位寄存器BRR清除GPIOC各端口的ODR位為0

GPIOC_BRR=0xFFFF;

delay();

//利用端口位設(shè)置/復(fù)位寄存器BSRR將P6、P7、P8、P9口置1,點(diǎn)亮LED燈

GPIOC_BSRR=0x000003C0;

delay();

//重復(fù)三次,偷懶就不寫循環(huán)了

GPIOC_BRR=0xFFFF;

delay();

GPIOC_BSRR=0x000003C0;

delay();

GPIOC_BRR=0xFFFF;

delay();

GPIOC_BSRR=0x000003C0;

delay();

GPIOC_BRR=0xFFFF;

//利用端口輸出數(shù)據(jù)寄存器ODR進(jìn)行流水燈循環(huán)

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

{

//P6腳置1

GPIOC_ODR=0x0040;

delay();

//清0

GPIOC_ODR=0x0000;

//P7腳置1

GPIOC_ODR=0x0080;

delay();

GPIOC_ODR=0x0000;

//P8腳置1

GPIOC_ODR=0x0100;

delay();

GPIOC_ODR=0x0000;

//P9腳置1

GPIOC_ODR=0x0200;

delay();

}

}

}

//定義延遲函數(shù)

void delay(void)

{

unsigned long j,n=100000;

while(n--)

{

j=12;

while(j--);

}

}

最終結(jié)果:

保存編譯后,將程序燒寫到開(kāi)發(fā)板上,板上四個(gè)LED等閃爍三次后以流水燈形式循環(huán)三次。

三.參考文獻(xiàn)

[1]半壺水,《STM32菜鳥學(xué)習(xí)手冊(cè)-羅嗦版》, http://wenku.baidu.com/view/fc7c7d20ccbff121dd3683da.html, 2012-08-19.

[2]電腦圈圈.自己動(dòng)手創(chuàng)建一個(gè)基于萬(wàn)利STM32板的IAR工程[EB/OL].http://blog.21ic.com/user1/2198/archives/2008/48929.html ,2008-07-02/2012-08-19.

[3]Changing.用stm32點(diǎn)個(gè)燈[操作寄存器+庫(kù)函數(shù)][EB/OL]. http://www.ichanging.org/stm32_gpio_led.html,2012-06-29/2012-08-19.



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

關(guān)鍵詞: STM32學(xué)習(xí)筆記控制GPI

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉