30條超詳細STM32單片機學(xué)習(xí)筆記
2019-07-12 16:52:25閱讀量:2061
1、AHB系統(tǒng)總線分為APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速設(shè)備
2、Stm32f10x.h相當于reg52.h(里面有基本的位操作定義),另一個為stm32f10x_conf.h專門控制外圍器件的配置,也就是開關(guān)頭文件的作用
3、 HSE Osc(High Speed External Oscillator)高速外部晶振,一般為8MHz,HSI RC(High Speed InternalRC)高速內(nèi)部RC,8MHz
4、 LSE Osc(Low Speed External Oscillator)低速外部晶振,一般為32.768KHz,LSI RC(Low Speed InternalRC)低速內(nèi)部晶振,大概為40KHz左右,提供看門狗時鐘和自動喚醒單元時鐘源
5、 SYSCLK時鐘源有三個來源:HSI RC、HSE OSC、PLL
6、 MCO[2:0]可以提供4源不同的時鐘同步信號,PA8
7、 GPIO口貌似有兩個反向串聯(lián)的二極管用作鉗位二極管。
8、 總線矩陣采用輪換算法對系統(tǒng)總線和DMA進行仲裁
9、 ICode總線,DCode總線、系統(tǒng)總線、DMA總線、總線矩陣、AHB/APB橋
10、在使用一個外設(shè)之前,必須設(shè)置寄存器RCC_AHBENR來打開該外設(shè)的時鐘
11、數(shù)據(jù)字節(jié)以小端存儲形式保存在存儲器中
12、 內(nèi)存映射區(qū)分為8個大塊,每個塊為512MB
13、 FLASH的一頁為1K(小容量和中容量),大容量是2K。
14、 系統(tǒng)存儲區(qū)(SystemMemory)為ST公司出廠配置鎖死,用戶無法編輯,用于對FLASH區(qū)域進行重新編程。所以我們燒寫程序務(wù)必選擇BOOT1 = 0,這樣通過內(nèi)嵌的自舉程序?qū)LASH進行燒寫,比如中斷向量表和代碼
15、 STM32核心電壓為1.8V
16、 STM32復(fù)位有三種:系統(tǒng)復(fù)位、上電復(fù)位、備份區(qū)域復(fù)位。其中系統(tǒng)復(fù)位除了RCC_CSR中的復(fù)位標志和BKP中的數(shù)值不復(fù)位之外,其他的所有寄存器全部復(fù)位。觸發(fā)方式例如外部復(fù)位、看門狗復(fù)位、軟件復(fù)位等;電源復(fù)位由于外部電源的上電/掉電復(fù)位或者待機模式返回。復(fù)位除了BKP中的寄存器值不動,其他全部復(fù)位;備份區(qū)域復(fù)位的觸發(fā)源為軟件復(fù)位或者VDD和VBAT全部掉電時。
17、 單片機復(fù)位后所有I/O口均為浮空輸入狀態(tài)
18、 68個可屏蔽中斷通道,16個可編程優(yōu)先級,16個內(nèi)核中斷,一共68+16=84個中斷。103系列只有60個中斷,107系列才有68個中斷
19、 系統(tǒng)啟動從0x00000004開始,0x000 0000保留
20、 (NestedVectored Interrupt Controller)NVIC嵌套向量中斷控制器,分為兩種:搶先式優(yōu)先級(可嵌套)和中斷優(yōu)先級(副優(yōu)先級,不能嵌套)。兩種優(yōu)先級由4位二進制位決定。分配下來有十六種情況:
21、0號搶先優(yōu)先級的中斷,可以打斷任何中斷搶先優(yōu)先級為非0號的中斷;1號搶先優(yōu)先級的中斷,可以打斷任何中斷搶先優(yōu)先級為2、3、4號的中斷;……;構(gòu)成中斷嵌套。如果兩個中斷的搶先優(yōu)先級相同,誰先出現(xiàn),就先響應(yīng)誰,不構(gòu)成嵌套。如果一起出現(xiàn)(或掛在那里等待),就看它們2個誰的子優(yōu)先級高了,如果子優(yōu)先級也相同,就看它們的中斷向量位置了。原來中斷向量的位置是最后的決定因素!?。?!
22、 上電初始化后AIRC初始化為0,為16個搶先式優(yōu)先級,但是由于所有的外部通道中斷優(yōu)先級控制字PRI_n為0,所以搶先式優(yōu)先級相同,此時就不能嵌套了
23、 NVI中有ISER[2](Interrupt Set-Enable Registers),ICER[2](Interrupt Clear-Enable Registers),ISPR[2](Interrupt Set-Pending Registers),ICPR[2](Interrupt Clear-Pending Registers),IABR[2](Active Bit Registers),IPR[15](InterruptPriority Registers)定義。其中ISER和ICER分別為中斷使能和中斷失能寄存器,都是寫1來使能/失能中斷的。為什么寫1?為什么不采用一個寄存器而用兩個寄存器來表示中斷使能/失能狀態(tài)?由于硬件,寫0比較復(fù)雜,并且可能造成其他位的狀態(tài)改變,所以用1來表示打開或者關(guān)斷是比較合理的
24、 中斷標志位需要手動清除
25、 配置外圍器件的一般步驟:1、打開端口時鐘。2、定義初始化結(jié)構(gòu)體并初始化。3、調(diào)用
26、串口的奇偶校驗:如果是奇偶校驗,那么USART_InitStructure.USART_WordLength= USART_WordLength_9b;這個數(shù)據(jù)的長度必須設(shè)定為9位!
27、ADC的規(guī)則組可以自定義轉(zhuǎn)換通道順序和轉(zhuǎn)換的通道個數(shù)。在實際應(yīng)用中,有時候希望有一些特別的通道具有很高的優(yōu)先權(quán),需要在規(guī)則組進行轉(zhuǎn)換的時候強制打斷,進行另一個通道的轉(zhuǎn)換,這樣一組通道,叫做注入組。
28、定時器的輸出比較模式:Timing(凍結(jié),什么都不做,普通定時),Active(OCxREF輸出高電平有效),Inactive(OCxREF輸出低電平),Toggle(比較成功后翻轉(zhuǎn)電平)。
29、STM32的定時器從0開始計數(shù),滿足一些條件,給出標志位(比如匹配成功、時間更新、溢出等)然后從0開始計數(shù)。這一點和51不同。
30、OCx=OCxREF+極性
2、Stm32f10x.h相當于reg52.h(里面有基本的位操作定義),另一個為stm32f10x_conf.h專門控制外圍器件的配置,也就是開關(guān)頭文件的作用
3、 HSE Osc(High Speed External Oscillator)高速外部晶振,一般為8MHz,HSI RC(High Speed InternalRC)高速內(nèi)部RC,8MHz
4、 LSE Osc(Low Speed External Oscillator)低速外部晶振,一般為32.768KHz,LSI RC(Low Speed InternalRC)低速內(nèi)部晶振,大概為40KHz左右,提供看門狗時鐘和自動喚醒單元時鐘源
5、 SYSCLK時鐘源有三個來源:HSI RC、HSE OSC、PLL

