DAY3,ARM(LED点灯实验)

这篇具有很好参考价值的文章主要介绍了DAY3,ARM(LED点灯实验)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.汇编实现开发板三盏灯点亮熄灭;

框图分析:

DAY3,ARM(LED点灯实验),ARM,arm开发


.text 
.global _start
_start: 
	/**********LED123点灯**************/

RCC_INIT:
	@1使能PE10 PF10 PE8
	@RCC..寄存器,E[4]=1 F[5]=1 0x50000a28
	ldr r0,=0x50000a28
	ldr r1,[r0]
	orr r1,r1,#(0x3 << 4)
	str r1,[r0]

LED1_INET:
	@2初始化LED1,PE10
	@a设置输出模式 
	@GPIOx_moder寄存器 0x50006000 [21:20]=01
	ldr r0,=0x50006000
	ldr r1,[r0]
	bic r1,r1,#(0x3 << 20)
	orr r1,r1,#(0x1 << 20)
	str r1,[r0]
	
	@b设置推挽输出类型
	@GPIOx_OTYPER寄存器 0x50006004 [10]=0
	ldr r0,=0x50006004
	ldr r1,[r0]
	bic r1,r1,#(0x1 << 10)
	str r1,[r0]
	
	@c设置输出速率,低速
	@GPIOx_OSPEEDR寄存器 0x50006008 [21:20]=00 
	ldr r0,=0x50006008
	ldr r1,[r0]
	bic r1,r1,#(0x3 << 20)
	str r1,[r0]
	
	@d设置禁止拉电阻
	@GPIOx_PUPDR寄存器 0x5000600c [21:20]=00
	ldr r0,=0x5000600c
	ldr r1,[r0]
	bic r1,r1,#(0x3 << 20)
	str r1,[r0]
	
	@3初始化LED2 PF10
	@a设置输出模式 
	@GPIOx_moder寄存器 0x50007000 [21:20]=01
	ldr r0,=0x50007000
	ldr r1,[r0]
	bic r1,r1,#(0x3 << 20)
	orr r1,r1,#(0x1 << 20)
	str r1,[r0]
	
	@b设置推挽输出类型
	@GPIOx_OTYPER寄存器 0x50007004 [10]=0
	ldr r0,=0x50007004
	ldr r1,[r0]
	bic r1,r1,#(0x1 << 10)
	str r1,[r0]
	
	@c设置输出速率,低速
	@GPIOx_OSPEEDR寄存器 0x50007008 [21:20]=00 
	ldr r0,=0x50007008
	ldr r1,[r0]
	bic r1,r1,#(0x3 << 20)
	str r1,[r0]
	
	@d设置禁止拉电阻
	@GPIOx_PUPDR寄存器 0x5000700c [21:20]=00
	ldr r0,=0x5000700c
	ldr r1,[r0]
	bic r1,r1,#(0x3 << 20)
	str r1,[r0]

	@4初始化LED3 PE8
	@a设置输出模式 
	@GPIOx_moder寄存器 0x50006000 [17:16]=01
	ldr r0,=0x50006000
	ldr r1,[r0]
	bic r1,r1,#(0x3 << 16)
	orr r1,r1,#(0x1 << 16)
	str r1,[r0]
	
	@b设置推挽输出类型
	@GPIOx_OTYPER寄存器 0x50006004 [8]=0
	ldr r0,=0x50006004
	ldr r1,[r0]
	bic r1,r1,#(0x1 << 8)
	str r1,[r0]
	
	@c设置输出速率,低速
	@GPIOx_OSPEEDR寄存器 0x50006008 [17:16]=00 
	ldr r0,=0x50006008
	ldr r1,[r0]
	bic r1,r1,#(0x3 << 16)
	str r1,[r0]
	
	@d设置禁止拉电阻
	@GPIOx_PUPDR寄存器 0x5000600c [17:16]=00
	ldr r0,=0x5000600c
	ldr r1,[r0]
	bic r1,r1,#(0x3 << 16)
	str r1,[r0]

loop:
	bl LED1_ON
	bl delay_1s
	bl LED2_ON
	bl delay_1s
	bl LED3_ON
	bl delay_1s

	bl LED1_OFF
	bl delay_1s
	bl LED2_OFF
	bl delay_1s
	bl LED3_OFF
	bl delay_1s
	b loop

LED1_ON:
	@5LED1点灯 PE10
	@设置引脚输出高电平
	@GPIOx_ODR寄存器 0x50006014 [10]=1
	ldr r0,=0x50006014
	ldr r1,[r0]
	orr r1,r1,#(0x1 << 10)
	str r1,[r0]
	mov pc,lr
	
LED2_ON:
	@6LED2点灯 PF10
	@设置引脚输出高电平
	@GPIOx_ODR寄存器 0x50007014 [10]=1
	ldr r0,=0x50007014
	ldr r1,[r0]
	orr r1,r1,#(0x1 << 10)
	str r1,[r0]
	mov pc,lr

