欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32 啟動(dòng)流程的詳細(xì)講解

ouxiaolong ? 來源:嵌入式大雜燴 ? 作者:嵌入式大雜燴 ? 2022-03-06 15:26 ? 次閱讀

開發(fā)環(huán)境:

處理器STM32F103

MDK:5.30

STM32CubeMX:6.0.1

對(duì)于我們常用的桌面操作系統(tǒng)而言,我們在開發(fā)應(yīng)用時(shí),并不關(guān)心系統(tǒng)的初始化,絕大多數(shù)應(yīng)用程序是在操作系統(tǒng)運(yùn)行后才開始運(yùn)行的,操作系統(tǒng)已經(jīng)提供了一個(gè)合適的運(yùn)行環(huán)境,然而對(duì)于嵌入式設(shè)備而言,在設(shè)備上電后,所有的一切都需要由開發(fā)者來設(shè)置,這里處理器是沒有堆棧,沒有中斷,更沒有外圍設(shè)備,這些工作是需要軟件來指定的,而且不同的CPU類型、不同大小的內(nèi)存和不同種類的外設(shè),其初始化工作都是不同的。本文將以STMF103(基于Cortex-M3)為例進(jìn)行講解。

在開始正式講解之前,你需要了解ARM寄存器匯編以及反編譯相關(guān)的知識(shí),這些可以參考筆者博文。

深入理解ARM寄存器:https://bruceou.blog.csdn.net/article/details/117866186

ARM匯編入門:https://bruceou.blog.csdn.net/article/details/117897496

Keil反編譯入門(一):https://bruceou.blog.csdn.net/article/details/118314875

Keil反編譯入門(二):https://bruceou.blog.csdn.net/article/details/118400368

下面我們就來具體看一下用戶從Flash啟動(dòng)STM32的過程,主要講解從上電復(fù)位到main函數(shù)的過程。主要有以下步驟:

1.初始化堆棧指針 SP=_initial_sp,初始化 PC指針=Reset_Handler

2.初始化中斷向量表

3.配置系統(tǒng)時(shí)鐘

4.調(diào)用 C庫函數(shù)_main初始化用戶堆棧,然后進(jìn)入 main函數(shù)。

在開始講解之前,我們需要了解STM32的啟動(dòng)模式。

1 STM32的啟動(dòng)模式

首先要講一下STM32的啟動(dòng)模式,因?yàn)閱?dòng)模式?jīng)Q定了向量表的位置,STM32有三種啟動(dòng)模式:

1)主閃存存儲(chǔ)器(Main Flash)啟動(dòng):從STM32內(nèi)置的Flash啟動(dòng)(0x0800 0000-0x0807 FFFF),一般我們使用JTAG或者SWD模式下載程序時(shí),就是下載到這個(gè)里面,重啟后也直接從這啟動(dòng)程序。以0x08000000對(duì)應(yīng)的內(nèi)存為例,則該塊內(nèi)存既可以通過0x00000000操作也可以通過0x08000000操作,且都是操作的同一塊內(nèi)存。

2)系統(tǒng)存儲(chǔ)器(System Memory)啟動(dòng):從系統(tǒng)存儲(chǔ)器啟動(dòng)(0x1FFFF000 - 0x1FFF F7FF),這種模式啟動(dòng)的程序功能是由廠家設(shè)置的。一般來說,我們選用這種啟動(dòng)模式時(shí),是為了從串口下載程序,因?yàn)樵趶S家提供的ISP程序中,提供了串口下載程序的固件,可以通過這個(gè)ISP程序?qū)⒂脩舫绦蛳螺d到系統(tǒng)的Flash中。以0x1FFFFFF0對(duì)應(yīng)的內(nèi)存為例,則該塊內(nèi)存既可以通過0x00000000操作也可以通過0x1FFFFFF0操作,且都是操作的同一塊內(nèi)存。

3)片上SRAM啟動(dòng):從內(nèi)置SRAM啟動(dòng)(0x2000 0000-0x3FFFFFFF),既然是SRAM,自然也就沒有程序存儲(chǔ)的能力了,這個(gè)模式一般用于程序調(diào)試。SRAM只能通過0x20000000進(jìn)行操作,與上述兩者不同。從SRAM啟動(dòng)時(shí),需要在應(yīng)用程序初始化代碼中重新設(shè)置向量表的位置。

用戶可以通過設(shè)置BOOT0和BOOT1的引腳電平狀態(tài),來選擇復(fù)位后的啟動(dòng)模式。如下圖所示:

