STM32F0(9)串口初始化
// 只初始化了RX功能,因?yàn)橹皼](méi)有用到Tx功能,所以沒(méi)有配置
void PM25_UART2_Init(void) // 串口UART2初始化
{
RCC->APB1ENR |= RCC_APB1ENR_USART2EN; // 串口時(shí)鐘使能
RCC->AHBENR |= RCC_AHBENR_GPIOAEN; // 打開(kāi)串口所對(duì)應(yīng)的GPIO引腳時(shí)鐘
GPIOA->AFR[0] |= 0x00001000; // 開(kāi)啟復(fù)用功能的對(duì)應(yīng)AFIO(對(duì)應(yīng)截圖)
GPIOA->MODER |= GPIO_MODER_MODER3_1; // 開(kāi)啟GPIO復(fù)用模式
GPIOA->MODER &= ~GPIO_MODER_MODER3_0;
USART2->BRR = 0x3a98; //波特率,時(shí)鐘頻率,波特率設(shè)置
USART2->CR1 |= USART_CR1_RXNEIE | USART_CR1_UE | USART_CR1_RE; // 打開(kāi)串口,8位數(shù)據(jù)格式,1個(gè)停止位,無(wú)校驗(yàn)位
NVIC->ISER[0] |= (1 << USART2_IRQn); // 串口中斷開(kāi)關(guān)
NVIC->IP[USART2_IRQn / 4] |= (0x00000000 << (8 * (USART2_IRQn % 4))); // 串口中斷優(yōu)先級(jí)
}
void USART2_IRQHandler(void) // 中斷服務(wù)程序
{
if(USART2->ISR & USART_ISR_RXNE)// 讀取狀態(tài)標(biāo)志位判斷是收到數(shù)據(jù)還是發(fā)送的數(shù)據(jù)
{
// 處理接收到的數(shù)據(jù)
}
}