由于是新手,也没什么积分所以发的帖子性质不对还望见谅,下面是我自己配置的USART1的代码,主要就是想实现查询方式的简单收发,但是发现根本收不到数据,主函数的while循环中的条件语句执行不下去。因为经验很有限没有找到问题所在,还望论坛的朋友们能够指点解惑。
void init_usart(u32 baud){
GPIO_InitTypeDef GPIOA_Init;
USART_InitTypeDef USART1_Init;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);
GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);
GPIOA_Init.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_10;
GPIOA_Init.GPIO_Mode=GPIO_Mode_AF;
GPIOA_Init.GPIO_Speed=GPIO_Speed_50MHz;
GPIOA_Init.GPIO_OType= GPIO_OType_PP;
GPIOA_Init.GPIO_PuPd=GPIO_PuPd_UP;
GPIO_Init(GPIOA,&GPIOA_Init);
USART1_Init.USART_BaudRate=baud;
USART1_Init.USART_Mode=USART_HardwareFlowControl_None;
USART1_Init.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
USART1_Init.USART_Parity=USART_Parity_No;
USART1_Init.USART_StopBits=USART_StopBits_1;
USART1_Init.USART_WordLength=USART_WordLength_8b;
USART_Init(USART1,&USART1_Init);
USART_Cmd(USART1,ENABLE);
}
int main()
{
init_usart(115200);
while(1){
if(USART_GetFlagStatus(USART1, USART_FLAG_RXNE)==SET){
USART_SendData(USART1,USART_ReceiveData(USART1));
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
}
}
} |