poYBAGGm-NuAD4bcAAB4W9j4wms335.png

啟動(dòng)模式只決定程序燒錄的位置,加載完程序之后會(huì)有一個(gè)重映射(映射到0x00000000地址位置);真正產(chǎn)生復(fù)位信號(hào)的時(shí)候,CPU還是從開始位置執(zhí)行。

值得注意的是STM32上電復(fù)位以后,代碼區(qū)都是從0x00000000開始的,三種啟動(dòng)模式只是將各自存儲(chǔ)空間的地址映射到0x00000000中。

2 STM32的啟動(dòng)文件分析

因?yàn)閱?dòng)過程主要是由匯編完成的,因此STM32的啟動(dòng)的大部分內(nèi)容都是在啟動(dòng)文件里。筆者的啟動(dòng)文件是startup_stm32f103xe.s,不管使用標(biāo)準(zhǔn)庫還是使用HAL庫,啟動(dòng)文件都是差不多的。

2.1堆棧定義

1.Stack棧

棧的作用是用于局部變量,函數(shù)調(diào)用,函數(shù)形參等的開銷,棧的大小不能超過內(nèi)部SRAM的大小。當(dāng)程序較大時(shí),需要修改棧的大小,不然可能會(huì)出現(xiàn)的HardFault的錯(cuò)誤。

pYYBAGGm-NyAO9D2AAB5BNYbnlQ498.png

第33行:表示開辟棧的大小為 0X00000400(1KB),EQU是偽指令,相當(dāng)于C中的 define。

第35行:開辟一段可讀可寫數(shù)據(jù)空間,ARER偽指令表示下面將開始定義一個(gè)代碼段或者數(shù)據(jù)段。此處是定義數(shù)據(jù)段。ARER后面的關(guān)鍵字表示這個(gè)段的屬性。段名為STACK,可以任意命名;NOINIT表示不初始化;READWRITE表示可讀可寫,ALIGN=3,表示按照 8字節(jié)對(duì)齊。

第36行:SPACE用于分配大小等于 Stack_Size連續(xù)內(nèi)存空間,單位為字節(jié)。

第37行: __initial_sp表示棧頂?shù)刂?。棧是由高向低生長的。

2.Heap堆

堆主要用來動(dòng)態(tài)內(nèi)存的分配,像 malloc()函數(shù)申請(qǐng)的內(nèi)存就在堆中。

pYYBAGIkYG2AKWA_AAB_1MjIEWw739.png

開辟堆的大小為 0X00000200(512字節(jié)),名字為 HEAP,NOINIT即不初始化,可讀可寫,8字節(jié)對(duì)齊。__heap_base表示對(duì)的起始地址,__heap_limit表示堆的結(jié)束地址。

2.2向量表

向量表是一個(gè)WORD( 32位整數(shù))數(shù)組,每個(gè)下標(biāo)對(duì)應(yīng)一種異常,該下標(biāo)元素的值則是該 ESR的入口地址。向量表在地址空間中的位置是可以設(shè)置的,通過 NVIC中的一個(gè)重定位寄存器來指出向量表的地址。在復(fù)位后,該寄存器的值為 0。因此,在地址 0(即 FLASH地址 0)處必須包含一張向量表,用于初始時(shí)的異常分配。

值得注意的是這里有個(gè)另類: 0號(hào)類型并不是什么入口地址,而是給出了復(fù)位后 MSP的初值,后面會(huì)具體講解。

pYYBAGIkYIWAalemAAEzAzwzIsM222.png

……

poYBAGGm-OGAYKu-AACYtV0J3wM865.png

第55行:定義一塊代碼段,段名字是RESET,READONLY表示只讀。

第56-58行:使用EXPORT將3個(gè)標(biāo)識(shí)符申明為可被外部引用,聲明 __Vectors、__Vectors_End和__Vectors_Size具有全局屬性。

第60行:__Vectors表示向量表起始地址,DCD表示分配 1個(gè) 4字節(jié)的空間。每行 DCD都會(huì)生成一個(gè) 4字節(jié)的二進(jìn)制代碼,中斷向量表存放的實(shí)際上是中斷服務(wù)程序的入口地址。當(dāng)異常(也即是中斷事件)發(fā)生時(shí),CPU的中斷系統(tǒng)會(huì)將相應(yīng)的入口地址賦值給 PC程序計(jì)數(shù)器,之后就開始執(zhí)行中斷服務(wù)程序。在60行之后,依次定義了中斷服務(wù)程序的入口地址。

