久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > STM32學習筆記——控制GPIO輸出點亮LED燈

STM32學習筆記——控制GPIO輸出點亮LED燈

作者: 時間:2016-11-28 來源:網絡 收藏

具體編程:

新建工程并設置好環境,添加c文件,鍵入如下程序:

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

//*通過直接操作存儲器控制GPIO輸出點亮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))

//設置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時鐘

RCC_APB2ENR |=(1<<4);

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

GPIOC_CRL = _GPIOC_CRL;

GPIOC_CRH = _GPIOC_CRH;

while(1)

{

delay();

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

GPIOC_BRR=0xFFFF;

delay();

//利用端口位設置/復位寄存器BSRR將P6、P7、P8、P9口置1,點亮LED燈

GPIOC_BSRR=0x000003C0;

delay();

//重復三次,偷懶就不寫循環了

GPIOC_BRR=0xFFFF;

delay();

GPIOC_BSRR=0x000003C0;

delay();

GPIOC_BRR=0xFFFF;

delay();

GPIOC_BSRR=0x000003C0;

delay();

GPIOC_BRR=0xFFFF;

//利用端口輸出數據寄存器ODR進行流水燈循環

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();

}

}

}

//定義延遲函數

void delay(void)

{

unsigned long j,n=100000;

while(n--)

{

j=12;

while(j--);

}

}

最終結果:

保存編譯后,將程序燒寫到開發板上,板上四個LED等閃爍三次后以流水燈形式循環三次。

三.參考文獻

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

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

[3]Changing.用stm32點個燈[操作寄存器+庫函數][EB/OL]. http://www.ichanging.org/stm32_gpio_led.html,2012-06-29/2012-08-19.



上一頁 1 2 3 下一頁

關鍵詞: STM32學習筆記控制GPI

評論


相關推薦

技術專區

關閉