STM32MP157AAA开发板介绍

1.自己试着点亮LED2 LED3 蜂鸣器


.text 
.global _start
_start: 

.if 0
	以PE10 ---- LED1为例:
	-----------------------------初始化的代码------------------------------------
	-----------------------------RCC章节------------------------------
	1、使能GPIOE组外设的时钟 - 0x50000A28[4] = 0b1

	-----------------------------GPIO章节------------------------------
	1、将PE10引脚配置为输出模式 - 0x50006000[21:20] = 0b01
	2、将PE10引脚配置为推挽输出模式 - 0x50006004[10] = 0b0
	3、将PE10引脚配置为低速输出模式 - 0x50006008[21:20] = 0b00
	4、将PE19引脚配置为禁止上/下拉电阻 - 0x5000600C[21:20] = 0b00

	-----------------------------循环执行的代码------------------------------------
	while(1)
	{
    	// 实验现象:LED1循环亮灭,间隔1s
    	// 1、向PE10引脚输出高电平信号(1) - 0x50006014[10] = 0b1 - LED1亮
    
    	// 延时1s
    
    	// 2、向PE10引脚输出低电平信号(0) - 0x50006014[10] = 0b0 - LED1灭
	}
.endif


	/*****************************初始化代码*********************************/
	/*****************************RCC章节***********************************/
	@ 1、能GPIOE组外设的时钟 - 0x50000A28[4] = 0b1
	@ 1.1 准备一片地址为0x50000A28的内存空间
	ldr r0, =0x50000A28

	@ 1.2 将0x50000A28这片地址中的值读取到普通寄存器中
	ldr r1, [r0]

	@ 1.3 修改0x50000A28地址中的第[4],改为0b1
	orr r1, r1, #(0x1 << 4)

	@ 1.4 将修改完的寄存器中的值,写入到0x50000A28这片地址中
	str r1, [r0]

	/*****************************GPIO章节*********************************/
	@ 1、将PE10引脚配置为输出模式 - 0x50006000[21:20] = 0b01
	/*ldr r0, =0x50006000
	ldr r1, [r0]
	and r1, r1, #(~(0x3 << 20))
	orr r1, r1, #(0x1 << 20)
	str r1, [r0]

	@ 2、将PE10引脚配置为推挽输出模式 - 0x50006004[10] = 0b0
	ldr r0, =0x50006004
	ldr r1, [r0]
	and r1, r1, #(~(0x1 << 10))
	str r1, [r0]

	@ 3、将PE10引脚配置为低速输出模式 - 0x50006008[21:20] = 0b00
	ldr r0, =0x50006008
	ldr r1, [r0]
	and r1, r1, #(~(0x3 << 20))
	str r1, [r0]

	@ 4、将PE19引脚配置为禁止上/下拉电阻 - 0x5000600C[21:20] = 0b00
	ldr r0, =0x5000600C
	ldr r1, [r0]
	and r1, r1, #(~(0x3 << 20))
	str r1, [r0]


	stop:
		@ 1、向PE10引脚输出高电平信号(1) - 0x50006014[10] = 0b1 - LED1亮
		ldr r0, =0x50006014
		ldr r1, [r0]
		orr r1, r1, #(0x1 << 10)
		str r1, [r0]
		
		@ 延时1s
		bl delay_1s

		@ 2、向PE10引脚输出低电平信号(0) - 0x50006014[10] = 0b0 - LED1灭
		ldr r0, =0x50006014
		ldr r1, [r0]
		and r1, r1, #(~(0x1 << 10))
		str r1, [r0]*/

