<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > STM32 keil mdk啟動代碼發(fā)分析

          STM32 keil mdk啟動代碼發(fā)分析

          作者: 時間:2016-11-10 來源:網絡 收藏
          學習STM32,看了一堆亂七八糟的文檔,準備寫程序了,先分析了下STM32的啟動代碼,看著這堆鬼鬼的匯編代碼,挺嚇人的,看看幫助,查查網路,還是不那么難懂。
          1. ;//StackConfiguration
          2. ;//StackSize(inBytes)<0x0-0xFFFFFFFF:8>
          3. ;//
          4. Stack_SizeEQU0x00000200;//定義堆棧大小
          5. AREASTACK,NOINIT,READWRITE,ALIGN=3;//定義一個數據段按8字節(jié)對齊
          6. Stack_MemSPACEStack_Size;//保留Stack_Size大小的堆??臻g
          7. __initial_sp;//標號,代表堆棧頂部地址,后面有用
          8. ;//HeapConfiguration
          9. ;//HeapSize(inBytes)<0x0-0xFFFFFFFF:8>
          10. ;//
          11. Heap_SizeEQU0x00000020;//定義堆空間大小
          12. AREAHEAP,NOINIT,READWRITE,ALIGN=3;//定義一個數據段,8字節(jié)對齊
          13. __heap_base
          14. Heap_MemSPACEHeap_Size;//保留Heap_Size的堆空間
          15. __heap_limit;//標號,代表堆末尾地址,后面有用
          16. PRESERVE8;//指示編譯器8字節(jié)對齊
          17. THUMB;//指示編譯器為THUMB指令
          18. ;VectorTableMappedtoAddress0atReset
          19. AREARESET,DATA,READONLY;//定義只讀數據段,其實放在CODE區(qū),位于0地址
          20. EXTERNNMIException
          21. EXTERNHardFaultException
          22. EXTERNMemManageException
          23. EXTERNBusFaultException
          24. EXTERNUsageFaultException
          25. EXTERNSVCHandler
          26. EXTERNDebugMonitor
          27. EXTERNPendSVC
          28. EXTERNSysTickHandler;//聲明這些符號在外部定義,同C
          29. ;//在××it.c中實現這些函數,中斷就能自動調用了
          30. EXPORT__Vectors
          31. __VectorsDCD__initial_sp;TopofStack//Cotex-M要求此處為堆棧頂部地址
          32. DCDReset_Handler;ResetHandler
          33. DCDNMIException;NMIHandler
          34. DCDHardFaultException;HardFaultHandler
          35. DCDMemManageException;MPUFaultHandler
          36. DCDBusFaultException;BusFaultHandler
          37. DCDUsageFaultException;UsageFaultHandler
          38. DCD0;Reserved
          39. DCD0;Reserved
          40. DCD0;Reserved
          41. DCD0;Reserved
          42. DCDSVCHandler;SVCallHandler
          43. DCDDebugMonitor;DebugMonitorHandler
          44. DCD0;Reserved
          45. DCDPendSVC;PendSVHandler
          46. DCDSysTickHandler;SysTickHandler//一大堆的異常處理函數地址
          47. ;ExternalInterrupts
          48. EXTERNWWDG_IRQHandler
          49. EXTERNPVD_IRQHandler
          50. EXTERNTAMPER_IRQHandler
          51. EXTERNRTC_IRQHandler
          52. EXTERNFLASH_IRQHandler
          53. EXTERNRCC_IRQHandler
          54. EXTERNEXTI0_IRQHandler
          55. EXTERNEXTI1_IRQHandler
          56. EXTERNEXTI2_IRQHandler
          57. EXTERNEXTI3_IRQHandler
          58. EXTERNEXTI4_IRQHandler
          59. EXTERNDMAChannel1_IRQHandler
          60. EXTERNDMAChannel2_IRQHandler
          61. EXTERNDMAChannel3_IRQHandler
          62. EXTERNDMAChannel4_IRQHandler
          63. EXTERNDMAChannel5_IRQHandler
          64. EXTERNDMAChannel6_IRQHandler
          65. EXTERNDMAChannel7_IRQHandler
          66. EXTERNADC_IRQHandler
          67. EXTERNUSB_HP_CAN_TX_IRQHandler
          68. EXTERNUSB_LP_CAN_RX0_IRQHandler
          69. EXTERNCAN_RX1_IRQHandler
          70. EXTERNCAN_SCE_IRQHandler
          71. EXTERNEXTI9_5_IRQHandler
          72. EXTERNTIM1_BRK_IRQHandler
          73. EXTERNTIM1_UP_IRQHandler
          74. EXTERNTIM1_TRG_COM_IRQHandler
          75. EXTERNTIM1_CC_IRQHandler
          76. EXTERNTIM2_IRQHandler
          77. EXTERNTIM3_IRQHandler
          78. EXTERNTIM4_IRQHandler
          79. EXTERNI2C1_EV_IRQHandler
          80. EXTERNI2C1_ER_IRQHandler
          81. EXTERNI2C2_EV_IRQHandler
          82. EXTERNI2C2_ER_IRQHandler
          83. EXTERNSPI1_IRQHandler
          84. EXTERNSPI2_IRQHandler
          85. EXTERNUSART1_IRQHandler
          86. EXTERNUSART2_IRQHandler
          87. EXTERNUSART3_IRQHandler
          88. EXTERNEXTI15_10_IRQHandler
          89. EXTERNRTCAlarm_IRQHandler
          90. EXTERNUSBWakeUp_IRQHandler;//同上,
          91. DCDWWDG_IRQHandler;WindowWatchdog
          92. DCDPVD_IRQHandler;PVDthroughEXTILinedetect
          93. DCDTAMPER_IRQHandler;Tamper
          94. DCDRTC_IRQHandler;RTC
          95. DCDFLASH_IRQHandler;Flash
          96. DCDRCC_IRQHandler;RCC
          97. DCDEXTI0_IRQHandler;EXTILine0
          98. DCDEXTI1_IRQHandler;EXTILine1
          99. DCDEXTI2_IRQHandler;EXTILine2
          100. DCDEXTI3_IRQHandler;EXTILine3
          101. DCDEXTI4_IRQHandler;EXTILine4
          102. DCDDMAChannel1_IRQHandler;DMAChannel1
          103. DCDDMAChannel2_IRQHandler;DMAChannel2
          104. DCDDMAChannel3_IRQHandler;DMAChannel3
          105. DCDDMAChannel4_IRQHandler;DMAChannel4
          106. DCDDMAChannel5_IRQHandler;DMAChannel5
          107. DCDDMAChannel6_IRQHandler;DMAChannel6
          108. DCDDMAChannel7_IRQHandler;DMAChannel7
          109. DCDADC_IRQHandler;ADC
          110. DCDUSB_HP_CAN_TX_IRQHandler;USBHighPriorityorCANTX
          111. DCDUSB_LP_CAN_RX0_IRQHandler;USBLowPriorityorCANRX0
          112. DCDCAN_RX1_IRQHandler;CANRX1
          113. DCDCAN_SCE_IRQHandler;CANSCE
          114. DCDEXTI9_5_IRQHandler;EXTILine9..5
          115. DCDTIM1_BRK_IRQHandler;TIM1Break
          116. DCDTIM1_UP_IRQHandler;TIM1Update
          117. DCDTIM1_TRG_COM_IRQHandler;TIM1TriggerandCommutation
          118. DCDTIM1_CC_IRQHandler;TIM1CaptureCompare
          119. DCDTIM2_IRQHandler;TIM2
          120. DCDTIM3_IRQHandler;TIM3
          121. DCDTIM4_IRQHandler;TIM4
          122. DCDI2C1_EV_IRQHandler;I2C1Event
          123. DCDI2C1_ER_IRQHandler;I2C1Error
          124. DCDI2C2_EV_IRQHandler;I2C2Event
          125. DCDI2C2_ER_IRQHandler;I2C2Error
          126. DCDSPI1_IRQHandler;SPI1
          127. DCDSPI2_IRQHandler;SPI2
          128. DCDUSART1_IRQHandler;USART1
          129. DCDUSART2_IRQHandler;USART2
          130. DCDUSART3_IRQHandler;USART3
          131. DCDEXTI15_10_IRQHandler;EXTILine15..10
          132. DCDRTCAlarm_IRQHandler;RTCAlarmthroughEXTILine
          133. DCDUSBWakeUp_IRQHandler;USBWakeupfromsuspend;//同上
          134. AREA|.text|,CODE,READONLY;//定義代碼段
          135. ;ResetHandler
          136. Reset_HandlerPROC;//Rset_Handler的實現
          137. EXPORTReset_Handler[WEAK];//在外部沒有定義該符號時導出該符號,見HELP中[WEAK]
          138. IMPORT__main;//導入符號,__main為運行時庫提供的函數;完成堆棧,堆的初始話
          139. LDRR0,=__main;//等工作,會調用下面定義的__user_initial_stackheap;
          140. BXR0;//跳到__main,進入C的世界
          141. ENDP
          142. ALIGN
          143. ;UserInitialStack&Heap
          144. IF:DEF:__MICROLIB;//如果使用microlib,microlib描述見armlib.chm
          145. EXPORT__initial_sp
          146. EXPORT__heap_base
          147. EXPORT__heap_limit;//只導出幾個定義
          148. ELSE;//如果使用默認C運行時庫
          149. IMPORT__use_two_region_memory
          150. EXPORT__user_initial_stackheap
          151. __user_initial_stackheap;//則進行堆棧和堆的賦值,在__main函數執(zhí)行過程中調用。
          152. LDRR0,=Heap_Mem
          153. LDRR1,=(Stack_Mem+Stack_Size)
          154. LDRR2,=(Heap_Mem+Heap_Size)
          155. LDRR3,=Stack_Mem
          156. BXLR
          157. ALIGN
          158. ENDIF
          159. END;//OK,完了



          關鍵詞: STM32keilmdk啟動代

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();