• ARM作业1


    三盏灯流水

    代码

    1. .text
    2. .global _start
    3. _start:
    4. @1.设置GPIOE寄存器的时钟使能 RCC_MP_AHB4ENSETR[4]->1 0x50000a28
    5. LDR R0,=0X50000A28
    6. LDR R1,[R0] @从r0为起始地址的4字节数据取出放在R1
    7. ORR R1,R1,#(0x3<<4) @第4位设置为1
    8. STR R1,[R0] @写回
    9. @2.设置PE10管脚为输出模式 GPIOE_MODER[21:20]->01 0x50006000
    10. LDR R0,=0x50006000
    11. LDR R1,[R0]
    12. BIC R1,R1,#(0x3<<20)@[21L20]清0
    13. ORR R1,R1,#(0X1<<20) @设置
    14. STR R1,[R0]
    15. @设置PF10
    16. LDR R0,=0x50007000
    17. LDR R1,[R0]
    18. BIC R1,R1,#(0x3<<20)@[21L20]清0
    19. ORR R1,R1,#(0X1<<20) @设置
    20. STR R1,[R0]
    21. @设置PE8
    22. LDR R0,=0x50006000
    23. LDR R1,[R0]
    24. BIC R1,R1,#(0x3<<16)@[21L20]清0
    25. ORR R1,R1,#(0X1<<16) @设置
    26. STR R1,[R0]
    27. @3.设置PE10管脚为推挽输出 GPIOE_OTYPER[10]->0 0X50006004
    28. LDR R0,=0X50006004
    29. LDR R1,[R0]
    30. BIC R1,R1,#(0X1<<10)
    31. STR R1,[R0]
    32. @设置PF10
    33. LDR R0,=0X50007004
    34. LDR R1,[R0]
    35. BIC R1,R1,#(0X1<<10)
    36. STR R1,[R0]
    37. @设置PE8
    38. LDR R0,=0X50006004
    39. LDR R1,[R0]
    40. BIC R1,R1,#(0X1<<8)
    41. STR R1,[R0]
    42. @4.设置PE10管脚为低速输出 GPIOE_OSPEEDR[21:20]->00 0X50006008
    43. LDR R0,=0x50006008
    44. LDR R1,[R0]
    45. BIC R1,R1,#(0x3<<20)@[21L20]清0
    46. STR R1,[R0]
    47. @设置PF10
    48. LDR R0,=0x50007008
    49. LDR R1,[R0]
    50. BIC R1,R1,#(0x3<<20)@[21L20]清0
    51. STR R1,[R0]
    52. @设置PE8
    53. LDR R0,=0x50006008
    54. LDR R1,[R0]
    55. BIC R1,R1,#(0x3<<16)@[21L20]清0
    56. STR R1,[R0]
    57. @5.设置PE10管脚输出时没有上拉下拉电阻 GPIOE_PUPDR[21:20]->00 0X5000600C
    58. LDR R0,=0x5000600c
    59. LDR R1,[R0]
    60. BIC R1,R1,#(0x3<<20)@[21L20]清0
    61. STR R1,[R0]
    62. @设置PF10
    63. LDR R0,=0x5000700c
    64. LDR R1,[R0]
    65. BIC R1,R1,#(0x3<<20)@[21L20]清0
    66. STR R1,[R0]
    67. @设置PE8
    68. LDR R0,=0x5000600c
    69. LDR R1,[R0]
    70. BIC R1,R1,#(0x3<<16)@[21L20]清0
    71. STR R1,[R0]
    72. @ 6.PE10输出高低电平 GPIOE_ODR[10]->1(高电平) 0(低电平) 0X50006014
    73. @LED1亮灭交替
    74. loop:
    75. @亮
    76. LDR R0,=0X50006014
    77. LDR R1,[R0]
    78. ORR R1,R1,#(0x1<<10)
    79. STR R1,[R0]
    80. BL delay
    81. @灭
    82. LDR R0,=0X50006014
    83. LDR R1,[R0]
    84. BIC R1,R1,#(0x1<<10)
    85. STR R1,[R0]
    86. BL delay
    87. LDR R0,=0X50007014
    88. LDR R1,[R0]
    89. ORR R1,R1,#(0x1<<10)
    90. STR R1,[R0]
    91. BL delay
    92. LDR R0,=0X50007014
    93. LDR R1,[R0]
    94. BIC R1,R1,#(0x1<<10)
    95. STR R1,[R0]
    96. BL delay
    97. @亮
    98. LDR R0,=0X50006014
    99. LDR R1,[R0]
    100. ORR R1,R1,#(0x1<<8)
    101. STR R1,[R0]
    102. BL delay
    103. @灭
    104. LDR R0,=0X50006014
    105. LDR R1,[R0]
    106. BIC R1,R1,#(0x1<<8)
    107. STR R1,[R0]
    108. BL delay
    109. b loop
    110. @封装延时函数
    111. delay:
    112. LDR R4,=0X10000000
    113. mm:
    114. cmp r4,#0
    115. subne r4,r4,#1
    116. bne mm
    117. mov pc,lr @程序返回
    118. .end

    运行效果

  • 相关阅读:
    C语言之预处理命令使用详解----#if、#endif、#undef、#ifdef、#else、#elif
    pwndbg安装(gdb插件)
    手写模拟SpringBoot核心流程
    [论文笔记]P-tuning v2
    产成品差异科目有余额物料分类账帐以后没有结转完
    黄仁勋:英伟达预言 2 年内行业将面目全非 一个词形容AI:Unbelievable
    配置WampServer在局域网内通过内网IP访问(解决403 Forbidden问题)
    kyverno VS gateKeeper
    fastapi项目结构以及多进程部署
    Acwing.886 求组合数Ⅱ
  • 原文地址:https://blog.csdn.net/cwj442257772/article/details/133688612