第138行:__Vectors_End為向量表結(jié)束地址。

第139行:__Vectors_Size則是向量表的大小,向量表的大小是通過__Vectors和__Vectors_End相減得到的。

上述向量表可以在《Reference manual》中找到的,筆者這里只截取了部分。

poYBAGIkYJqAea1JAAXNebKDzzY290.png

2.3復(fù)位程序

復(fù)位程序是系統(tǒng)上電后執(zhí)行的第一個(gè)程序,復(fù)位程序也是中斷程序,只是這個(gè)程序比較特殊,因此單獨(dú)提出來講解。

pYYBAGGm-OSAPptXAACAL8cSWmk466.png

第145行:定義了一個(gè)服務(wù)程序,PROC表示程序的開始。

第146行:使用EXPORT將Reset_Handler申明為可被外部引用,后面WEAK表示弱定義,如果外部文件定義了該標(biāo)號(hào)則首先引用該標(biāo)號(hào),如果外部文件沒有聲明也不會(huì)出錯(cuò)。這里表示復(fù)位程序可以由用戶在其他文件重新實(shí)現(xiàn),這種寫法在HAL庫中是很常見的。

第147-148行:表示該標(biāo)號(hào)來自外部文件,SystemInit()是一個(gè)庫函數(shù),在system_stm32f1xx.c中定義的,__main是一個(gè)標(biāo)準(zhǔn)的 C庫函數(shù),主要作用是初始化用戶堆棧,這個(gè)是由編譯器完成的,該函數(shù)最終會(huì)調(diào)用我們自己寫的main函數(shù),從而進(jìn)入C世界中。

第149行:這是一條匯編指令,表示從存儲(chǔ)器中加載SystemInit到一個(gè)寄存器R0的地址中。

第150行:匯編指令,表示跳轉(zhuǎn)到寄存器R0的地址,并根據(jù)寄存器的 LSE確定處理器的狀態(tài),還要把跳轉(zhuǎn)前的下條指令地址保存到 LR。

第151行:和149行是一個(gè)意思,表示從存儲(chǔ)器中加載__main到一個(gè)寄存器R0的地址中。

第152行:和150稍微不同,這里跳轉(zhuǎn)到至指定寄存器的地址后,不會(huì)返回。

第153行:和PROC是對(duì)應(yīng)的,表示程序的結(jié)束。

2.4中斷服務(wù)程序

我們平時(shí)要使用哪個(gè)中斷,就需要編寫相應(yīng)的中斷服務(wù)程序,只是啟動(dòng)文件把這些函數(shù)留出來了,但是內(nèi)容都是空的,真正的中斷復(fù)服務(wù)程序需要我們在外部的 C文件里面重新實(shí)現(xiàn),這里只是提前占了一個(gè)位置罷了。

pYYBAGIkYMeAUS-_AADPgbuSoi0636.png

這部分沒啥好說的,和服務(wù)程序類似的,只需要注意‘B .’語句,B表示跳轉(zhuǎn),這里跳轉(zhuǎn)到一個(gè)‘.’,即表示無線循環(huán)。

2.5堆棧初始化

堆棧初始化是由一個(gè)IF條件來實(shí)現(xiàn)的,MICROLIB的定義與否決定了堆棧的初始化方式。

這個(gè)定義是在Options->Target中設(shè)置的。

poYBAGIkYNuAYXyDAAGMgB83ta4038.png

如果沒有定義__MICROLIB,則會(huì)使用雙段存儲(chǔ)器模式,且聲明了__user_initial_stackheap 具有全局屬性,這需要開發(fā)者自己來初始化堆棧。

pYYBAGIkYOqALSSLAAEVrV020ZY840.png

這部分也沒啥講的,需要注意的是,ALIGN表示對(duì)指令或者數(shù)據(jù)存放的地址進(jìn)行對(duì)齊,缺省表示4字節(jié)對(duì)齊。

2.6其他

poYBAGGm-OqAGc6jAAASCQvb2jQ569.png

第50行:PRESERVE8用于指定當(dāng)前文件的堆棧按照 8字節(jié)對(duì)齊。

第51行:THUMB表示后面指令兼容 THUMB指令?,F(xiàn)在 Cortex-M系列的都使用 THUMB-2指令集,THUMB-2是 32位的,兼容 16位和 32位的指令,是 THUMB的超集。

