前面的程序分别是,GPIO的定义以及GPIO和USART时钟的开启,以下是USART的配置和主程序
USART_InitStruture.USART_BaudRate=9600;
USART_InitStruture.USART_WordLength=USART_WordLength_8b;
USART_InitStruture.USART_StopBits=USART_StopBits_1;
USART_InitStruture.USART_Parity=USART_Parity_No;
USART_InitStruture.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitStruture.USART_Mode=USART_Mode_Rx|USART_Mode_Rx;
USART_Init(USART1,&USART_InitStruture);
USART_Cmd(USART1,ENABLE);
}
void delay(u32 i)
{
while(i--);
}
int main(void)
{
USART_Config();
while(1)
{
USART_SendData(USART1,0X55); //不停的向PC发送0x55
while(USART_GetFlagStatus(USART1, USART_FLAG_TC) != SET);
GPIO_ResetBits(GPIOB,GPIO_Pin_8); //发送完一次后LED(PB.8)闪烁一次
delay(0xfffff);
GPIO_SetBits(GPIOB,GPIO_Pin_8);
delay(0xfffff);
}
}
调试的结果是PC上的串口没有收到数据,单步执行时程序能够走完一次循环(PC上还是没有收到数据),第二次就一直停在 while(USART_GetFlagStatus(USART1, USART_FLAG_TC) != SET);不走了,不知道怎么回事。