6、 MCO[2:0]可以提供4源不同的時鐘同步信號,PA8
7、 GPIO口貌似有兩個反向串聯(lián)的二極管用作鉗位二極管。

8、 總線矩陣采用輪換算法對系統(tǒng)總線和DMA進行仲裁
9、 ICode總線,DCode總線、系統(tǒng)總線、DMA總線、總線矩陣、AHB/APB橋
10、在使用一個外設(shè)之前,必須設(shè)置寄存器RCC_AHBENR來打開該外設(shè)的時鐘
11、數(shù)據(jù)字節(jié)以小端存儲形式保存在存儲器中
12、 內(nèi)存映射區(qū)分為8個大塊,每個塊為512MB
13、 FLASH的一頁為1K(小容量和中容量),大容量是2K。
14、 系統(tǒng)存儲區(qū)(SystemMemory)為ST公司出廠配置鎖死,用戶無法編輯,用于對FLASH區(qū)域進行重新編程。所以我們燒寫程序務(wù)必選擇BOOT1 = 0,這樣通過內(nèi)嵌的自舉程序?qū)LASH進行燒寫,比如中斷向量表和代碼
15、 STM32核心電壓為1.8V
16、 STM32復(fù)位有三種:系統(tǒng)復(fù)位、上電復(fù)位、備份區(qū)域復(fù)位。其中系統(tǒng)復(fù)位除了RCC_CSR中的復(fù)位標志和BKP中的數(shù)值不復(fù)位之外,其他的所有寄存器全部復(fù)位。觸發(fā)方式例如外部復(fù)位、看門狗復(fù)位、軟件復(fù)位等;電源復(fù)位由于外部電源的上電/掉電復(fù)位或者待機模式返回。復(fù)位除了BKP中的寄存器值不動,其他全部復(fù)位;備份區(qū)域復(fù)位的觸發(fā)源為軟件復(fù)位或者VDD和VBAT全部掉電時。
17、 單片機復(fù)位后所有I/O口均為浮空輸入狀態(tài)
18、 68個可屏蔽中斷通道,16個可編程優(yōu)先級,16個內(nèi)核中斷,一共68+16=84個中斷。103系列只有60個中斷,107系列才有68個中斷
19、 系統(tǒng)啟動從0x00000004開始,0x000 0000保留
20、 (NestedVectored Interrupt Controller)NVIC嵌套向量中斷控制器,分為兩種:搶先式優(yōu)先級(可嵌套)和中斷優(yōu)先級(副優(yōu)先級,不能嵌套)。兩種優(yōu)先級由4位二進制位決定。分配下來有十六種情況:

