打印
[STM32F2]

USART1 波特率问题

[复制链接]
2326|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wqlovt|  楼主 | 2014-2-21 11:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 wqlovt 于 2014-2-22 10:14 编辑

STM32F205 用串口发数据 DMA模式 用115200数据正确 57600的波特率就有些位错误了   测试了下 直接发送一段字符串 会正确 发送一段static 数组 就会出现错误    是不是数组这个缓存在汇编编译中导致有些内存被使用?

沙发
grant_jx| | 2014-2-21 12:15 | 只看该作者
什么错?MCU出错还是另一段?

问问题要说明清楚,回答你才有效率,对你自己来讲,也是个熟悉的过程

使用特权

评论回复
板凳
mmuuss586| | 2014-2-21 12:23 | 只看该作者

看下波特率是不是准的。
用示波器看看吧

使用特权

评论回复
地板
wqlovt|  楼主 | 2014-2-21 13:35 | 只看该作者
我现在是和电脑串口通讯的 像电脑发送数据  波特率设置为38400 57600 115200  用串口大师接收的数据都是对的  波特率为9600 19200有些位就是错的

使用特权

评论回复
5
wqlovt|  楼主 | 2014-2-22 14:34 | 只看该作者
mmuuss586 发表于 2014-2-21 12:23
看下波特率是不是准的。
用示波器看看吧

波特率低的时候 单步调试的时候发现 数据正确  能不能看下你串口是怎么操作的

使用特权

评论回复
6
gonggu8181| | 2014-2-22 14:38 | 只看该作者
第一个字节丢失?

使用特权

评论回复
7
mmuuss586| | 2014-2-22 15:01 | 只看该作者
wqlovt 发表于 2014-2-22 14:34
波特率低的时候 单步调试的时候发现 数据正确  能不能看下你串口是怎么操作的 ...

我开了2个串口,另一产品好像是开了4个
/**
  * @brief  Configures the nested vectored interrupt controller.
  * @param  None
  * @retval None
  */
void NVIC_Config(void)
{
  NVIC_InitTypeDef NVIC_InitStructure;
  /* Enable the USARTx Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);       

        NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
}

//初始化串口1
void COM1Init(void)
{       
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;

        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1);  
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_USART1);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_Init(GPIOA, &GPIO_InitStructure);          

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_USART2);
        GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_USART2);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_Init(GPIOA, &GPIO_InitStructure);
       
        USART_InitStructure.USART_BaudRate = BaudRate;//波特率设置
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
        USART_InitStructure.USART_StopBits = USART_StopBits_1;
        USART_InitStructure.USART_Parity = USART_Parity_No;
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
        USART_Init(USART1, &USART_InitStructure);
        USART_Init(USART2, &USART_InitStructure);
       
        USART_Cmd(USART1, ENABLE);
        USART_Cmd(USART2, ENABLE);
       
        USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
        USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);
        NVIC_Config();
}

使用特权

评论回复
8
wqlovt|  楼主 | 2014-2-24 08:33 | 只看该作者
mmuuss586 发表于 2014-2-22 15:01
我开了2个串口,另一产品好像是开了4个
/**
  * @brief  Configures the nested vectored interrupt cont ...

初始化一样 你发送用什么模式呢 我用的是DMA模式  只有115200的波特率下才可靠

使用特权

评论回复
9
mmuuss586| | 2014-2-24 08:38 | 只看该作者
wqlovt 发表于 2014-2-24 08:33
初始化一样 你发送用什么模式呢 我用的是DMA模式  只有115200的波特率下才可靠 ...

哦,我用的不是DMA

使用特权

评论回复
10
wqlovt|  楼主 | 2014-2-24 08:44 | 只看该作者
我用串口中断 接收都是正确的  发送有问题 能否参考下大家的发送部分

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

24

帖子

0

粉丝