• 汇编实现点灯实验


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

  • 相关阅读:
    未来十年世界数字化与机器智能展望
    适配高DPI QWidget::move移动有错误?
    npm常见相关命令
    黑客公开“接单”,电子邮件成首选作案工具
    zookeeper整理:paxos算法学习
    mybatis初体验(细节满满)
    Linux IO函数
    python操作数据库,django操作数据库
    【探索AI】二十二 深度学习之第5周:生成对抗网络(GAN)
    湘南学院2023级成考新生课程学习安排及成绩评定标准
  • 原文地址:https://blog.csdn.net/Venusler/article/details/133688734