21、0號搶先優(yōu)先級的中斷,可以打斷任何中斷搶先優(yōu)先級為非0號的中斷;1號搶先優(yōu)先級的中斷,可以打斷任何中斷搶先優(yōu)先級為2、3、4號的中斷;……;構(gòu)成中斷嵌套。如果兩個中斷的搶先優(yōu)先級相同,誰先出現(xiàn),就先響應(yīng)誰,不構(gòu)成嵌套。如果一起出現(xiàn)(或掛在那里等待),就看它們2個誰的子優(yōu)先級高了,如果子優(yōu)先級也相同,就看它們的中斷向量位置了。原來中斷向量的位置是最后的決定因素!?。?!
22、 上電初始化后AIRC初始化為0,為16個搶先式優(yōu)先級,但是由于所有的外部通道中斷優(yōu)先級控制字PRI_n為0,所以搶先式優(yōu)先級相同,此時就不能嵌套了
23、 NVI中有ISER[2](Interrupt Set-Enable Registers),ICER[2](Interrupt Clear-Enable Registers),ISPR[2](Interrupt Set-Pending Registers),ICPR[2](Interrupt Clear-Pending Registers),IABR[2](Active Bit Registers),IPR[15](InterruptPriority Registers)定義。其中ISER和ICER分別為中斷使能和中斷失能寄存器,都是寫1來使能/失能中斷的。為什么寫1?為什么不采用一個寄存器而用兩個寄存器來表示中斷使能/失能狀態(tài)?由于硬件,寫0比較復(fù)雜,并且可能造成其他位的狀態(tài)改變,所以用1來表示打開或者關(guān)斷是比較合理的
24、 中斷標志位需要手動清除
25、 配置外圍器件的一般步驟:1、打開端口時鐘。2、定義初始化結(jié)構(gòu)體并初始化。3、調(diào)用
26、串口的奇偶校驗:如果是奇偶校驗,那么USART_InitStructure.USART_WordLength= USART_WordLength_9b;這個數(shù)據(jù)的長度必須設(shè)定為9位!
27、ADC的規(guī)則組可以自定義轉(zhuǎn)換通道順序和轉(zhuǎn)換的通道個數(shù)。在實際應(yīng)用中,有時候希望有一些特別的通道具有很高的優(yōu)先權(quán),需要在規(guī)則組進行轉(zhuǎn)換的時候強制打斷,進行另一個通道的轉(zhuǎn)換,這樣一組通道,叫做注入組。
28、定時器的輸出比較模式:Timing(凍結(jié),什么都不做,普通定時),Active(OCxREF輸出高電平有效),Inactive(OCxREF輸出低電平),Toggle(比較成功后翻轉(zhuǎn)電平)。
29、STM32的定時器從0開始計數(shù),滿足一些條件,給出標志位(比如匹配成功、時間更新、溢出等)然后從0開始計數(shù)。這一點和51不同。
30、OCx=OCxREF+極性
【內(nèi)容聲明】本文刊載的所有內(nèi)容,包括文字、圖片、音頻、視頻、軟件、程序、以及網(wǎng)頁版式設(shè)計等均在網(wǎng)上搜集。本文提供的內(nèi)容或服務(wù)僅用于個人學(xué)習(xí)、研究或欣賞,以及其他非商業(yè)性或非盈利性用途,本網(wǎng)站不承擔任何法律責(zé)任。如涉及版權(quán)問題,請及時通知本網(wǎng)站刪除。

熱門物料
型號
價格
L7805CV-DG/線性穩(wěn)壓器(LDO) | 0.5401 | |
AMS1117-3.3/線性穩(wěn)壓器(LDO) | 0.1237 | |
BAT54C,215/肖特基二極管 | 0.0336 | |
LM358DR2G/運算放大器 | 0.345 | |
CJ431/電壓基準芯片 | 0.1157 | |
LM393DR2G/比較器 | 0.3143 | |
ADUM4160BRWZ-RL/隔離式USB芯片 | 34.83 | |
REF3012AIDBZR/電壓基準芯片 | 0.9316 | |
SS8050/三極管(BJT) | 0.035 | |
8S005/錫膏/錫漿 | 17.67 |