7.STM32F407ZG串口通信配置流程

步驟:

1.時鐘使能:GPIO時鐘使能,串口時鐘使能。

    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOA, ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

2.端口配置:GPIO引腳配置,複用模式。

    GPIO_InitTypeDef GPIO_Struct;

    GPIO_Struct.GPIO_Pin=GPIO_Pin_9;
    GPIO_Struct.GPIO_Mode=GPIO_Mode_AF;
    GPIO_Struct.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Struct.GPIO_OType=GPIO_OType_PP;
    GPIO_Struct.GPIO_PuPd=GPIO_PuPd_UP;
    GPIO_Init(GPIOF,&GPIO_Struct);
    
    GPIO_Struct.GPIO_Pin=GPIO_Pin_10;
    GPIO_Struct.GPIO_Mode=GPIO_Mode_AF;
    GPIO_Struct.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Struct.GPIO_OType=GPIO_OType_PP;
    GPIO_Struct.GPIO_PuPd=GPIO_PuPd_UP;
    GPIO_Init(GPIOF,&GPIO_Struct);

端口爲複用模式。

3.串口配置:串口參數初始化,串口使能,並開啓中斷。

    USART_InitTypeDef Usart_Struct;
    Usart_Struct.USART_BaudRate=19200;
    Usart_Struct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
    Usart_Struct.USART_Mode= USART_Mode_Tx;
    Usart_Struct.USART_Parity=USART_Parity_No;
    Usart_Struct.USART_StopBits=USART_StopBits_1;
    Usart_Struct.USART_WordLength=USART_WordLength_8b;
    USART_Init(USART1,&Usart_Struct);
    USART_Cmd(USART1,ENABLE);

4.中斷配置:中斷參數設置,中斷處理函數配置(中斷類型,使能,搶佔優先級等)。

	USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
	
	NVIC_InitTypeDef NVIC_Inst;
	NVIC_Inst.NVIC_IRQChannel= USART1_IRQn;
	NVIC_Inst.NVIC_IRQChannelCmd=ENABLE;
	NVIC_Inst.NVIC_IRQChannelPreemptionPriority=1;
	NVIC_Inst.NVIC_IRQChannelSubPriority=1;
	NVIC_Init(&NVIC_Inst);
	//NVIC Init		
}

void USART1_IRQHandler(void){
	u8 res;
	if(USART_GetITStatus(USART1,USART_IT_RXNE)){
		res=USART_ReceiveData(USART1);
		USART_SendData(USART1,res);
	}
}
 

5.主函數配置:需設置中斷優先級分組。

int main(void){
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	Usart_Init();
	while(1);
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章