新闻中心

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

评论


相关推荐

技术专区

关闭