suna-2027220 发表于 2015-1-4 23:21:40

STM32F4 USART不正常

大家帮我看看,我的USART设置哪里有问题,为什么我用串口发送ab,一会接收正常,一会接受又不正常。
正常接收:


接收不正常:

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);
}



feiante 发表于 2015-1-4 23:34:26

把while放到发送语句后面呢?就是发完在while然后再发再while

suna-2027220 发表于 2015-1-4 23:41:58

feiante 发表于 2015-1-4 23:34
把while放到发送语句后面呢?就是发完在while然后再发再while

我照你说的试了试,问题还是存在,是不是跟我用USB HUB有关系?

晓枫VS枯叶 发表于 2015-1-5 08:28:11

楼主用的407的板子吗?时钟设置的没有问题吧!

feiante 发表于 2015-1-5 08:42:44

加点延时呢?最好连上JLink或ST-link看看

那片清茶 发表于 2015-1-5 09:07:52

你是不是用了F4的discovery,里面有个串口跟USB口是共用的。。

suna-2027220 发表于 2015-1-5 11:37:56

那片清茶 发表于 2015-1-5 09:07
你是不是用了F4的discovery,里面有个串口跟USB口是共用的。。

是用的F4,但是这个USART没有被占用的,我确认过了。如果被占用就不会收到数据的!

suna-2027220 发表于 2015-1-5 11:38:40

晓枫VS枯叶 发表于 2015-1-5 08:28
楼主用的407的板子吗?时钟设置的没有问题吧!

用的F429,时钟其他模块没有问题,检查过了!

发表于 2015-1-5 11:41:45

把发送频率降低试试,另外每次发送加一个小延时。

晓枫VS枯叶 发表于 2015-1-5 12:22:16

本帖最后由 晓枫VS枯叶 于 2015-1-5 12:23 编辑

我也用过429,没出现这种问题,把SysInit()函数贴出来看看吧,你是基于标准库自己写的吧,表示自己用的时候没有写这个函数,而是改了几个底层的参数就够了!
页: [1] 2
查看完整版本: STM32F4 USART不正常