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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32 keil mdk啟動(dòng)代碼發(fā)分析

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

          作者: 時(shí)間:2016-11-10 來(lái)源:網(wǎng)絡(luò) 收藏
          學(xué)習(xí)STM32,看了一堆亂七八糟的文檔,準(zhǔn)備寫(xiě)程序了,先分析了下STM32的啟動(dòng)代碼,看著這堆鬼鬼的匯編代碼,挺嚇人的,看看幫助,查查網(wǎng)路,還是不那么難懂。
          1. ;//StackConfiguration
          2. ;//StackSize(inBytes)<0x0-0xFFFFFFFF:8>
          3. ;//
          4. Stack_SizeEQU0x00000200;//定義堆棧大小
          5. AREASTACK,NOINIT,READWRITE,ALIGN=3;//定義一個(gè)數(shù)據(jù)段按8字節(jié)對(duì)齊
          6. Stack_MemSPACEStack_Size;//保留Stack_Size大小的堆??臻g
          7. __initial_sp;//標(biāo)號(hào),代表堆棧頂部地址,后面有用
          8. ;//HeapConfiguration
          9. ;//HeapSize(inBytes)<0x0-0xFFFFFFFF:8>
          10. ;//
          11. Heap_SizeEQU0x00000020;//定義堆空間大小
          12. AREAHEAP,NOINIT,READWRITE,ALIGN=3;//定義一個(gè)數(shù)據(jù)段,8字節(jié)對(duì)齊
          13. __heap_base
          14. Heap_MemSPACEHeap_Size;//保留Heap_Size的堆空間
          15. __heap_limit;//標(biāo)號(hào),代表堆末尾地址,后面有用
          16. PRESERVE8;//指示編譯器8字節(jié)對(duì)齊
          17. THUMB;//指示編譯器為T(mén)HUMB指令
          18. ;VectorTableMappedtoAddress0atReset
          19. AREARESET,DATA,READONLY;//定義只讀數(shù)據(jù)段,其實(shí)放在CODE區(qū),位于0地址
          20. EXTERNNMIException
          21. EXTERNHardFaultException
          22. EXTERNMemManageException
          23. EXTERNBusFaultException
          24. EXTERNUsageFaultException
          25. EXTERNSVCHandler
          26. EXTERNDebugMonitor
          27. EXTERNPendSVC
          28. EXTERNSysTickHandler;//聲明這些符號(hào)在外部定義,同C
          29. ;//在××it.c中實(shí)現(xiàn)這些函數(shù),中斷就能自動(dòng)調(diào)用了
          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//一大堆的異常處理函數(shù)地址
          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的實(shí)現(xiàn)
          137. EXPORTReset_Handler[WEAK];//在外部沒(méi)有定義該符號(hào)時(shí)導(dǎo)出該符號(hào),見(jiàn)HELP中[WEAK]
          138. IMPORT__main;//導(dǎo)入符號(hào),__main為運(yùn)行時(shí)庫(kù)提供的函數(shù);完成堆棧,堆的初始話
          139. LDRR0,=__main;//等工作,會(huì)調(diào)用下面定義的__user_initial_stackheap;
          140. BXR0;//跳到__main,進(jìn)入C的世界
          141. ENDP
          142. ALIGN
          143. ;UserInitialStack&Heap
          144. IF:DEF:__MICROLIB;//如果使用microlib,microlib描述見(jiàn)armlib.chm
          145. EXPORT__initial_sp
          146. EXPORT__heap_base
          147. EXPORT__heap_limit;//只導(dǎo)出幾個(gè)定義
          148. ELSE;//如果使用默認(rèn)C運(yùn)行時(shí)庫(kù)
          149. IMPORT__use_two_region_memory
          150. EXPORT__user_initial_stackheap
          151. __user_initial_stackheap;//則進(jìn)行堆棧和堆的賦值,在__main函數(shù)執(zhí)行過(guò)程中調(diào)用。
          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,完了



          關(guān)鍵詞: STM32keilmdk啟動(dòng)代

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();