stm32外設指的是單片機外部的外圍功能模塊,比如鍵盤控制芯片,液晶,A/D轉換芯片,等等。外設可通過單片機的I/O,SPI,I2C等總線控制。
常見stm32外設:基本IO、定時器TIM、串口USART、ADC模數轉換、DAC數模轉換、SPI串行通信、EXIT外部中斷、BKP備份數據、RTC鬧鐘SysTick系統滴答、WDG看門狗(獨立+窗口)、DMA傳輸數據、片內FLASH編程、FSMC讀寫外部SRAM、外部NorFlash操作等。
stm32外設的初始化和設置:
在設置一個外設前,必須調用以下一個函數來使能它的時鐘
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_PPPx,ENABLE);
1,在主應用文件中聲明一個結構PPP_InitTypeDef,例如:PPP_InitTypeDef
PPP_InitStructure;
2,為變量PPP_InitStructure的各個結構成員填入允許的值。可以采用以下2種方式:
a)PPP_InitStructure.member1=val1;
b)PPP_StructInit(&PPP_InitStructure)PP_InitStructure.memberX=valX;
3,調用函數PPP_Init()來初始化外設PPP;
4,在這一步,外設PPP已被初始化。可以調用函數PPP_Cmd()來使能之。
使用STM32外設的步驟
1,PPP_Init()函數,其功能是根據PPP_InitTypeDef中指定的參數,初始化外設PPP,如TIM_Init()名為PPP_DeInit()函數,其功能為復位外設PPP的所有寄存器至缺省值。
2,PPP_StructInit()函數,其功能為通過設置PPP_InitTypeDef結構中的各種參數來定義外設的功能,例如:USART_StructInit()
3,PPP_Cmd()函數,其功能為使能或者失能外設PPP,例如:SPI_Cmd
4,PPP_ITConfig()函數,其功能為使能或者失能來自外設PPP的中斷源,例如:RCC_ITConfig
5,PPP_DMAConfig()的函數,其功能為使能或者失能外PPP的DMA接口
6,PPP_GetFlagStatus()的函數,其功能為檢查外設PPP某標志位被設置與否
7,PPP_ClearFlag()的函數,其功能為清除外設PPP標志位,例如:I2C_ClearFlag.
8,PPP_GetITStatus()的函數,其功能為判斷來自外設PPP的中斷發生與否
?
9,PPP_ClearITPendingBit()的函數,其功能為清除外設PPP中斷待處理標志位
STM32外設使用要點
1、時鐘安全系統(CSS)
時鐘安全系統被激活后,時鐘監控器將實時監控外部高速振蕩器;如果HSE時鐘發生故障,外部振蕩器自動被關閉,產生時鐘安全中斷,該中斷被連接到Cortex-M3的NMI的中斷;同時CSS將內部RC振蕩器切換為STM32的系統時鐘源(對于STM32F103,時鐘失效事件還將被送到高級定時器TIM1的剎車輸入端,用以實現電機保護控制)。
操作流程:
1)、啟動時鐘安全系統CSS: RCC_ClockSecuritySystemCmd(ENABLE); (NMI中斷是不可屏蔽的!)
2)外部振蕩器失效時,產生NMI中斷,對應的中斷程序:
void NMIException(void)
{
if (RCC_GetITStatus(RCC_IT_CSS) ! RESET)
{ // HSE、PLL已被禁止(但是PLL設置未變)
…… // 客戶添加相應的系統保護代碼處
// 下面為HSE恢復后的預設置代碼
RCC_HSEConfig(RCC_HSE_ON); // 使能HSE
RCC_ITConfig(RCC_IT_HSERDY, ENABLE); // 使能HSE就緒中斷
RCC_ITConfig(RCC_IT_PLLRDY, ENABLE); // 使能PLL就緒中斷
RCC_ClearITPendingBit(RCC_IT_CSS); // 清除時鐘安全系統中斷的掛起位
// 至此,一旦HSE時鐘恢復,將發生HSERDY中斷,在RCC中斷處理程序里, 系統時鐘可以設置到以前的狀態
}
}
評論
查看更多