6. STM32基礎(chǔ)知識(shí)入門
一。 寄存器和固定庫開發(fā)的區(qū)別和聯(lián)系
STM32的寄存器很多,不容易記憶,調(diào)用固定庫函數(shù),設(shè)置好入口參數(shù),從而操作相應(yīng)的寄存器。
二。MDK下寄存器地址和名稱映射關(guān)系
GPIO各端口的地址
GPIOA 的寄存器的地址=GPIOA 基地址+寄存器相對 GPIOA 基地址的偏移值
三。MDK下快速組織代碼技巧
四。STM32中斷優(yōu)先級分組管理
STM32 的 68 個(gè)可屏蔽中斷,在 STM32F103 系列上面,又只有 60 個(gè)(在 107 系列才有 68 個(gè))。
STM32 的中斷分組:STM32 將中斷分為 5 個(gè)組,組 0~4。
搶占優(yōu)先級的級別高于響應(yīng)優(yōu)先級。而數(shù)值越小所代表的優(yōu)先級就越高。
需要注意兩點(diǎn):第一,如果兩個(gè)中斷的搶占優(yōu)先級和響應(yīng)優(yōu)先級都是一樣的話,則看哪個(gè)中斷先發(fā)生就先執(zhí)行;第二,高優(yōu)先級的搶占優(yōu)先級是可以打斷正在進(jìn)行的低搶占優(yōu)先級中斷的。而搶占優(yōu)先級相同的中斷,高優(yōu)先級的響應(yīng)優(yōu)先級不可以打斷低響應(yīng)優(yōu)先級的中斷。
五。STM32端口復(fù)用
一個(gè) GPIO
如果可以復(fù)用為內(nèi)置外設(shè)的功能引腳,那么當(dāng)這個(gè) GPIO 作為內(nèi)置外設(shè)使用的時(shí)候,就叫做復(fù)用。
例如串口1
復(fù)用端口初始化有幾個(gè)步驟:
1) GPIO 端口時(shí)鐘使能。要使用到端口復(fù)用,當(dāng)然要使能端口的時(shí)鐘了。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
2) 復(fù)用的外設(shè)時(shí)鐘使能。比如你要將端口 PA9,PA10 復(fù)用為串口,所以要使能串口時(shí)鐘。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
3) 端口模式配置。
在 IO 復(fù)用位內(nèi)置外設(shè)功能引腳的時(shí)候,必須設(shè)置 GPIO 端口的模式,至于在復(fù)用功能下 GPIO 的模式是怎么對應(yīng)的,這個(gè)可以查看手冊《STM32 中文參考手冊 V10》P110 的表格“8.1.11 外設(shè)的 GPIO 配置”。
六。STM32端口重映射
STM32為了布線的方便,把一些復(fù)用功能重新映射到其他一些引腳上。 STM32 中有很多內(nèi)置外設(shè)的輸入輸出引腳都具有重映射(remap)的功能。但不是可以隨便映射的,具體對應(yīng)關(guān)系《STM32 中文參考手冊 V10》的 P116 頁“8.3 復(fù)用功能和調(diào)試配置”有講解。
例如串口1
使用重映射功能的詳細(xì)步驟:
1)使能 GPIOB 時(shí)鐘:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
2)使能串口 1 時(shí)鐘:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
3)使能 AFIO 時(shí)鐘:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
4)開啟重映射:
GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE);
部分重映射和完全重映射:
例如USART1 只有一種重映射,而對于 USART3,存在部分重映射和完全重映射。所謂部分重映射就是部分管腳和默認(rèn)的是一樣的,而部分管腳是重新映射到其他管腳。而完全重映射就是所有管腳都重新映射到其他管腳。