在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            STM32啟動(dòng)過程全解

            作者: 時(shí)間:2013-05-15 來源:網(wǎng)絡(luò) 收藏
            本文主要闡述了啟動(dòng)過程全面解析,包括啟動(dòng)過程的介紹、啟動(dòng)代碼的陳列以及深入解析。

              相對(duì)于ARM上一代的主流ARM7/ARM9內(nèi)核架構(gòu),新一代Cortex內(nèi)核架構(gòu)的啟動(dòng)方式有了比較大的變化。ARM7/ARM9內(nèi)核的控制器在復(fù)位后,CPU會(huì)從存儲(chǔ)空間的絕對(duì)地址0x000000取出第一條指令執(zhí)行復(fù)位中斷服務(wù)程序的方式啟動(dòng),即固定了復(fù)位后的起始地址為0x000000(PC = 0x000000)同時(shí)中斷向量表的位置并不是固定的。而Cortex-M3內(nèi)核則正好相反,有3種情況:

            專家揭秘:STM32啟動(dòng)過程全解

              1、 通過boot引腳設(shè)置可以將中斷向量表定位于SRAM區(qū),即起始地址為0x2000000,同時(shí)復(fù)位后PC指針位于0x2000000處;

              2、 通過boot引腳設(shè)置可以將中斷向量表定位于FLASH區(qū),即起始地址為0x8000000,同時(shí)復(fù)位后PC指針位于0x8000000處;

              3、 通過boot引腳設(shè)置可以將中斷向量表定位于內(nèi)置Bootloader區(qū),本文不對(duì)這種情況做論述;

              Cortex-M3內(nèi)核規(guī)定,起始地址必須存放堆頂指針,而第二個(gè)地址則必須存放復(fù)位中斷入口向量地址,這樣在Cortex-M3內(nèi)核復(fù)位后,會(huì)自動(dòng)從起始地址的下一個(gè)32位空間取出復(fù)位中斷入口向量,跳轉(zhuǎn)執(zhí)行復(fù)位中斷服務(wù)程序。對(duì)比ARM7/ARM9內(nèi)核,Cortex-M3內(nèi)核則是固定了中斷向量表的位置而起始地址是可變化的。

              有了上述準(zhǔn)備只是后,下面以的2.02固件庫(kù)提供的啟動(dòng)文件“stm32f10x_vector.s”為模板,對(duì)的啟動(dòng)過程做一個(gè)簡(jiǎn)要而全面的解析。
            程序清單一:
              ;文件“stm32f10x_vector.s”,其中注釋為行號(hào)
              DATA_IN_ExtSRAM EQU 0 ;1
              Stack_Size EQU 0x00000400 ;2
              AREA STACK, NOINIT, READWRITE, ALIGN = 3 ;3
              Stack_Mem SPACE Stack_Size ;4
              __initial_sp ;5
              Heap_Size EQU 0x00000400 ;6
              AREA HEAP, NOINIT, READWRITE, ALIGN = 3 ;7
              __heap_base ;8
              Heap_Mem SPACE Heap_Size ;9
              __heap_limit ;10
              THUMB ;11
              PRESERVE8 ;12
              IMPORT NMIException ;13
              IMPORT HardFaultException ;14
              IMPORT MemManageException ;15
              IMPORT BusFaultException ;16
              IMPORT UsageFaultException ;17
              IMPORT SVCHandler ;18
              IMPORT DebugMonitor ;19
              IMPORT PendSVC ;20
              IMPORT SysTickHandler ;21
              IMPORT WWDG_IRQHandler ;22
              IMPORT PVD_IRQHandler ;23
              IMPORT TAMPER_IRQHandler ;24
              IMPORT RTC_IRQHandler ;25
              IMPORT FLASH_IRQHandler ;26
              IMPORT RCC_IRQHandler ;27
              IMPORT EXTI0_IRQHandler ;28
              IMPORT EXTI1_IRQHandler ;29
              IMPORT EXTI2_IRQHandler ;30
              IMPORT EXTI3_IRQHandler ;31
              IMPORT EXTI4_IRQHandler ;32
              IMPORT DMA1_Channel1_IRQHandler ;33
              IMPORT DMA1_Channel2_IRQHandler ;34
              IMPORT DMA1_Channel3_IRQHandler ;35
              IMPORT DMA1_Channel4_IRQHandler ;36
              IMPORT DMA1_Channel5_IRQHandler ;37
              IMPORT DMA1_Channel6_IRQHandler ;38
              IMPORT DMA1_Channel7_IRQHandler ;39
              IMPORT ADC1_2_IRQHandler ;40
              IMPORT USB_HP_CAN_TX_IRQHandler ;41
              IMPORT USB_LP_CAN_RX0_IRQHandler ;42
              IMPORT CAN_RX1_IRQHandler ;43
              IMPORT CAN_SCE_IRQHandler ;44
              IMPORT EXTI9_5_IRQHandler ;45
              IMPORT TIM1_BRK_IRQHandler ;46
              IMPORT TIM1_UP_IRQHandler ;47
              IMPORT TIM1_TRG_COM_IRQHandler ;48
              IMPORT TIM1_CC_IRQHandler ;49
              IMPORT TIM2_IRQHandler ;50
              IMPORT TIM3_IRQHandler ;51
              IMPORT TIM4_IRQHandler ;52
              IMPORT I2C1_EV_IRQHandler ;53
              IMPORT I2C1_ER_IRQHandler ;54
              IMPORT I2C2_EV_IRQHandler ;55
              IMPORT I2C2_ER_IRQHandler ;56
              IMPORT SPI1_IRQHandler ;57
              IMPORT SPI2_IRQHandler ;58
              IMPORT USART1_IRQHandler ;59
              IMPORT USART2_IRQHandler ;60
              IMPORT USART3_IRQHandler ;61
              IMPORT EXTI15_10_IRQHandler ;62
              IMPORT RTCAlarm_IRQHandler ;63
              IMPORT USBWakeUp_IRQHandler ;64
              IMPORT TIM8_BRK_IRQHandler ;65
              IMPORT TIM8_UP_IRQHandler ;66
              IMPORT TIM8_TRG_COM_IRQHandler ;67
              IMPORT TIM8_CC_IRQHandler ;68
              IMPORT ADC3_IRQHandler ;69
              IMPORT FSMC_IRQHandler ;70
            IMPORT SDIO_IRQHandler ;71
              IMPORT TIM5_IRQHandler ;72
              IMPORT SPI3_IRQHandler ;73
              IMPORT UART4_IRQHandler ;74
              IMPORT UART5_IRQHandler ;75
              IMPORT TIM6_IRQHandler ;76
              IMPORT TIM7_IRQHandler ;77
              IMPORT DMA2_Channel1_IRQHandler ;78
              IMPORT DMA2_Channel2_IRQHandler ;79
              IMPORT DMA2_Channel3_IRQHandler ;80
              IMPORT DMA2_Channel4_5_IRQHandler ;81
              AREA RESET, DATA, READONLY ;82
              EXPORT __Vectors ;83
              __Vectors ;84
              DCD __initial_sp ;85
              DCD Reset_Handler ;86
              DCD NMIException ;87
              DCD HardFaultException ;88
              DCD MemManageException ;89
              DCD BusFaultException ;90
              DCD UsageFaultException ;91
              DCD 0 ;92
              DCD 0 ;93
              DCD 0 ;94
              DCD 0 ;95
              DCD SVCHandler ;96
              DCD DebugMonitor ;97
              DCD 0 ;98
              DCD PendSVC ;99
              DCD SysTickHandler ;100
              DCD WWDG_IRQHandler ;101
              DCD PVD_IRQHandler ;102
              DCD TAMPER_IRQHandler ;103
              DCD RTC_IRQHandler ;104
              DCD FLASH_IRQHandler ;105
              DCD RCC_IRQHandler ;106
              DCD EXTI0_IRQHandler ;107
              DCD EXTI1_IRQHandler ;108
              DCD EXTI2_IRQHandler ;109
              DCD EXTI3_IRQHandler ;110
              DCD EXTI4_IRQHandler ;111
              DCD DMA1_Channel1_IRQHandler ;112
              DCD DMA1_Channel2_IRQHandler ;113
              DCD DMA1_Channel3_IRQHandler ;114
              DCD DMA1_Channel4_IRQHandler ;115
              DCD DMA1_Channel5_IRQHandler ;116
              DCD DMA1_Channel6_IRQHandler ;117
              DCD DMA1_Channel7_IRQHandler ;118
              DCD ADC1_2_IRQHandler ;119
              DCD USB_HP_CAN_TX_IRQHandler ;120
              DCD USB_LP_CAN_RX0_IRQHandler ;121
              DCD CAN_RX1_IRQHandler ;122
              DCD CAN_SCE_IRQHandler ;123
              DCD EXTI9_5_IRQHandler ;124
              DCD TIM1_BRK_IRQHandler ;125
              DCD TIM1_UP_IRQHandler ;126
              DCD TIM1_TRG_COM_IRQHandler ;127
              DCD TIM1_CC_IRQHandler ;128
              DCD TIM2_IRQHandler ;129
              DCD TIM3_IRQHandler ;130
              DCD TIM4_IRQHandler ;131
              DCD I2C1_EV_IRQHandler ;132
              DCD I2C1_ER_IRQHandler ;133
              DCD I2C2_EV_IRQHandler ;134
              DCD I2C2_ER_IRQHandler ;135
              DCD SPI1_IRQHandler ;136
              DCD SPI2_IRQHandler ;137
              DCD USART1_IRQHandler ;138
              DCD USART2_IRQHandler ;139
              DCD USART3_IRQHandler ;140
              DCD EXTI15_10_IRQHandler ;141
              DCD RTCAlarm_IRQHandler ;142
              DCD USBWakeUp_IRQHandler ;143
              DCD TIM8_BRK_IRQHandler ;144
              DCD TIM8_UP_IRQHandler ;145
              DCD TIM8_TRG_COM_IRQHandler ;146
              DCD TIM8_CC_IRQHandler ;147
              DCD ADC3_IRQHandler ;148
              DCD FSMC_IRQHandler ;149
              DCD SDIO_IRQHandler ;150
              DCD TIM5_IRQHandler ;151
              DCD SPI3_IRQHandler ;152
              DCD UART4_IRQHandler ;153
              DCD UART5_IRQHandler ;154
              DCD TIM6_IRQHandler ;155
              DCD TIM7_IRQHandler ;156
              DCD DMA2_Channel1_IRQHandler ;157
              DCD DMA2_Channel2_IRQHandler ;158
              DCD DMA2_Channel3_IRQHandler ;159
              DCD DMA2_Channel4_5_IRQHandler ;160
              AREA |.text|, CODE, READONLY ;161
              Reset_Handler PROC ;162
              EXPORT Reset_Handler ;163
              IF DATA_IN_ExtSRAM == 1 ;164
              LDR R0,= 0x00000114 ;165
              LDR R1,= 0x40021014 ;166
              STR R0,[R1] ;167
              LDR R0,= 0x000001E0 ;168
              LDR R1,= 0x40021018 ;169
              STR R0,[R1] ;170
              LDR R0,= 0x44BB44BB ;171
            LDR R1,= 0x40011400 ;172
              STR R0,[R1] ;173
              LDR R0,= 0xBBBBBBBB ;174
              LDR R1,= 0x40011404 ;175
              STR R0,[R1] ;176
              LDR R0,= 0xB44444BB ;177
              LDR R1,= 0x40011800 ;178
              STR R0,[R1] ;179
              LDR R0,= 0xBBBBBBBB ;180
              LDR R1,= 0x40011804 ;181
              STR R0,[R1] ;182
              LDR R0,= 0x44BBBBBB ;183
              LDR R1,= 0x40011C00 ;184
              STR R0,[R1] ;185
              LDR R0,= 0xBBBB4444 ;186
              LDR R1,= 0x40011C04 ;187
              STR R0,[R1] ;188
              LDR R0,= 0x44BBBBBB ;189
              LDR R1,= 0x40012000 ;190
              STR R0,[R1] ;191
              LDR R0,= 0x44444B44 ;192
              LDR R1,= 0x40012004 ;193
              STR R0,[R1] ;194
              LDR R0,= 0x00001011 ;195
              LDR R1,= 0xA0000010 ;196
              STR R0,[R1] ;197
              LDR R0,= 0x00000200 ;198
              LDR R1,= 0xA0000014 ;199
              STR R0,[R1] ;200
              ENDIF ;201
              IMPORT __main ;202
              LDR R0, =__main ;203
              BX R0 ;204
              ENDP ;205
              ALIGN ;206
              IF :DEF:__MICROLIB ;207
              EXPORT __initial_sp ;208
              EXPORT __heap_base ;209
              EXPORT __heap_limit ;210
              ELSE ;211
              IMPORT __use_two_region_memory ;212
              EXPORT __user_initial_stackheap ;213
              __user_initial_stackheap ;214
              LDR R0, = Heap_Mem ;215
              LDR R1, = (Stack_Mem + Stack_Size) ;216
              LDR R2, = (Heap_Mem + Heap_Size) ;217
              LDR R3, = Stack_Mem ;218
              BX LR ;219
              ALIGN ;220
              ENDIF ;221
              END ;222
              ENDIF ;223
              END ;224

              如程序清單一,STM32的啟動(dòng)代碼一共224行,使用了匯編語(yǔ)言編寫,這其中的主要原因下文將會(huì)給出交代。現(xiàn)在從第一行開始分析:

            調(diào)壓器相關(guān)文章:調(diào)壓器原理

            上一頁(yè) 1 2 下一頁(yè)

            關(guān)鍵詞: STM32 過程全解

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