? ? 1、AHB系統(tǒng)總線分為APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速設(shè)備
? ? 2、Stm32f10x.h相當(dāng)于reg52.h(里面有基本的位操作定義),另一個(gè)為stm32f10x_conf.h專門控制外圍器件的配置,也就是開關(guān)頭文件的作用
? ? 3、HSEOsc(HighSpeedExternalOscillator)高速外部晶振,一般為8MHz,HSIRC(HighSpeedInternalRC)高速內(nèi)部RC,8MHz
? ? 4、LSEOsc(LowSpeedExternalOscillator)低速外部晶振,一般為32.768KHz,LSIRC(LowSpeedInternalRC)低速內(nèi)部晶振,大概為40KHz左右,提供看門狗時(shí)鐘和自動(dòng)喚醒單元時(shí)鐘源
? ? 5、SYSCLK時(shí)鐘源有三個(gè)來源:HSIRC、HSEOSC、PLL
? ? 6、MCO[2:0]可以提供4源不同的時(shí)鐘同步信號(hào),PA8
? ? 7、GPIO口貌似有兩個(gè)反向串聯(lián)的二極管用作鉗位二極管。
? ? 8、總線矩陣采用輪換算法對(duì)系統(tǒng)總線和DMA進(jìn)行仲裁
? ? 9、ICode總線,DCode總線、系統(tǒng)總線、DMA總線、總線矩陣、AHB/APB橋
? ? 10、在使用一個(gè)外設(shè)之前,必須設(shè)置寄存器RCC_AHBENR來打開該外設(shè)的時(shí)鐘
? ? 11、數(shù)據(jù)字節(jié)以小端存儲(chǔ)形式保存在存儲(chǔ)器中
? ? 12、內(nèi)存映射區(qū)分為8個(gè)大塊,每個(gè)塊為512MB
? ? 13、FLASH的一頁為1K(小容量和中容量),大容量是2K。
? ? 14、系統(tǒng)存儲(chǔ)區(qū)(SystemMemory)為ST公司出廠配置鎖死,用戶無法編輯,用于對(duì)FLASH區(qū)域進(jìn)行重新編程。所以我們燒寫程序務(wù)必選擇BOOT1=0,這樣通過內(nèi)嵌的自舉程序?qū)LASH進(jìn)行燒寫,比如中斷向量表和代碼
? ? 15、STM32 電壓為1.8V
? ? 16、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í)。
? ? 17、單片機(jī)復(fù)位后所有I/O口均為浮空輸入狀態(tài)
? ? 18、68個(gè)可屏蔽中斷通道,16個(gè)可編程優(yōu)先級(jí),16個(gè)內(nèi)核中斷,一共6816=84個(gè)中斷。103系列只有60個(gè)中斷,107系列才有68個(gè)中斷
? ? 19、系統(tǒng)啟動(dòng)從0x00000004開始,0x0000000保留
? ? 20、(NestedVectoredInterruptController)NVIC嵌套向量中斷控制器,分為兩種:搶先式優(yōu)先級(jí)(可嵌套)和中斷優(yōu)先級(jí)(副優(yōu)先級(jí),不能嵌套)。兩種優(yōu)先級(jí)由4位二進(jìn)制位決定。分配下來有十六種情況:
? ? 21、0號(hào)搶先優(yōu)先級(jí)的中斷,可以打斷任何中斷搶先優(yōu)先級(jí)為非0號(hào)的中斷;1號(hào)搶先優(yōu)先級(jí)的中斷,可以打斷任何中斷搶先優(yōu)先級(jí)為2、3、4號(hào)的中斷;……;構(gòu)成中斷嵌套。如果兩個(gè)中斷的搶先優(yōu)先級(jí)相同,誰先出現(xiàn),就先響應(yīng)誰,不構(gòu)成嵌套。如果一起出現(xiàn)(或掛在那里等待),就看它們2個(gè)誰的子優(yōu)先級(jí)高了,如果子優(yōu)先級(jí)也相同,就看它們的中斷向量位置了。原來中斷向量的位置是 后的決定因素?。。?!
? ? 22、上電初始化后AIRC初始化為0,為16個(gè)搶先式優(yōu)先級(jí),但是由于所有的外部通道中斷優(yōu)先級(jí)控制字PRI_n為0,所以搶先式優(yōu)先級(jí)相同,此時(shí)就不能嵌套了
? ? 23、NVI中有ISER[2](InterruptSet-EnableRegisters),ICER[2](InterruptClear-EnableRegisters),ISPR[2](InterruptSet-PendingRegisters),ICPR[2](InterruptClear-PendingRegisters),IABR[2](ActiveBitRegisters),IPR[15](InterruptPriorityRegisters)定義。其中ISER和ICER分別為中斷使能和中斷失能寄存器,都是寫1來使能/失能中斷的。為什么寫1?為什么不采用一個(gè)寄存器而用兩個(gè)寄存器來表示中斷使能/失能狀態(tài)?由于硬件,寫0比較復(fù)雜,并且可能造成其他位的狀態(tài)改變,所以用1來表示打開或者關(guān)斷是比較合理的
? ? 24、中斷標(biāo)志位需要手動(dòng)清除
? ? 25、配置外圍器件的一般步驟:1、打開端口時(shí)鐘。2、定義初始化結(jié)構(gòu)體并初始化。3、調(diào)用
? ? 26、串口的奇偶校驗(yàn):如果是奇偶校驗(yàn),那么USART_InitStructure.USART_WordLength=USART_WordLength_9b;這個(gè)數(shù)據(jù)的長(zhǎng)度必須設(shè)定為9位!
? ? 27、ADC的規(guī)則組可以自定義轉(zhuǎn)換通道順序和轉(zhuǎn)換的通道個(gè)數(shù)。在實(shí)際應(yīng)用中,有時(shí)候希望有一些特別的通道具有很高的優(yōu)先權(quán),需要在規(guī)則組進(jìn)行轉(zhuǎn)換的時(shí)候強(qiáng)制打斷,進(jìn)行另一個(gè)通道的轉(zhuǎn)換,這樣一組通道,叫做注入組。
? ? 28、定時(shí)器的輸出比較模式:Timing(凍結(jié),什么都不做,普通定時(shí)),Active(OCxREF輸出高電平有效),Inactive(OCxREF輸出低電平),Toggle(比較成功后翻轉(zhuǎn)電平)。
? ? 29、STM32的定時(shí)器從0開始計(jì)數(shù),滿足一些條件,給出標(biāo)志位(比如匹配成功、時(shí)間更新、溢出等)然后從0開始計(jì)數(shù)。這一點(diǎn)和51不同。
? ? 30、OCx=OCxREF極性
? ? 31、自動(dòng)裝載寄存器和影子寄存器:前者相當(dāng)于51當(dāng)中的溢出設(shè)定數(shù)值。而影子寄存器顧名思義是影子,就是寄存器的另一分copy。實(shí)際起作用的是影子寄存器,而程序員操縱的則是自動(dòng)裝載寄存器。如果APPE位使能,表明自動(dòng)裝載寄存器的值在下 更新事件發(fā)生后才寫入新值。否則,寫入自動(dòng)裝載寄存器的值會(huì)被立即更新到影子寄存器。
? ? 32、RCC_PCLK1Config(RCC_HCLK_Div4)CLK1的4分頻給定時(shí)器基準(zhǔn)時(shí)鐘
? ? 33、定時(shí)器配置:RCC、NVIC、GPIO(OC輸出或者PWM)、TIMx
? ? 34、通用定時(shí)器可以輸出4路不同的PWM, 定時(shí)器可以輸出4路不同的PWM外,還可以輸出3路互補(bǔ)的PWM信號(hào)(驅(qū)動(dòng)三相電機(jī)),一共有7路。這樣算出來STM32可以產(chǎn)生30路PWM=7*24*4
? ? 35、
? ??
? ? 36、 定時(shí)器時(shí)鐘源掛在了APB2上,而通用定時(shí)器掛在APB1上。AHB(72mhz)→APB1分頻器(默認(rèn)2)→APB1時(shí)鐘信號(hào)(36mhz)→倍頻器(*2倍)→通用定時(shí)器時(shí)鐘信號(hào)(72mhz)。如果APB1沒有分頻,那么通用定時(shí)器的時(shí)鐘信號(hào)頻率就直接等于APB1的時(shí)鐘頻率,沒有上述的倍頻器*2過程。TIM_SetAutoreload()用來改變PWM的頻率,TIM_SetCompare1()用來改變占空比
? ? 37、有刷電機(jī)一般啟動(dòng)力矩大一些,無刷電機(jī)啟動(dòng)力矩小,運(yùn)行起來力矩大。有刷電機(jī)采用電刷機(jī)械電流換向,而無刷電機(jī)則通過霍爾傳感器測(cè)出轉(zhuǎn)子的電流來判斷電機(jī)的運(yùn)動(dòng)位置和方向,返回給控制回路。
? ? 38、死區(qū)是必須要有的,因?yàn)檫@涉及到電路的短路問題。晶閘管在換向的時(shí)候需要死區(qū)時(shí)間來徹底關(guān)斷線路
? ? 39、剎車功能用來在控制回路出現(xiàn)問題時(shí),硬件自動(dòng)給予外部電機(jī)進(jìn)行緊急剎車制動(dòng),反應(yīng)在PWM上持續(xù)給出一個(gè)固定的占空比?(三相驅(qū)動(dòng)也是?)
? ? 40、PWM輸出 好采用PWM模式,其他的比較輸出模式相位會(huì)慢慢改變,不精準(zhǔn)
? ? 41、對(duì)FLASH的讀寫需要先解鎖后加鎖。FLASH寫0容易,寫1難。
? ? 42、 程序有兩種方式,一種為ICP(在線編程),適用于JTAG或SWD協(xié)議下的燒寫程序。另一種成為IAP(在應(yīng)用編程),適用于很多接口(USB,串口,CAN) 到存儲(chǔ)器中,IAP允許在程序運(yùn)行時(shí)重新燒寫FLASH
? ? 43、FLASH分為主存儲(chǔ)器(這里放置用戶的程序代碼)和信息塊(啟動(dòng)代碼),除此之外,還有一部分叫做系統(tǒng)存儲(chǔ)器,這一塊用戶不可操作,為ST公司出產(chǎn)后固化,為系統(tǒng)的上電自舉程序
? ? 44、FLASH在寫的時(shí)候,一定不能讀,如果有讀操作,那么將會(huì)鎖住總線
? ? 45、對(duì)FLASH操作時(shí),必須打開HIS
? ? 46、STM32有兩種看門狗(IWDG獨(dú)立看門狗《獨(dú)立時(shí)鐘》,WWDG窗口看門狗《由APB1分頻而來》)
? ? 47、SPI的的 高頻率為36MHz(fpclk/2)
? ? 48、TIM1和TIM8 定時(shí)器在輸出PWM時(shí),需要配置一下主輸出功能(CtrlPWMOutputs)才能輸出PWM。其他的通用定時(shí)器不需要這樣配置。但是TIM6和TIM7沒有PWM輸出功能。
? ? 49、Code為程序代碼部分
? ? RO-data表示程序定義的常量(如:consttemp等);
? ? RW-data表示已初始化的全局變量
? ? ZI-data表示未初始化的全局變量,以及初始化為0的變量
? ? Code,RO-data,RW-data..............flash
? ? RW-data,ZIdata...................RAM
? ? 初始化時(shí)RW-data從flash拷貝到RAM
? ? 50、STM32F103ZET6有144個(gè)引腳(Z為144),其中,可用IO口為112個(gè)(7X16=112,ABCDEFG口)