大家帮我看看,我的USART设置哪里有问题,为什么我用串口发送ab,一会接收正常,一会接受又不正常。 正常接收: 正常接收 接收不正常: 接收不正常时的Hex格式 int main(void){ SysInit(); USART1_Configure(); //NVIC_Configure(); while(1){ //Delayms(100); while(RESET == USART_GetFlagStatus(USART1,USART_FLAG_TXE)); USART_SendData(USART1,'a'); while(RESET == USART_GetFlagStatus(USART1,USART_FLAG_TXE)); USART_SendData(USART1,'b'); } } void USART1_Configure(void){ GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF; GPIO_InitStructure.GPIO_OType=GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_10; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1); GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1); USART_InitStruct.USART_BaudRate=115200; USART_InitStruct.USART_WordLength=USART_WordLength_8b; USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None; USART_InitStruct.USART_Mode=USART_Mode_Rx|USART_Mode_Tx; USART_InitStruct.USART_Parity=USART_Parity_No; USART_InitStruct.USART_StopBits=USART_StopBits_1; USART_Init(USART1,&USART_InitStruct); //USART_ITConfig(UART4,USART_IT_RXNE,ENABLE); //USART_ITConfig(UART4,USART_IT_TXE,ENABLE); USART_Cmd(USART1,ENABLE); } |
我照你说的试了试,问题还是存在,是不是跟我用USB HUB有关系?
是用的F4,但是这个USART没有被占用的,我确认过了。如果被占用就不会收到数据的!
用的F429,时钟其他模块没有问题,检查过了!
我也用过429,没出现这种问题,把SysInit()函数贴出来看看吧,你是基于标准库自己写的吧,表示自己用的时候没有写这个函数,而是改了几个底层的参数就够了!