ARM——Day3 使用C语言实现LED依次点亮

使用C语言实现LED依次点亮

代码

gpio.h

#ifndef __GPIO_H__
#define __GPIO_H__

//1.RCC寄存器封装,用宏定义进行封装
#define RCC_AHB4 (*(volatile unsigned int*)0x50000a28)
//2.GPIO寄存器封装,用结构体进行封装
typedef struct
{
	volatile unsigned int MODER;//00
	volatile unsigned int OTYPER;//04
	volatile unsigned int OSPEEDR;//08
	volatile unsigned int PUPDR;//0c
	volatile unsigned int IDR;//10
	volatile unsigned int ODR;//14
}gpio_t;
#define GPIOE ((gpio_t *)0x50006000)
#define GPIOF ((gpio_t *)0x50007000)



//3.LED灯初始化
void LED_init();
//4.LED灯点亮
void LED_on();

//4.LED灯熄灭
void LED_off();

#endif

gpio.c

#include "gpio.h"
//LED灯初始化
void LED_init()
{
   //使GPIOE与GPIOF使能
	RCC_AHB4 |=(0x3<<4);

	//MODER,使PE10,PF10,PE8进入输出模式
	GPIOE->MODER |=(0x1<<20);
    GPIOE->MODER &=~(0x1<<21);
 
	GPIOE->MODER |=(0x1<<16);
   	GPIOE->MODER &=~(0x1<<17);
	
	GPIOF->MODER |=(0x1<<20);
	GPIOF->MODER &=~(0x1<<21);
	
	//OTYPER,使PE10,PF10,PE8使用推挽输出模式
	GPIOE->OTYPER &=~(0x1<<10);
    GPIOE->OTYPER &=~(0x1<<8);
	GPIOF->OTYPER &=~(0x1<<10);

	//OSPEEDR,使PE10,PF10,PE8使用低速输出模式
    GPIOE->OSPEEDR &=~(0x3<<20);
    GPIOE->OSPEEDR &=~(0x3<<16);
	GPIOF->OSPEEDR &=~(0x3<<20);
    //PUPDR,使PE10,PF10,PE8禁止上下拉电阻
	GPIOE->PUPDR &=~(0x3<<20);
	GPIOE->PUPDR &=~(0x3<<16);
    GPIOF->PUPDR &=~(0x3<<20);

}

//LED1灯点亮
void LED_on()
{
	GPIOE->ODR |= (0x1<<10);
    GPIOE->ODR |= (0x1<<8);
    GPIOF->ODR |= (0x1<<10);

}

//LED1灯熄灭
void LED_off()
{
     GPIOE->ODR &=~(0x1<<10);
     GPIOE->ODR &=~(0x1<<8);
     GPIOF->ODR &=~(0x1<<10);

}

main.c

#include "gpio.h"

extern void printf(const char *fmt, ...);

void delay_ms(int ms)

{

	int i,j;

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

		for (j = 0; j < 1800; j++);

}





int main()

{

	LED_init(); // LED灯初始化

	while(1)

	{

		LED_on();

		delay_ms(500);

		LED_off();

		delay_ms(500);

	}

	return 0;

}

现象

在这里插入图片描述

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值