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