stm32F407使用1382400波特率收发数据

        在一个新项目中要使用串口发送大量数据,之前使用过的串口最高波特率只用到了115200,最开始想用115200*16=1843200波特率的,但收发数据的时候测试有部分字节会出错,最后改用1382400波特率测试收发数据都正常。

主函数测试程序:

u32 SysTime;         //系统时钟上 每毫秒加1

u8  senddata[256];  //发送数据BUF
u32  TestTime;
int main(void)
{
    u16 i ;
    SysTickConfiguration(); 
    
     DriveGpioInit();
     DriveGpioInputDefault();
     DriveGpioOutputDefault();
      DriveUsarUnifyInit(kUART_COM6_UPPER,1382400,USART_WordLength_8b,USART_StopBits_1,USART_Parity_No);   //初始化串口  1382400
    CreatSystemManageTask();
    for(i = 0; i < 256; i++)
    {
            senddata[i] = i;      //给发送BUF赋值
    }
  while(1)
    {
        TaskPoll();
        TaskTimerUpdate(SysTime);
        if(SysTime >= TestTime)
        {
            TestTime = SysTime + 1000;            //每秒钟发送一包串口数剧
            DriveUsartComUnifySend(kUART_COM6_UPPER,senddata,256);              //发送数据
        }
        DriveUsartUnifyDataSendLoop();
    }
}

串口初始化函数:

       GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        //    NVIC_InitTypeDef NVIC_InitStructure;

        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);             //使能GPIOC时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART6,ENABLE);            //使能USART6时钟

        //串口6对应引脚复用映射
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource6,GPIO_AF_USART6);         //GPIOC6复用为USART6
        GPIO_PinAFConfig(GPIOC,GPIO_PinSource7,GPIO_AF_USART6);         //GPIOC7复用为USART6

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;             //GPIOC6与GPIOC7
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;                    //复用功能
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                //速度50MHz
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;                     //推挽复用输出
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;                     //上拉
        GPIO_Init(GPIOC,&GPIO_InitStructure);                             //初始化PC6,PC7

        /*  配置串口硬件参数 */
        USART_InitStructure.USART_BaudRate = baud;        //波特率设置
        USART_InitStructure.USART_WordLength = len;        //字长为8位数据格式
        USART_InitStructure.USART_StopBits = stopBit;            //一个停止位
        USART_InitStructure.USART_Parity = checkType;                //无奇偶校验位
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;    //无硬件数据流控制
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;    //收发模式
        USART_Init(USART6, &USART_InitStructure);                         //初始化串口6
        //用于判断是否接收完一包数据.
        USART_ITConfig(USART6, USART_IT_IDLE, ENABLE);                    // 使能串口空闲中断

        USART_Cmd(USART6, ENABLE);                                         // 串口使能
      

上位串口调试助手收到MCU的数据:

 

 

MCU收到串口调试助手的数据:

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值