#ifndef __LED_H__
#define __LED_H__
//对RCC进行宏定义
#define RCC_AHB4 (*(volatile unsignedint*)0x50000A28)
typedef struct{
volatileunsigned int MODER;
volatileunsigned int OTYPER;
volatileunsigned int OSPEEDR;
volatileunsigned int PUPDR;
volatileunsigned int IDR;
volatileunsigned int ODR;
}gpio_t;
#define GPIOE ((gpio_t*)0x50006000)
#define GPIOF ((gpio_t*)0x50007000)
//初始化函数声明
int initial();
//点亮led灯函数声明
int light();
//熄灭led灯声明
int down();
#endif
#include"led.h"
int initial()
{ //pe10灯
RCC_AHB4=RCC_AHB4|(0x1<<4);
GPIOE->MODER=GPIOE->MODER&(~(0x3<<20));
GPIOE->MODER=GPIOE->MODER|(0x1<<20);
GPIOE->OTYPER=GPIOE->OTYPER&(~(0x1<<10));
GPIOE->OSPEEDR=GPIOE->OSPEEDR&(~(0x3<<20));
GPIOE->PUPDR=GPIOE->PUPDR&(~(0x3<<20));
//pe8灯
GPIOE->MODER=GPIOE->MODER&(~(0x3<<16));
GPIOE->MODER=GPIOE->MODER|(0x1<<16);
GPIOE->OTYPER=GPIOE->OTYPER&(~(0x1<<8));
GPIOE->OSPEEDR=GPIOE->OSPEEDR&(~(0x3<<16));
GPIOE->PUPDR=GPIOE->PUPDR&(~(0x3<<16));
//pf10灯
RCC_AHB4=RCC_AHB4|(0X1<<5);
GPIOF->MODER=GPIOF->MODER&(~(0x3<<20));
GPIOF->MODER=GPIOF->MODER|(0x1<<20);
GPIOF->OTYPER=GPIOF->OTYPER&(~(0x1<<10));
GPIOF->OSPEEDR=GPIOF->OSPEEDR&(~(0x3<<20));
GPIOF->PUPDR=GPIOF->PUPDR&(~(0x3<<20));
return0;
}
int light()
{ //pe10灯
GPIOE->ODR=GPIOE->ODR|(0x1<<10);
//pe8灯
GPIOE->ODR=GPIOE->ODR|(0x1<<8);
//pf10灯
GPIOF->ODR=GPIOF->ODR|(0x1<<10);
return0;
}
int down()
{
//pe10灯
GPIOE->ODR=GPIOE->ODR&(~(0x1<<10));
//pe8灯
GPIOE->ODR=GPIOE->ODR&(~(0x1<<8));
//pf10灯
GPIOF->ODR=GPIOF->ODR&(~(0x1<<10));
return0;
}
#include "led.h"
extern void printf(const char *fmt, ...);
void delay_ms(int ms)
{
inti,j;
for(i= 0; i < ms;i++)
for(j = 0; j < 1800; j++);
}
int main()
{
initial(); //初始化
while(1)
{
light();
delay_ms(500);
down();
delay_ms(500);
}
return0;
}