ARM day4 代码

.text

.global _start

_start:

@设置PE10输出:

@使能GPIOE的外设时钟 RCC_MP_AHB4ENSETR的第[4]设置为1即可使能GPIOE时钟

LDR R0,=0X50000A28 @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R1中

ORR R1,R1,#(0x1<<4) @将第4位设置为1

STR R1,[R0] @将修改后的数值写回

@设置PE10为输出 将GPIOE_MODER[21:20]设置为01,就能够让PE10为输出工作模式

LDR R0,=0X50006000 @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R1中

BIC R1,R1,#(0x3<<20) @将第21:20清0

ORR R1,R1,#(0x1<<20) @将第21:20设置为01

STR R1,[R0] @将修改后的数值写回

@设置PE10为推完输出 将GPIOE_OTYPER寄存器[10]设置为0,就能够让PE10以推挽输出模式进行工作

LDR R0,=0X50006004 @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R1中

BIC R1,R1,#(0x1<<10) @将第10清0

STR R1,[R0] @将修改后的数值写回

@设置PE10为低速输出

LDR R0,=0X50006008 @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R1中

BIC R1,R1,#(0x3<<20) @将第21:20清0

STR R1,[R0] @将修改后的数值写回

@设置无上拉下拉电阻

LDR R0,=0X5000600C @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R1中

BIC R1,R1,#(0x3<<20) @将第21:20清0

@将第21:20设置为01

STR R1,[R0] @将修改后的数值写回

@设置PE8为输出 将GPIOE_MODER[21:20]设置为01,就能够让PE10为输出工作模式

LDR R0,=0X50006000 @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R1中

BIC R1,R1,#(0x3<<16) @将第21:16清0

ORR R1,R1,#(0x1<<17) @将第21:17设置为01

STR R1,[R0] @将修改后的数值写回

@设置PE8为推完输出 将GPIOE_OTYPER寄存器[10]设置为0,就能够让PE10以推挽输出模式进行工作

LDR R0,=0X50006004 @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R1中

BIC R1,R1,#(0x1<<8) @将第8清0

STR R1,[R0] @将修改后的数值写回

@设置PE8为低速输出

LDR R0,=0X50006008 @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R1中

BIC R1,R1,#(0x3<<16) @将第21:16清0

STR R1,[R0] @将修改后的数值写回

@设置无上拉下拉电阻

LDR R0,=0X5000600C @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R1中

BIC R1,R1,#(0x3<<16) @将第21:16清0

@将第21:16设置为01

STR R1,[R0] @将修改后的数值写回

@设置PF10为输出 将GPIOE_MODER[21:20]设置为01,就能够让PE10为输出工作模式

LDR R0,=0X50007000 @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R1中

BIC R1,R1,#(0x3<<20) @将第21:20清0

ORR R1,R1,#(0x1<<20) @将第21:20设置为01

STR R1,[R0] @将修改后的数值写回

@设置PF10为推完输出 将GPIOE_OTYPER寄存器[10]设置为0,就能够让PE10以推挽输出模式进行工作

LDR R0,=0X50007004 @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R1中

BIC R1,R1,#(0x1<<10) @将第10清0

STR R1,[R0] @将修改后的数值写回

@设置PF10为低速输出

LDR R0,=0X50007008 @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R1中

BIC R1,R1,#(0x3<<20) @将第21:20清0

STR R1,[R0] @将修改后的数值写回

@设置无上拉下拉电阻

LDR R0,=0X5000700C @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R1中

BIC R1,R1,#(0x3<<20) @将第21:20清0

@将第21:20设置为01

STR R1,[R0] @将修改后的数值写回

loop:

@设置LED1亮

BL LED1_ON

BL DELAY

BL LED1_OFF

BL LED2_ON

BL DELAY

BL LED2_OFF

BL LED3_ON

BL DELAY

BL LED3_OFF

BL DELAY

b loop

LED1_ON:

LDR R0,=0X50006014 @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R1中

ORR R1,R1,#(0x1<<10) @将第10设置为1

STR R1,[R0] @将修改后的数值写回

MOV PC,LR

LED1_OFF:

LDR R0,=0X50006014 @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R1中

BIC R1,R1,#(0x1<<10) @将第10设置为0

STR R1,[R0] @将修改后的数值写回

MOV PC,LR

LED2_ON:

LDR R0,=0X50007014 @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R2中,R2:PF10

ORR R1,R1,#(0x1<<10) @将第10设置为1

STR R1,[R0] @将修改后的数值写回

MOV PC,LR

LED2_OFF:

LDR R0,=0X50007014 @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R2中

BIC R1,R1,#(0x1<<10) @将第10设置为0

STR R1,[R0] @将修改后的数值写回

MOV PC,LR

LED3_ON:

LDR R0,=0X50006014 @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R3中,R3:PE8

ORR R1,R1,#(0x1<<8) @将第10设置为1

STR R1,[R0] @将修改后的数值写回

MOV PC,LR

LED3_OFF:

LDR R0,=0X50006014 @指定寄存器地址

LDR R1,[R0] @将寄存器原来的数值读取出来,保存到R3中

BIC R1,R1,#(0x1<<8) @将第10设置为0

STR R1,[R0] @将修改后的数值写回

MOV PC,LR

DELAY:

LDR R3,=0x10000000

MM:

CMP R3,#0

SUBNE R3,R3,#1

BNE MM

MOV PC,LR

.end

相关推荐
芯联智造几秒前
【stm32简单外设篇】- 高灵敏麦克风传感器模块 KY-037
c语言·stm32·单片机·嵌入式硬件
三佛科技-1341638421221 分钟前
点焊机方案开发,点焊机MCU控制方案设计
单片机·嵌入式硬件·智能家居·pcb工艺
brave and determined1 小时前
传感器学习(day06):PM2.5传感器技术全解析
嵌入式硬件·嵌入式开发·嵌入式应用·嵌入式设计·pm2.5·微量振荡天平·beta射线法
鸿喵小仙女2 小时前
HC32 SWDT看门狗
单片机·嵌入式硬件·hc32
点灯小铭2 小时前
基于单片机的喷漆机器人自动控制系统
单片机·嵌入式硬件·机器人·毕业设计·课程设计·期末大作业
丸子的蓝口袋2 小时前
光耦加PNP管驱动继电器
嵌入式硬件
Dillon Dong2 小时前
STM32嵌入式开发:巧用位运算,打造高效参数ID管理方案
stm32·单片机·嵌入式硬件
亿道电子Emdoor2 小时前
【Arm】Arm DS如何导出Build log文件
stm32·单片机·嵌入式硬件
DIY机器人工房2 小时前
解决方法:关于上传经纬度绑定到onenet可视化平台地图上位置偏移的问题
stm32·单片机·嵌入式硬件·gps·定位·diy机器人工房
墨染倾城殇3 小时前
蓝牙车钥匙方案:低功耗蓝牙模块引领科技与生活完美融合
科技·嵌入式硬件·生活·蓝牙模块·低功耗蓝牙·车钥匙解决方案