3 STM32的啟動(dòng)流程實(shí)例分析

有了前面的分析,接下來就來具體看看STM32啟動(dòng)流程的具體內(nèi)容。

3.1初始化SP、PC、向量表

當(dāng)系統(tǒng)復(fù)位后,處理器首先讀取向量表中的前兩個(gè)字(8個(gè)字節(jié)),第一個(gè)字存入 MSP,第二個(gè)字為復(fù)位向量,也就是程序執(zhí)行的起始地址。

pYYBAGGm-OuAQF1vAAByWiO3WGs335.jpg

這里通過J-Flash打開hex文件。

pYYBAGIkYSWAP1kUAAK0V6w8j5Y782.png

硬件這時(shí)自動(dòng)從0x0800 0000位置處讀取數(shù)據(jù)賦給棧指針SP,然后自動(dòng)從0x0800 0004位置處讀取數(shù)據(jù)賦給PC,完成了復(fù)位操作,SP= 0x0200 0410,PC = 0x0800 0145。

初始化SP、PC緊接著就初始化向量表,如果感覺看HEX文件抽象,我們看看反匯編文件吧。

poYBAGIkYV-ACQ07AAI1iaHeQ28403.png

是不是更容易些,是不是和《Reference manual》中的向量表對(duì)應(yīng)起來了。其實(shí)看反匯編文件更好理解STM32的啟動(dòng)流程,只是有些抽象。

3.2設(shè)置系統(tǒng)時(shí)鐘

細(xì)心的朋友可能發(fā)現(xiàn),PC=0x08000145的地址是沒有對(duì)齊的。然后在反匯編文件中卻是這樣的:

pYYBAGIkYXGAF4_rAAHcuom8E2I251.png

這里是硬件自動(dòng)對(duì)齊到 0x08000144,并執(zhí)行SystemInit函數(shù)初始化系統(tǒng)時(shí)鐘。

當(dāng)然也可通過硬件調(diào)試來確認(rèn)上面的分析:

pYYBAGIkYYCAPxBeAALPXJh0jEs254.png

接下來就會(huì)進(jìn)入SystemInit函數(shù)中。

poYBAGGm-POAQf9bAADXhfB5j74822.png

SystemInit函數(shù)內(nèi)容如下:

/**
 * @brief Setup the microcontroller system
 *        Initialize the Embedded Flash Interface, the PLL and update the 
 *        SystemCoreClock variable.
 * @note  This function should be used only after reset.
 * @param None
 * @retval None
 */
void SystemInit (void)
{
 /* Reset the RCC clock configuration to the default reset state(for debug purpose) */
 /* Set HSION bit */
 RCC->CR |= 0x00000001U;

 /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */
#if !defined(STM32F105xC) && !defined(STM32F107xC)
 RCC->CFGR &= 0xF8FF0000U;
#else
 RCC->CFGR &= 0xF0FF0000U;
#endif /* STM32F105xC */  
 
 /* Reset HSEON, CSSON and PLLON bits */
 RCC->CR &= 0xFEF6FFFFU;

 /* Reset HSEBYP bit */
 RCC->CR &= 0xFFFBFFFFU;

 /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */
 RCC->CFGR &= 0xFF80FFFFU;

#if defined(STM32F105xC) || defined(STM32F107xC)
 /* Reset PLL2ON and PLL3ON bits */
 RCC->CR &= 0xEBFFFFFFU;

 /* Disable all interrupts and clear pending bits */
 RCC->CIR = 0x00FF0000U;

 /* Reset CFGR2 register */
 RCC->CFGR2 = 0x00000000U;
#elif defined(STM32F100xB) || defined(STM32F100xE)
 /* Disable all interrupts and clear pending bits */
 RCC->CIR = 0x009F0000U;

 /* Reset CFGR2 register */
 RCC->CFGR2 = 0x00000000U;    
#else
 /* Disable all interrupts and clear pending bits */
 RCC->CIR = 0x009F0000U;
#endif /* STM32F105xC */
   
#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG)
 #ifdef DATA_IN_ExtSRAM
    SystemInit_ExtMemCtl(); 
 #endif /* DATA_IN_ExtSRAM */
#endif 

#ifdef VECT_TAB_SRAM
 SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
#else
 SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
#endif 
}

前面部分是配置時(shí)鐘的,具體參考手冊吧,這里需要注意以下代碼:

#ifdef VECT_TAB_SRAM
 SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