LED3_ON:
	@7LED3点灯 PE8
	@设置引脚输出高电平
	@GPIOx_ODR寄存器 0x50006014 [8]=1
	ldr r0,=0x50006014
	ldr r1,[r0]
	orr r1,r1,#(0x1 << 8)
	str r1,[r0]
	mov pc,lr

LED1_OFF:
	@8LED1关灯 PE8
	@设置引脚输出低电平
	@GPIOx_ODR寄存器 0x50006014 [10]=0
	ldr r0,=0x50006014
	ldr r1,[r0]
	bic r1,r1,#(0x1 << 10)
	str r1,[r0]
	mov pc,lr

LED2_OFF:
	@9LED2关灯 PF10
	@设置引脚输出低电平
	@GPIOx_ODR寄存器 0x50007014 [10]=0
	ldr r0,=0x50007014
	ldr r1,[r0]
	bic r1,r1,#(0x1 << 10)
	str r1,[r0]
	mov pc,lr

LED3_OFF:
	@10LED3关灯 PE8
	@设置引脚输出低电平
	@GPIOx_ODR寄存器 0x50006014 [8]=0
	ldr r0,=0x50006014
	ldr r1,[r0]
	bic r1,r1,#(0x1 << 8)
	str r1,[r0]
	mov pc,lr
	
@ 大概1s的延时函数
delay_1s:
	mov r3, #0x10000000
	mm:
	cmp r3, #0
	subne r3, r3, #1
	bne mm
	mov pc, lr

.end
结果:(我的板LD1坏了,所以不亮) 

DAY3,ARM(LED点灯实验),ARM,arm开发

2.今日思维导图;

DAY3,ARM(LED点灯实验),ARM,arm开发文章来源地址https://www.toymoban.com/news/detail-653157.html

到了这里,关于DAY3,ARM(LED点灯实验)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ARM day2、day3 汇编

    @ 注释 # 注释(放在行首表示注释一行) /*    */ 注释 #+数字 立即数 : 一种标号(比如main:        loop:) .text        .end+换行 固定格式 ARM指令构成 ARM 指令包含操作码和一些其他的信息,只剩下8 位存放数据 具体来说,一个 ARM 指令通常由以下部分组成: 操作码(Opcode)

    2024年01月19日
    浏览(36)
  • day3 ARM寄存器组织

    目录 寄存器  ARM寄存器 专用寄存器 CPSR寄存器 概念: 寄存器是处理器内部的存储器,没有地址; 作用: 一般用于暂时存放参与运算的数据和运算结果; 分类: 包括通用寄存器、专用寄存器、控制寄存器;   注:在某个特定模式下只能使用当前模式下寄存器,一个模式下

    2024年02月08日
    浏览(40)
  • ARM day9 (按键中断控制led亮灭)

     保存现场 异常的处理流程,保存现场会做哪些事情(四大步三小步) ----CPU自动完成 1.保存CPSR寄存器中的值,到SPSR_mode寄存器中 2.修改CPSR寄存器对应的位         1修改CPSR寄存器对应的状态位(T位)         2根据需要,禁止相应中断位(I位 / F位)         3修改CPSR寄存

    2024年02月13日
    浏览(34)
  • ARM day8 key1/2/3&led

    key_led.h key_led.c main.c do_irq.c  

    2024年02月15日
    浏览(25)
  • 驱动开发 day3 (模块化驱动启动led,蜂鸣器,风扇,震动马达)

    模块化驱动启动led,蜂鸣器,风扇,震动马达并加上Makefile 封装模块化驱动,可自由安装卸载驱动,便于驱动更新(附图) 1.安装模块驱动同时初始化各个设备并使能 2.该驱动会自动创建驱动节点. 3.通过c函数程序输入控制各个设备 4.卸载模块驱动 //编译驱动(注意Makefile的编译到移植

    2024年02月16日
    浏览(34)
  • arm点灯

    2.  

    2024年02月16日
    浏览(23)
  • ARM架构(寄存器点灯)

    本篇文章我们来讲解一下如何使用寄存器点亮一个LED灯,一般对于新人来说都是使用HAL库或者标准库来操作的,但是学习寄存器有助于我们了解更加深入的知识,这加会提高我们对ARM架构的理解。 首先第一步我们需要先找到LED的原理图,确定对应的引脚,然后知道是高电平点

    2024年02月15日
    浏览(47)
  • 【理解ARM架构】不同方式点灯 | ARM架构简介 | 常见汇编指令 | C与汇编

    🐱作者:一只大喵咪1201 🐱专栏:《理解ARM架构》 🔥格言: 你只管努力,剩下的交给时间! 在学习C语言的时候,我们会写个 Hello World 程序来入门,当我们写ARM程序,也该有一个简单的程序引领我们入门,这个程序就是点亮LED。 查看原理图,确定控制LED的引脚: 如上图是

    2024年02月05日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包