/********************************************/
/*		ldr r0,=0x50003000

		ldr r1,[r0]

			and r1, r1, #(~(0x3 << 12))
			orr r1, r1, #(0x1 << 12)
			str r1, [r0]

			ldr r0,=0x50003004
			ldr r1,[r0]
			and r1,r1,#(~(0x1<<6))
			str r1,[r0]

			ldr r0,=0x50003008

			ldr r1,[r0]
			and r1,r1,#(~(0x3<<12))
			str r1,[r0]

			ldr r0,=0x5000300c
			ldr r1,[r0]
			and r1,r1,#(~(0x3<<12))
			str r1,[r0]*/

			/**********LED2************/
			ldr r0,=0x50007000
			ldr r1,[r0]
			and r1,r1,#(~(0x3<<20))
			orr r1,r1,#(0x1<<20)

		str r1,[r0]

			ldr r0,=0x50007004

			ldr r1,[r0]

			and r1,r1,#(~(0x1<<10))

			str r1,[r0]

			ldr r0,=0x50007008

			ldr r1,[r0]

			and r1,r1,#(~(0x3<<20))

			str r1,[r0]

			ldr r0,=0x5000700c
			ldr r1,[r0]
			and  r1,r1,#(~(0x3<<20))
			str r1,[r0]

			/********led3********/

			@ 1、将PE8引脚配置为输出模式 - 0x50006000[17:16] = 0b01
	ldr r0, =0x50006000
	ldr r1, [r0]
	and r1, r1, #(~(0x3 << 16))
	orr r1, r1, #(0x1 << 16)
	str r1, [r0]

	@ 2、将PE8引脚配置为推挽输出模式 - 0x50006004[8] = 0b0
	ldr r0, =0x50006004
	ldr r1, [r0]
	and r1, r1, #(~(0x1 << 8))
	str r1, [r0]

	@ 3、将PE8引脚配置为低速输出模式 - 0x50006008[17:16] = 0b00
	ldr r0, =0x50006008
	ldr r1, [r0]
	and r1, r1, #(~(0x3 << 16))
	str r1, [r0]

	@ 4、将PE8引脚配置为禁止上/下拉电阻 - 0x5000600C[17:16] = 0b00
	ldr r0, =0x5000600C
	ldr r1, [r0]
	and r1, r1, #(~(0x3 << 16))
	str r1, [r0]

		b stop


		led2_on:
		ldr r0,=0x50007014
		ldr r1,[r0]
		orr r1,r1,#(0x1<<10)
		str r1,[r0]
		mov pc,lr

		led2_off:
		ldr r0,=0x50007014
		ldr r1,[r0]
		and r1,r1,#(~(0x1<<10))
		str r1,[r0]
		mov pc,lr

		@ LED3亮
	led3_on:
		@ 1、向PE8引脚输出高电平信号(1) - 0x50006014[8] = 0b1 - LED3亮
		ldr r0, =0x50006014
		ldr r1, [r0]
		orr r1, r1, #(0x1 << 8)
		str r1, [r0]
		mov pc, lr

	@ LED3灭
	led3_off:
		@ 2、向PE8引脚输出低电平信号(0) - 0x50006014[8] = 0b0 - LED3灭
		ldr r0, =0x50006014
		ldr r1, [r0]
		and r1, r1, #(~(0x1 << 8))
		str r1, [r0]
		mov pc, lr

/*	beep_on:
		@ 1、向PB6引脚输出高电平信号(1) - 0x50003014[6] = 0b1 - 蜂鸣器工作
		ldr r0, =0x50003014
		ldr r1, [r0]
		orr r1, r1, #(0x1 << 6)
		str r1, [r0]
		mov pc, lr
			



		@ 蜂鸣器不工作
	beep_off:
		@ 2、向PE10引脚输出低电平信号(0) - 0x50003014[6] = 0b0 - 蜂鸣器不工作
		ldr r0, =0x50003014
		ldr r1, [r0]
		and r1, r1, #(~(0x1 << 6))
		str r1, [r0]
		mov pc, lr*/
		



		stop:

/*
@ 蜂鸣器工作
		bl beep_on
		@ 延时1s
		bl delay_1s

		@ 蜂鸣器不工作
		bl beep_off
		@ 延时1s
		bl delay_1s*/


@le2亮
bl led2_on
bl delay_1s

@led2不亮
bl led2_off
bl delay_1s

@ LED3亮
		bl led3_on
		@ 延时1s
		bl delay_1s

		@ LED3灭
		bl led3_off
		@ 延时1s
		bl delay_1s

@ 大概1s的延时函数
delay_1s:
	mov r3, #0x10000000
	mm:
	cmp r3, #0
	subne r3, r3, #1
	bne mm
	mov pc, lr

.end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值