#else
 SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
#endif 

默認(rèn)是沒有開啟VECT_TAB_SRAM,則從FLASH中啟動(dòng),VTOR寄存器存放的是中斷向量表的起始地址,在IAP升級(jí)會(huì)修改這里的偏移量,后面講解IAP升級(jí)在細(xì)講吧。

3.3初始化堆棧并進(jìn)入main

執(zhí)行指令LDR R0, =__main,然后就跳轉(zhuǎn)到__main程序段運(yùn)行,當(dāng)然這里指標(biāo)準(zhǔn)庫的__main函數(shù)。

pYYBAGIkYcWABomfAAFzw58xdfQ653.png

這中間初始化了棧區(qū)。

poYBAGIkYcqAcd5VAAHfb4agIdk973.png

這段代碼是個(gè)循環(huán)(BCC 0x08000192),實(shí)際運(yùn)行時(shí)候循環(huán)了兩次。第一次運(yùn)行的時(shí)候,讀取“加載數(shù)據(jù)段的函數(shù)”的地址并跳轉(zhuǎn)到該函數(shù)處運(yùn)行(注意加載已初始化數(shù)據(jù)段和未初始化數(shù)據(jù)段用的是同一個(gè)函數(shù));第二次運(yùn)行的時(shí)候,讀取“初始化棧的函數(shù)”的地址并跳轉(zhuǎn)到該函數(shù)處運(yùn)行。

最后就進(jìn)入C文件的main函數(shù)中,至此,啟動(dòng)過程到此結(jié)束。

最后,總結(jié)下STM32從flash的啟動(dòng)流程。

MCU上電后從0x0800 0000處讀取棧頂?shù)刂凡⒈4妫缓髲?x0800 0004讀取中斷向量表的起始地址,這就是復(fù)位程序的入口地址,接著跳轉(zhuǎn)到復(fù)位程序入口處,初始向量表,然后設(shè)置時(shí)鐘,設(shè)置堆棧,最后跳轉(zhuǎn)到C空間的main函數(shù),即進(jìn)入用戶程序。

pYYBAGIkYduAHd6EAAIBGqGQGI0878.png

