ARM -LED点灯实验

作业要求:

分别用汇编语言和C语言点亮三盏灯

一·、C语言方式:

 头文件:

#ifndef __LED_H__
#define __LED_H__

//宏定义封装RCC组寄存器
#define RCC_AHB4_ENSETR (*(volatile unsigned int*)0x50000A28)

//结构体封装GPIO组寄存器
typedef struct
{
	volatile unsigned int MODER;
	volatile unsigned int OTYPER;
	volatile unsigned int OSPEEDR;
	volatile unsigned int PUPDR;
	volatile unsigned int IDR;
	volatile unsigned int ODR;
}gpoi_t;

#define GPIOE (*(gpoi_t*)0x50006000)
#define GPIOF (*(gpoi_t*)0x50007000)

//点亮LED1
void led1_init();
void led1_on();
void led1_off();


//点亮LED2
void led2_init();
void led2_on();
void led2_off();

//点亮LED3
void led3_init();
void led3_on();
void led3_off();

#endif

 源文件:

#include "led.h"

//点亮LED1
void led1_init()
{
	//1.通过RCC_AHB4_ENSETR:0x50000A28寄存器设置GPIOE控制器使能 0x50000A28[4] = 1
	RCC_AHB4_ENSETR|=(0x1<<4);
    //2.通过GPIOE_MODER:0x50006000寄存器设置PE10引脚为输出模式 0x50006000[21:20]= 01
	GPIOE.MODER&=(~(0x3<<20));
	GPIOE.MODER|=(0x1<<20);
	//3.通过GPIOE_OTYPER:0x50006004寄存器设置PE10引脚为推挽输出模式 0x50006004[10]= 0
	GPIOE.OTYPER&=(~(0x1<<10));
	//4.通过GPIOE_OSPEEDR:0x50006008寄存器设置PE10引脚为低速输出0x50006008[21:20]=00
	GPIOE.OSPEEDR&=(~(0x3<<20));
	//5.通过GPIOE_PUPDR:0x5000600C寄存器设置PE10引脚为禁止上下拉0x5000600C[21:20]= 00
	GPIOE.PUPDR
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值