你的位置:首頁(yè) > 測(cè)試測(cè)量 > 正文
工程師實(shí)戰(zhàn)干貨分享:77條STM32知識(shí)匯總
發(fā)布時(shí)間:2019-08-13 責(zé)任編輯:xueqi
【導(dǎo)讀】以下是工程師結(jié)合自己的工作實(shí)戰(zhàn)經(jīng)驗(yàn)分享,總共有77條STM32知識(shí)匯總,建議收藏!SYSCLK時(shí)鐘源有三個(gè)來源:HSI RC、HSE OSC、PLL等。
1、 SYSCLK時(shí)鐘源有三個(gè)來源:HSI RC、HSE OSC、PLL
2、 MCO[2:0]可以提供4源不同的時(shí)鐘同步信號(hào),PA8
3、 GPIO口貌似有兩個(gè)反向串聯(lián)的二極管用作鉗位二極管。
4、 ICode總線,DCode總線、系統(tǒng)總線、DMA總線、總線矩陣、AHB/APB橋
5、在使用一個(gè)外設(shè)之前,必須設(shè)置寄存器RCC_AHBENR來打開該外設(shè)的時(shí)鐘
6、 STM32復(fù)位有三種:系統(tǒng)復(fù)位、上電復(fù)位、備份區(qū)域復(fù)位。其中系統(tǒng)復(fù)位除了RCC_CSR中的復(fù)位標(biāo)志和BKP中的數(shù)值不復(fù)位之外,其他的所有寄存器全部復(fù)位。
觸發(fā)方式例如外部復(fù)位、看門狗復(fù)位、軟件復(fù)位等;電源復(fù)位由于外部電源的上電/掉電復(fù)位或者待機(jī)模式返回。
復(fù)位除了BKP中的寄存器值不動(dòng),其他全部復(fù)位;備份區(qū)域復(fù)位的觸發(fā)源為軟件復(fù)位或者VDD和VBAT全部掉電時(shí)。
7、 (NestedVectored Interrupt Controller)NVIC嵌套向量中斷控制器,分為兩種:搶先式優(yōu)先級(jí)(可嵌套)和中斷優(yōu)先級(jí)(副優(yōu)先級(jí),不能嵌套)。
兩種優(yōu)先級(jí)由4位二進(jìn)制位決定。分配下來有十六種情況:
8、自動(dòng)裝載寄存器和影子寄存器:前者相當(dāng)于51當(dāng)中的溢出設(shè)定數(shù)值。而影子寄存器顧名思義是影子,就是寄存器的另一分copy。
實(shí)際起作用的是影子寄存器,而程序員操縱的則是自動(dòng)裝載寄存器。如果APPE位使能,表明自動(dòng)裝載寄存器的值在下一次更新事件發(fā)生后才寫入新值。
否則,寫入自動(dòng)裝載寄存器的值會(huì)被立即更新到影子寄存器。
9、
10、ARM公司只生產(chǎn)內(nèi)核標(biāo)準(zhǔn),不生產(chǎn)芯片。ST、TI這樣的公司從ARM公司那里購(gòu)買內(nèi)核,然后外加自己的總線結(jié)構(gòu)、外設(shè)、存儲(chǔ)器、始終和復(fù)位、I/O后就組成了自己的芯片。
11、電容觸摸屏原理:通過充放電的曲線不同來檢測(cè)是否被按下。 實(shí)際的實(shí)驗(yàn)過程中,TPAD可以用一塊覆銅區(qū)域來替代,通過電容的充放電常數(shù)來確定是否按下。
12、OLED,即有機(jī)發(fā)光二極管,又稱為有機(jī)電激光顯示。下圖為OLED的GRAM與屏幕的對(duì)應(yīng)表
PAGE2單獨(dú)列出來:
13、USART可以操縱SPI設(shè)備。不過最大頻率只有4.5MHz
14、使用I/O口時(shí)應(yīng)該注意的問題
15、ADC的Vref+和Vdda與VSS,Vref-一定要加高質(zhì)量的濾波電容,切靠近單片機(jī)。
16、在STM32內(nèi)部,F(xiàn)SMC的一端通過內(nèi)部高速總線AHB連接到內(nèi)核Cortex-M3,另一端則是面向擴(kuò)展存儲(chǔ)器的外部總線。
內(nèi)核對(duì)外部存儲(chǔ)器的訪問信號(hào)發(fā)送到AHB總線后,經(jīng)過FSMC轉(zhuǎn)換為符合外部存儲(chǔ)器通信規(guī)約的信號(hào),送到外部存儲(chǔ)器的相應(yīng)引腳,實(shí)現(xiàn)內(nèi)核與外部存儲(chǔ)器之間的數(shù)據(jù)交互。
17、FSMC中的DATASET和ADDSET的設(shè)置需要參看外部存儲(chǔ)器的時(shí)序圖來確定。
一般而言,DATASET指的是數(shù)據(jù)建立時(shí)間,也就是讀/寫信號(hào)開始到讀/寫信號(hào)停止(上升沿存儲(chǔ)數(shù)據(jù))的持續(xù)時(shí)間。(一般來說寫比讀快?。?。
而ADDSET指的是地址建立時(shí)間,指的是片選之后到讀/寫操作之前的時(shí)間,這是針對(duì)SRAM來說的,如果操縱的是TFT,不存在地址線,所以此時(shí)的ADDSET就是讀/寫信號(hào)結(jié)束到RS電平的轉(zhuǎn)換時(shí)間。
18、
19、
20、FSMC的三個(gè)配置寄存器:FSMC_BCRx(片選控制配置)、FSMC_BTRx(片選時(shí)序)、FSMC_BWTRx(片選寫時(shí)序)。
21、RTC時(shí)鐘配置必須要用到BKP寄存器,BKP寄存器在單片機(jī)復(fù)位、電源復(fù)位、待機(jī)喚醒模式下是不會(huì)更改值的,他的供電由VDD供電,VDD被切斷后自動(dòng)切換至外部的VBAT供電。
22、要修改BKP寄存器的值,必須取消其寫保護(hù)的標(biāo)志。BKP寄存器在上電時(shí)自動(dòng)寫保護(hù)。
23、Stm32有三種省電模式:
三種省電模式中,耗電量從上到下依次降低,待機(jī)模式的電流僅為2uA。
24、從待機(jī)模式中喚醒單片機(jī)等效于讓單片機(jī)復(fù)位,但是電源寄存器的值會(huì)有一個(gè)標(biāo)志位指示單片機(jī)是被喚醒的,不是被復(fù)位的。
25、ADC的時(shí)鐘不要超過14MHz,否則轉(zhuǎn)換精度會(huì)下降。最大轉(zhuǎn)換速率為1MHz,即轉(zhuǎn)換周期為1us(14MHz,采樣周期為1.5個(gè)ADC時(shí)鐘)
26、Tcovn=采樣時(shí)間+12.5個(gè)周期。采樣時(shí)間盡量選長(zhǎng)一點(diǎn),這樣精度高一些,但是轉(zhuǎn)換速率下降,這也是有利必有弊。
27、
28、拿ARM7TDMI來說,T代表Thumb指令集,D是說支持JTAG調(diào)試(Debugging),M意指快速乘法器,I則對(duì)應(yīng)一個(gè)嵌入式ICE模塊。
29、MMU作為嵌入式處理器與應(yīng)用處理器的分水嶺標(biāo)志à具有內(nèi)存管理單元的嵌入式處理器可以定位為應(yīng)用處理器。
這么說M系列和A系列的處理器的區(qū)別在于A系列的處理器具有MMU單元可以進(jìn)行內(nèi)存模塊的管理。
30、ARM處理器有兩種狀態(tài):ARM狀態(tài)和Thumb狀態(tài)。
31、這張圖說明了一切:Thumb2指令集做了一件很偉大的事情:將16位和32位的指令集融為一體,兼容性非常強(qiáng)?。ㄟ@么說CM3不支持某些32位ARM指令集??)
32、
33、MSP是系統(tǒng)復(fù)位后使用的堆棧指針,PSP由用戶的代碼使用。兩個(gè)堆棧指針為4字節(jié)對(duì)齊??!
34、在ARM編程領(lǐng)域中,凡是打斷程序運(yùn)行的事件,統(tǒng)稱為異常(exception)。
35、因?yàn)榇嬖贚R(鏈接寄存器),所以可支持1級(jí)的子程序調(diào)用而不用壓棧到內(nèi)存,大大提高了運(yùn)行速度。---à這就是說,我們?cè)诰幊痰臅r(shí)候,一級(jí)調(diào)用是不會(huì)耗費(fèi)太多時(shí)間的,除非是二級(jí)調(diào)用!
36、處理器有兩種操作模式:handler模式和線程模式。
處理器也有兩種特權(quán)分級(jí):特權(quán)級(jí)和用戶級(jí)。 這張圖說明了一切:復(fù)位進(jìn)入特權(quán)級(jí)線程模式,如果有異常,進(jìn)入特權(quán)級(jí)的handler模式處理異?;蛑袛嗬蹋缓蠓祷刂撂貦?quán)級(jí)線程模式。通過修改CONTROL寄存器可以進(jìn)入用戶級(jí)線程模式。
37、兩個(gè)高級(jí)定時(shí)器TIM1和TIM8是掛接在APB1總線上
38、STM32的外部中斷是以組來區(qū)分的,也就是說PA0,PB0,PC0單片機(jī)是無(wú)法區(qū)分其中哪個(gè)觸發(fā)的中斷à均為EXIT0線中斷服務(wù)例程。
所以,外部中斷支持16路的中斷分辨率。從另一個(gè)方面來講,我們可以設(shè)置GPIO_EXTILineConfig(GPIO_PortSourceGPIOx, GPIO_PinSourcex);來開通中斷線實(shí)現(xiàn)組內(nèi)的不同中斷。
39、DAC有兩個(gè)寄存器,一個(gè)是DHR(Data HoldingRegister)數(shù)據(jù)保持寄存器,一個(gè)DOR(Data Output Register)數(shù)據(jù)輸出寄存器。
真正起作用的是DOR寄存器,該寄存器把值給數(shù)模轉(zhuǎn)換發(fā)生單元輸出以VREF+為參考電壓的電壓值。
如果是硬件觸發(fā)轉(zhuǎn)換,系統(tǒng)將在1個(gè)ABP時(shí)鐘周期后把值給DOR,如果是軟件觸發(fā)轉(zhuǎn)換,時(shí)間為3個(gè)APB時(shí)鐘周期。然后,均等待Tsetting時(shí)間(Typical為3us,Max為4us)后真正輸出電壓值。
40、DAC分8位模式和12位模式,其中后者可以選擇左右對(duì)齊
41、DMA仲裁器分為軟件和硬件兩種。軟件部分分為4個(gè)等級(jí),分別是很高優(yōu)先級(jí)、高優(yōu)先級(jí)、中等、低。硬件部分由通道的大小來決定優(yōu)先級(jí),越低優(yōu)先級(jí)越高。
42、DMA有一個(gè)實(shí)時(shí)的傳輸數(shù)據(jù)量寄存器叫做DMA_CNDTR,最大值為65535,存放的是當(dāng)前傳輸所要傳輸?shù)臄?shù)據(jù)量。當(dāng)數(shù)據(jù)量變?yōu)?時(shí),表明傳輸完成。
43、CAN總線(ControllerArea Network)。CAN控制器根據(jù)兩根線上的電位差來判斷總線電平,總線電平又分為顯性電平和隱性電平,二者必居其一。
44、CAN總線具有6個(gè)特點(diǎn):
1:多主控制
2:系統(tǒng)若軟性
3、通訊速度較快,通訊距離較遠(yuǎn)
4、具有錯(cuò)誤檢測(cè)、錯(cuò)誤通知和錯(cuò)誤恢復(fù)功能
5、故障封閉,當(dāng)總線上的設(shè)備發(fā)生連續(xù)故障錯(cuò)誤時(shí),CAN控制器會(huì)把改控制器踢出總線
6、連接節(jié)點(diǎn)多。理論上可以無(wú)限制加載,但是受到時(shí)間延遲和電氣負(fù)載的限制,實(shí)際數(shù)目是有限制的。降低傳輸速度可以適當(dāng)增加可掛接負(fù)載個(gè)數(shù)。
45、CAN協(xié)議有兩個(gè)標(biāo)準(zhǔn),ISO11898(針對(duì)125kbps~1Mbps的高速速率)和ISO11519-2(125kbps以下的低速速率)
47、CAN協(xié)議的有5種類型的幀:數(shù)據(jù)幀、遙控幀、錯(cuò)誤幀、過載幀、幀間隔。其中前兩種幀有標(biāo)準(zhǔn)格式(11位ID)和擴(kuò)展格式(29位ID)。
48、數(shù)據(jù)幀構(gòu)成:
(1) 幀起始。 表示數(shù)據(jù)開的段幀起始。
(2) 仲裁段。 表示該幀優(yōu)先級(jí)的仲裁段。
(3) 控制段。 表示數(shù)據(jù)的字節(jié)及保留位段。
(4) 數(shù)據(jù)段。 數(shù)據(jù)的內(nèi)容,一幀可發(fā)送0~8個(gè)字節(jié)的數(shù)據(jù)。
(5) CRC段。 檢查幀的傳輸錯(cuò)誤段。
(6) ACK段。 表示確認(rèn)正常接收的段。
(7) 幀結(jié)束。 表示數(shù)據(jù)的段幀結(jié)束。
49、Stm32f103系列只有一個(gè)CAN控制器,有3個(gè)發(fā)送郵箱和3級(jí)深度的2個(gè)FIFO,14個(gè)過濾組器。
50、STM32的每個(gè)過濾組可以配置為1個(gè)32位過濾器和2個(gè)16位過濾器。除此之外,還可以配置為屏蔽位模式(ID+屏蔽)和標(biāo)識(shí)符列表(ID和屏蔽寄存器均用來做ID寄存器)模式。
51、CAN接收到有效報(bào)文被放置在3級(jí)郵箱深度的FIFO中,F(xiàn)IFO完全由硬件來管理。
52、 CAN總線的波特率
53、觸摸屏一般分為電阻式觸摸屏和電容式觸摸屏。前者檢測(cè)觸摸的位置原理是利用觸摸屏控制器中的A/D轉(zhuǎn)換器經(jīng)過兩次A/D讀值后得出X和Y的坐標(biāo)值。注意:這個(gè)X和Y的值是相對(duì)于觸摸屏的,而非LCD屏。
所以在這里需要注意兩個(gè)概念:觸摸屏和LCD屏。這是兩個(gè)不同的概念,也是兩個(gè)不同的物理結(jié)構(gòu),其中電阻觸摸屏是由上下兩個(gè)導(dǎo)電層中間夾著一層非常薄的透明隔層;而LCD就是指顯示屏。
54、電阻觸摸屏有X和Y、X和Y的比例因子、坐標(biāo)軸方向、偏移量。LCD也有自己的這些參數(shù)。兩者完全不相干,所以在定位的時(shí)候需要進(jìn)行坐標(biāo)轉(zhuǎn)換。公式:
通過對(duì)屏幕的四個(gè)點(diǎn)進(jìn)行校準(zhǔn),得到四元一次方程,求解即可。
55、NEC協(xié)議的數(shù)據(jù)幀格式:同步碼頭、地址碼、地址反碼、控制碼、控制反碼。同步碼由一個(gè)9ms的低電平和一個(gè)4.5ms的高電平組成,地址碼、地址反碼、控制碼、控制反碼均是8位數(shù)據(jù)格式。按照低位在前,高位在后的順序發(fā)送。
56、NEC協(xié)議在發(fā)送的時(shí)候,會(huì)有560us的38KHz的載波信號(hào),而在接收的時(shí)候這部分載波信號(hào)被認(rèn)定為低電平,而剩余的(2.25ms-650us)的邏輯“1”和(1.12ms-650us)的邏輯“0”時(shí)間則被認(rèn)定為高電平。
57、在單位時(shí)間內(nèi)的位移被定義為速度,速度有線速度和角速度之分,分別對(duì)應(yīng)兩種傳感器測(cè)量這兩種不同的速度:線速度傳感器(加速度計(jì))、角速度傳感器(陀螺儀)。
前者多應(yīng)用在靜態(tài)或者低慢速運(yùn)動(dòng)中的姿態(tài)求解,后者多應(yīng)用在動(dòng)態(tài)運(yùn)動(dòng)中姿態(tài)求解。
58、根據(jù)標(biāo)準(zhǔn)約定,零加速度(或零 G 準(zhǔn)位)通常定義為相當(dāng)于最大輸出值(12 位輸出為 4096,10 位輸出為 1024 等)一半的輸出。對(duì)于提供 12 位輸出的加速度計(jì),零 G 準(zhǔn)位將等于 2048。
輸出大于 2048 表示正加速度。輸出小于 2048 表示負(fù)加速度。加速度的數(shù)量通常用單位 g (1g = 9.8m/s2 = 重力加速度)表示。
通過確定測(cè)量的輸出與零 G 準(zhǔn)位之間的差值,然后除以加速度計(jì)的靈敏度(用計(jì)數(shù)/g 或 LSB/g表示)來計(jì)算加速度。
對(duì)于提供 12 位數(shù)字輸出的 2g 加速度計(jì),靈敏度為 819 計(jì)數(shù)/g 或 819 LSB/g。加速度等于:a = (Aout - 2048)/(819 計(jì)數(shù)/g),單位為 g。
59、加速度計(jì)測(cè)得的加速度的方向和設(shè)備設(shè)定的坐標(biāo)系是相反的,因?yàn)樵肀砻髟跍y(cè)量力的時(shí)候采用的是非慣性系參考系,而我們高中時(shí)代研究的坐標(biāo)系是慣性系參考系,前者在物體進(jìn)行運(yùn)動(dòng)產(chǎn)生加速度時(shí),假想一個(gè)與速度方向相反的力作用在物體上,這個(gè)力就是慣性力;后者我們說不存在慣性力,只說存在慣性,因?yàn)樵趹T性坐標(biāo)系中,我們研究的是物體,而非坐標(biāo)系(即假定坐標(biāo)系相對(duì)地球靜止),當(dāng)我們把坐標(biāo)系也考慮在內(nèi)時(shí),當(dāng)坐標(biāo)系運(yùn)動(dòng),就產(chǎn)生了慣性力f,這種力作用會(huì)假想作用在物體上,只是與運(yùn)動(dòng)方向相反。
60、由上可知,加速度計(jì)的本質(zhì)是測(cè)量力而非加速度。
61、NRF24L01工作在2.4GHz的頻段,由于頻段頻率較高,所以傳輸速率較快,為2Mbps。
62、STM32的閃存模塊由:主存儲(chǔ)器、信息塊和閃存存儲(chǔ)器接口寄存器3個(gè)部分構(gòu)成。
主存儲(chǔ)器用來存放代碼和const常量;信息塊由兩個(gè)部分組成:?jiǎn)?dòng)程序代碼、用戶選擇字節(jié)。
其中啟動(dòng)程序代碼為ST公司自帶的啟動(dòng)程序,用于串口下載。
最后的閃存存儲(chǔ)器接口寄存器用于控制整個(gè)對(duì)閃存區(qū)域的操作。
63、CPU的運(yùn)行速度比FLASH的操作速度快的多,一般FLASH的最快訪問速度≤24Mhz。如果CPU的速度超過這個(gè)頻率,那么在讀取FLASH的時(shí)候必須加入等待時(shí)間(FLASH_ACR設(shè)置)。
64、FLASH編程時(shí),寫入必須為半字(16位)。并且在寫入的時(shí)候必須保證所寫區(qū)域的數(shù)據(jù)必須為0xFFFF。
65、STM32的FSMC有HADDR[27:0],其中[27:26]用來選擇BANK區(qū)域的4個(gè)不同塊。
剩下的[25:0]則用來連接外部存儲(chǔ)區(qū)域的地址線FSMC_A[25:0]。
如果數(shù)據(jù)寬度是8bit,此時(shí)的HADDR[25:0]和FSMC_A[25:0]是完全對(duì)應(yīng)的。
如果數(shù)據(jù)寬度是16bit,此時(shí)的HADDR[25:1]和FSMC_A[24:0]是對(duì)應(yīng)起來的。
需要注意:無(wú)論數(shù)據(jù)寬度是多少,外部的FSMC_A[0]和A[0]總是對(duì)應(yīng)的。
66、關(guān)于LB和UB的信號(hào)控制是由硬件自動(dòng)控制的,當(dāng)AHB的數(shù)據(jù)寬度小于外部存儲(chǔ)器的數(shù)據(jù)寬度時(shí),此時(shí)LB和UB的控制信號(hào)自動(dòng)產(chǎn)生(比如字節(jié)讀取/寫入16bit的外部存儲(chǔ)器)。
67、 __attribute__ (函數(shù)屬性、變量屬性、類型屬性等)。如果在使用SRAM時(shí),可以采用u32 sram_array[xx] __attribute__ ((at(0x68000000))代表將外部SRAM的空間全部給了sram_array這個(gè)變量,他具有在at0x68000000這個(gè)地址的屬性。
往里面寫值就直接在SRAM里面寫值。
68、
內(nèi)存管理有一種方式叫做分塊式內(nèi)存管理。
注意表中的分配方向,從頂?shù)降住C恳豁?xiàng)對(duì)應(yīng)一個(gè)內(nèi)存塊。里面的數(shù)值代表了內(nèi)存池的狀態(tài):如果為0,表示該內(nèi)存沒有被分配;如果非0,那么數(shù)值的大小就表示了該塊內(nèi)存被連續(xù)占用的內(nèi)存數(shù)。
比如說數(shù)值為20,意思是包括該項(xiàng)在內(nèi)的內(nèi)存塊被連續(xù)占用了20塊分給了指針。
69、SD卡的分類:
一般的SD卡支持兩種傳輸模式:SD卡模式(SDIO)、SPI模式。顯然前面一種是專用模式,所以速度比較快。
70、常用的漢字內(nèi)碼系統(tǒng)有GB2313、GB13000、GBK、BIG5(繁體)。其中GB2313只有幾千個(gè)漢字,而GBK則有2萬(wàn)多漢字。
71、要顯示漢字,采用的方式如果用點(diǎn)陣的形式是不可取的,因?yàn)檫@無(wú)法查找漢字。采用的方式就是內(nèi)碼系統(tǒng)。
GBK標(biāo)準(zhǔn)中,一個(gè)漢字對(duì)應(yīng)2個(gè)字節(jié):前者稱為區(qū)(0x81~0xFE)后者為(0x40~0x7E)和(0x80~0xFE)。前者有126個(gè)區(qū),后者有190,那么可以顯示的漢字?jǐn)?shù)量有126*190=23940個(gè)。
根據(jù)這兩個(gè)值用來查找字庫(kù),字庫(kù)中存放的還是每個(gè)漢字的點(diǎn)陣數(shù)據(jù)。
這個(gè)字庫(kù)非常大,如果是16*16的字體,那么一個(gè)字體就需要32個(gè)字節(jié),如此說來需要23940*32=748K的空間,可見非常大,所以需要外部的Flash來存儲(chǔ)這個(gè)字庫(kù)。
72、由于漢字內(nèi)碼系統(tǒng)不具有國(guó)際通用性,但是Unicode幾乎把所有的語(yǔ)言都放置進(jìn)來,這樣在單片機(jī)中操作漢字時(shí),就需要將GBK和Unicode轉(zhuǎn)化。
尤其是在FATFS中,創(chuàng)建中文文件名和讀取中文文件信息時(shí)需要將Unicode換轉(zhuǎn)為GBK后再進(jìn)行修改操作,再反轉(zhuǎn)換成Unicode保存修改。
這么說,兩者的存在是由于標(biāo)準(zhǔn)的不統(tǒng)一,并且Unicode中只有6064個(gè)漢字,而GBK顯然是一種漢字?jǐn)U展。
73、BMP圖片編碼的順序是從左到右,從下到上。
74、VS1053是一款高性能的數(shù)字音頻解碼芯片,從SD卡中將mp3等音樂音頻文件通過SPI送給VS1053后,由其進(jìn)行音頻解碼,輸出音樂給耳機(jī)。
耳機(jī)驅(qū)動(dòng)可以采用TDA1308芯片,這款芯片為AB類耳機(jī)驅(qū)動(dòng)芯片。
75、IAP(In Application Programming)在應(yīng)用編程是為了后期開發(fā)更新程序方便而提出的概念。具體的實(shí)現(xiàn)方法如下圖所示:
在普通編程中,flash中的code是通過JTAG和ISP等工具下載到單片機(jī)中。
而在IAP編程中,flash被分區(qū)為A和B兩個(gè)區(qū)域,A區(qū)域只允許用USB/USART等方式下載,此區(qū)域作為更新B區(qū)域的代碼用。
B區(qū)域則是用戶的code區(qū)域,真正的代碼在這里被執(zhí)行,放置的就是app。
上圖表示STM32正常運(yùn)行的流程圖,可以看到上電復(fù)位后系統(tǒng)從0x80000004處開始運(yùn)行程序,這里放置的是復(fù)位中斷向量,然后跳轉(zhuǎn)至復(fù)位中斷程序入口后再跳轉(zhuǎn)至main函數(shù)運(yùn)行用戶的程序。
上圖表示加入IAP后的STM32程序運(yùn)行流程圖。可以看到上電復(fù)位后跳到IAP程序的main函數(shù)處運(yùn)行IAP過程(這個(gè)過程就是把下面灰底色塊的程序代碼燒進(jìn)B區(qū)域à代碼更新)。
后面的過程和STM32正常運(yùn)行一樣,如果出現(xiàn)中斷請(qǐng)求,還是跳轉(zhuǎn)到A區(qū)域中的中斷向量表中,然后再跳轉(zhuǎn)到B區(qū)域的中斷服務(wù)入口。
76、USB有四根線,VCC、GND、D+、D-。在USB主機(jī)上,D+和D-均通過一個(gè)15K的電阻接地,這樣兩條線均為低電平。
在USB設(shè)備中,對(duì)于高速設(shè)備會(huì)在D+通過一個(gè)1.5K的電阻接到VCC,而低俗設(shè)備會(huì)在D-通過一個(gè)1.5K的電阻接到VCC。
這樣主機(jī)就可以通過D+和D-的高電平的到來來檢測(cè)是否有設(shè)備接入,并且識(shí)別高低速設(shè)備。
77、UCOSII是一種實(shí)時(shí)操作系統(tǒng),具有執(zhí)行效率高、占有空間?。ㄗ钚?nèi)核2KB)、實(shí)施性能優(yōu)良、擴(kuò)展性強(qiáng)和移植性強(qiáng)等優(yōu)點(diǎn)。
UCOS具有多任務(wù)并發(fā)工作的特點(diǎn)(注意,任何時(shí)候只有一個(gè)任務(wù)能夠占用CPU。并發(fā)只是任務(wù)輪流占用CPU而不是同時(shí)工作)。
最大支持255個(gè)任務(wù)并發(fā)工作。
特別推薦
- 復(fù)雜的RF PCB焊接該如何確保恰到好處?
- 電源效率測(cè)試
- 科技的洪荒之力:可穿戴設(shè)備中的MEMS傳感器 助運(yùn)動(dòng)員爭(zhēng)金奪銀
- 輕松滿足檢測(cè)距離,勞易測(cè)新型電感式傳感器IS 200系列
- Aigtek推出ATA-400系列高壓功率放大器
- TDK推出使用壽命更長(zhǎng)和熱點(diǎn)溫度更高的全新氮?dú)馓畛淙嘟涣鳛V波電容器
- 博瑞集信推出低噪聲、高增益平坦度、低功耗 | 低噪聲放大器系列
技術(shù)文章更多>>
- 如何選擇和應(yīng)用機(jī)電繼電器實(shí)現(xiàn)多功能且可靠的信號(hào)切換
- 基于APM32F411的移動(dòng)電源控制板應(yīng)用方案
- 數(shù)字儀表與模擬儀表:它們有何區(qū)別?
- 聚焦制造業(yè)企業(yè)貨量旺季“急難愁盼”,跨越速運(yùn)打出紓困“連招”
- 選擇LDO時(shí)的主要考慮因素和挑戰(zhàn)
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
光收發(fā)器
光通訊器件
光纖連接器
軌道交通
國(guó)防航空
過流保護(hù)器
過熱保護(hù)
過壓保護(hù)
焊接設(shè)備
焊錫焊膏
恒溫振蕩器
恒壓變壓器
恒壓穩(wěn)壓器
紅外收發(fā)器
紅外線加熱
厚膜電阻
互連技術(shù)
滑動(dòng)分壓器
滑動(dòng)開關(guān)
輝曄
混合保護(hù)器
混合動(dòng)力汽車
混頻器
霍爾傳感器
機(jī)電元件
基創(chuàng)卓越
激光二極管
激光器
計(jì)步器
繼電器