審核編輯:符乾江

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2273

    文章

    10926

    瀏覽量

    357821
  • 啟動(dòng)流程
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    6504
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32F1開發(fā)指南

    這本書詳細(xì)講述了STM32HAL庫開發(fā)的配置流程,非常詳細(xì)
    發(fā)表于 01-21 15:33 ?1次下載

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核啟動(dòng)流程

    關(guān)于內(nèi)核啟動(dòng)流程涉及內(nèi)容較多而且復(fù)雜,過度的分析意義不大,因此,這里不做詳細(xì)講解,只做一個(gè)大概的介紹。初學(xué)者只做了解,有一定基礎(chǔ)的可以深入理解。內(nèi)核鏡像被uboot加載到內(nèi)存空間之后,
    發(fā)表于 01-07 09:20

    飛凌嵌入式ElfBoard ELF 1板卡-Linux內(nèi)核移植之內(nèi)核啟動(dòng)流程

    關(guān)于內(nèi)核啟動(dòng)流程涉及內(nèi)容較多而且復(fù)雜,過度的分析意義不大,因此,這里不做詳細(xì)講解,只做一個(gè)大概的介紹。初學(xué)者只做了解,有一定基礎(chǔ)的可以深入理解。 內(nèi)核鏡像被uboot加載到內(nèi)存空間之后
    發(fā)表于 01-06 09:51

    芯片封裝工藝詳細(xì)講解

    芯片封裝工藝詳細(xì)講解
    發(fā)表于 11-29 14:02 ?1次下載

    嵌入式系統(tǒng)的啟動(dòng)流程

    嵌入式系統(tǒng)的啟動(dòng)流程是一個(gè)復(fù)雜但有序的過程,它涉及從系統(tǒng)上電到操作系統(tǒng)內(nèi)核及應(yīng)用程序啟動(dòng)的多個(gè)階段。
    的頭像 發(fā)表于 10-05 17:44 ?500次閱讀

    AMD Versal自適應(yīng)SoC CPM5 QDMA的Tandem PCIe啟動(dòng)流程介紹

    本文將從硬件設(shè)計(jì)和驅(qū)動(dòng)使用兩個(gè)方面介紹基于 CPM5 QDMA 的 AMD Versal 自適應(yīng) SoC 的 Tandem 設(shè)計(jì)和啟動(dòng)流程。
    的頭像 發(fā)表于 09-18 10:07 ?691次閱讀
    AMD Versal自適應(yīng)SoC CPM5 QDMA的Tandem PCIe<b class='flag-5'>啟動(dòng)</b><b class='flag-5'>流程</b>介紹

    電感技術(shù)的講解

    詳細(xì)講解電感的原理及計(jì)算
    的頭像 發(fā)表于 09-06 02:07 ?2379次閱讀
    電感技術(shù)的<b class='flag-5'>講解</b>

    第12章-ADC采集電壓和顯示 基于STM32的ADC—電壓采集(詳細(xì)講解+HAL庫)

    第12章-ADC采集電壓和顯示 基于STM32的ADC—電壓采集(詳細(xì)講解+HAL庫)
    的頭像 發(fā)表于 08-21 16:31 ?2995次閱讀
    第12章-ADC采集電壓和顯示 基于<b class='flag-5'>STM32</b>的ADC—電壓采集(<b class='flag-5'>詳細(xì)</b><b class='flag-5'>講解</b>+HAL庫)

    啟動(dòng)啟動(dòng)時(shí),啟動(dòng)電流大,如何調(diào)整

    電網(wǎng)不穩(wěn)定。本文將詳細(xì)介紹如何調(diào)整軟啟動(dòng)器以降低啟動(dòng)電流。 一、軟啟動(dòng)器的工作原理 1.1 軟啟動(dòng)器的基本概念 軟
    的頭像 發(fā)表于 06-18 14:09 ?5211次閱讀

    什么是軟啟動(dòng)器?它有哪些優(yōu)缺點(diǎn)?

    隨著現(xiàn)代工業(yè)技術(shù)的飛速發(fā)展,電動(dòng)機(jī)作為工業(yè)生產(chǎn)中的核心動(dòng)力設(shè)備,其啟動(dòng)和運(yùn)行效率對(duì)整體生產(chǎn)流程具有重大影響。在這個(gè)過程中,軟啟動(dòng)器作為一種重要的電機(jī)控制裝置,以其獨(dú)特的優(yōu)勢逐漸受到廣泛關(guān)注。本文將對(duì)軟
    的頭像 發(fā)表于 06-13 15:29 ?4169次閱讀

    STM32啟動(dòng)腳本詳解

    我從Keil和STM32CubeIDE開始我的嵌入式開發(fā),然后慢慢過渡到只使用文本編輯器而沒有任何集成開發(fā)環(huán)境(IDE)。我一直使用這些IDE提供的啟動(dòng)文件。在這篇文章中,我將解釋如何用C++編寫
    發(fā)表于 05-31 14:17 ?1次下載

    求助,關(guān)于TRAVEO MCU閃存啟動(dòng)流程的問題求解

    我有一個(gè)關(guān)于 TRAVEO MCU 閃存啟動(dòng)流程的問題。 Q) 架構(gòu) TRM - 34.3.3 閃存啟動(dòng)流程,(6)、(8)、(9)、(10)、(11)、(12) 和 (13) 可以在
    發(fā)表于 05-30 06:25

    Linux啟動(dòng)流程基本分析

    Linux啟動(dòng)流程總的來說可以分成三個(gè)階段 Linux啟動(dòng)流程圖 ? 第一步:上電 ?在 x86 系統(tǒng)中,將 1M 空間最上面的 0xF0000 到 0xFFFFF 這 64K 映射給
    的頭像 發(fā)表于 05-11 08:49 ?781次閱讀
    Linux<b class='flag-5'>啟動(dòng)</b><b class='flag-5'>流程</b>基本分析

    STM32F7的雙bank啟動(dòng)模式有什么應(yīng)用場景?

    看了STM32中文官網(wǎng)的文件《STM32F769 雙 Bank 啟動(dòng) 》,感覺還是不太明白是這種雙bank模式的實(shí)際應(yīng)用場景,麻煩各位大神講解一下哈!謝謝啦~
    發(fā)表于 04-28 06:42

    電機(jī)初次啟動(dòng)正常,但stop后再無法正常啟動(dòng)了是怎么回事?

    我用的MCSDK 5.2.0 的庫,芯片STM32F103R8,電機(jī)每次上電第一次啟動(dòng)都能正常啟動(dòng),但停止后再重新啟動(dòng)始終無法正常啟動(dòng)(總是
    發(fā)表于 04-24 07:08