当前位置:   article > 正文

ARM:2024/4/11

ARM:2024/4/11

实现三个灯的闪烁

代码: 
  1. .text
  2. .global _start
  3. _start:
  4. @使能GPIOE的外设时钟 RCC_MP_AHB4ENSETR 0x50000a28 [4]->1
  5. LDR R0,=0X50000A28 @指定基地址
  6. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  7. ORR R1,R1,#(0x1<<4) @[4]设置为1
  8. STR R1,[R0] @将修改之后的值写回去
  9. @使能GPIOF的外设时钟 RCC_MP_AHB4ENSETR 0x50000a28 [5]->1
  10. LDR R0,=0X50000A28 @指定基地址
  11. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  12. ORR R1,R1,#(0x1<<5) @[5]设置为1
  13. STR R1,[R0] @将修改之后的值写回去
  14. @LED1
  15. @设置PE10为输出 GPIOE_MODER [21:20]->01 0X50006000
  16. LDR R0,=0X50006000 @指定基地址
  17. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  18. BIC R1,R1,#(0x3<<20) @[21:20]设置为00
  19. ORR R1,R1,#(0x1<<20) @[21:20]设置为01
  20. STR R1,[R0] @将修改之后的值写回去
  21. @设置PE10为推挽输出 GPIOE_OTYPER[10]->0 0X50006004
  22. LDR R0,=0X50006004 @指定基地址
  23. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  24. BIC R1,R1,#(0x1<<10) @[10]设置为0
  25. STR R1,[R0] @将修改之后的值写回去
  26. @设置PE10低速输出 GPIOE_OSPEEDR[21:20]->00 0X50006008
  27. LDR R0,=0X50006008 @指定基地址
  28. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  29. BIC R1,R1,#(0x3<<20) @[21:20]设置为0
  30. STR R1,[R0] @将修改之后的值写回去
  31. @设置PE10无上拉下拉电阻 GPIOx_PUPDR
  32. LDR R0,=0X5000600C @指定基地址
  33. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  34. BIC R1,R1,#(0x3<<20) @[21:20]设置为0
  35. STR R1,[R0] @将修改之后的值写回去
  36. @LED2
  37. @设置PF10为输出 GPIOE_MODER [21:20]->01 0X50007000
  38. LDR R0,=0X50007000 @指定基地址
  39. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  40. BIC R1,R1,#(0x3<<20) @[21:20]设置为00
  41. ORR R1,R1,#(0x1<<20) @[21:20]设置为01
  42. STR R1,[R0] @将修改之后的值写回去
  43. @设置PF10为推挽输出 GPIOE_OTYPER[10]->0 0X50007004
  44. LDR R0,=0X50007004 @指定基地址
  45. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  46. BIC R1,R1,#(0x1<<10) @[10]设置为0
  47. STR R1,[R0] @将修改之后的值写回去
  48. @设置PF10低速输出 GPIOE_OSPEEDR[21:20]->00 0X50007008
  49. LDR R0,=0X50007008 @指定基地址
  50. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  51. BIC R1,R1,#(0x3<<20) @[21:20]设置为0
  52. STR R1,[R0] @将修改之后的值写回去
  53. @设置PF10无上拉下拉电阻 GPIOx_PUPDR
  54. LDR R0,=0X5000700C @指定基地址
  55. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  56. BIC R1,R1,#(0x3<<20) @[21:20]设置为0
  57. STR R1,[R0] @将修改之后的值写回去
  58. @LED3
  59. @设置PE8为输出 GPIOE_MODER [17:16]->01 0X50006000
  60. LDR R0,=0X50006000 @指定基地址
  61. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  62. BIC R1,R1,#(0x3<<16) @[17:16]设置为00
  63. ORR R1,R1,#(0x1<<16) @[17:16]设置为01
  64. STR R1,[R0] @将修改之后的值写回去
  65. @设置PE8为推挽输出 GPIOE_OTYPER[10]->0 0X50006004
  66. LDR R0,=0X50006004 @指定基地址
  67. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  68. BIC R1,R1,#(0x1<<8) @[8]设置为0
  69. STR R1,[R0] @将修改之后的值写回去
  70. @设置PE8低速输出 GPIOE_OSPEEDR[17:16]->00 0X50006008
  71. LDR R0,=0X50006008 @指定基地址
  72. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  73. BIC R1,R1,#(0x3<<16) @[17:16]设置为0
  74. STR R1,[R0] @将修改之后的值写回去
  75. @设置PE8无上拉下拉电阻 GPIOx_PUPDR
  76. LDR R0,=0X5000600C @指定基地址
  77. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  78. BIC R1,R1,#(0x3<<16) @[17:16]设置为0
  79. STR R1,[R0] @将修改之后的值写回去
  80. LOOP: @不让程序结束
  81. @LED1
  82. bl LED_ON
  83. bl DELAY
  84. bl LED_OFF
  85. bl DELAY
  86. B LOOP
  87. @亮灯
  88. LED_ON:
  89. @LED1
  90. LDR R0,=0X50006014 @指定基地址
  91. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  92. ORR R1,R1,#(0x1<<10) @[10]设置为1
  93. STR R1,[R0] @将修改之后的值写回去
  94. @LED2
  95. LDR R0,=0X50007014 @指定基地址
  96. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  97. ORR R1,R1,#(0x1<<10) @[10]设置为1
  98. STR R1,[R0] @将修改之后的值写回去
  99. @LED3
  100. LDR R0,=0X50006014 @指定基地址
  101. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  102. ORR R1,R1,#(0x1<<8) @[8]设置为1
  103. STR R1,[R0] @将修改之后的值写回去
  104. MOV PC,LR @程序返回
  105. @灭灯
  106. LED_OFF:
  107. @LED1
  108. LDR R0,=0X50006014 @指定基地址
  109. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  110. BIC R1,R1,#(0x1<<10) @[10]设置为0
  111. STR R1,[R0] @将修改之后的值写回去
  112. @LED2
  113. LDR R0,=0X50007014 @指定基地址
  114. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  115. BIC R1,R1,#(0x1<<10) @[10]设置为0
  116. STR R1,[R0] @将修改之后的值写回去
  117. @LED3
  118. LDR R0,=0X50006014 @指定基地址
  119. LDR R1,[R0] @将寄存器数据读取出来保存到R1中
  120. BIC R1,R1,#(0x1<<8) @[8]设置为0
  121. STR R1,[R0] @将修改之后的值写回去
  122. MOV PC,LR @程序返回
  123. @延时函数
  124. DELAY:
  125. LDR R3,=0X10000000
  126. MM:
  127. CMP R3,#0
  128. SUBNE R3,R3,#1
  129. BNE MM
  130. MOV PC,LR @程序返回
  131. .end

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/425855
推荐阅读
相关标签
  

闽ICP备14008679号