[STM32F0] 发出的数据不对

[复制链接]
 楼主| spark周 发表于 2019-12-15 15:31 | 显示全部楼层 |阅读模式
我用stm32f030c8串口1 通信 发出的数据不对,我用的是内部晶振  
liliang9554 发表于 2019-12-15 15:34 | 显示全部楼层
什么意思?不是很明白你说的什么,能再解释一下这个现象吗
 楼主| spark周 发表于 2019-12-15 15:38 | 显示全部楼层
之前也是用串口1在A口是通信正常,由于第二版把串口1挪到B口 通信就不正常了,串口能发出
午夜粪车 发表于 2019-12-15 15:42 | 显示全部楼层


然后呢?你是怎么应对这个的呢
 楼主| spark周 发表于 2019-12-15 15:46 | 显示全部楼层
比我我发送0X55,结果发出的是 0x77,0x74,而且不稳定。有大侠给指点迷津,不胜感激!
zhaoxqi 发表于 2019-12-15 15:48 | 显示全部楼层
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
 楼主| spark周 发表于 2019-12-15 15:51 | 显示全部楼层

串口设置如下
static void UART_Config(void)
{
        // UART1 ->485
        GPIO_InitTypeDef  GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef        NVIC_InitStructure;

        // UART1 485
        NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPriority = 2;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
   
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE );
        //RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, ENABLE);
   // RCC_APB2PeriphResetCmd(RCC_APB2Periph_USART1, DISABLE);
        
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_0);
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_0);  
        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;                 
        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_Init(GPIOB, &GPIO_InitStructure);  
  // RCC_USARTCLKConfig( RCC_USART1CLK_PCLK );
  //  USART_DeInit( USART1 );
        
    // 波特率 115200  8 data,  1 stop,  N   
        USART_InitStructure.USART_BaudRate = 19200;
        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(RS485_UART, &USART_InitStructure);

        USART1->BRR = 205;  // 波特率单独计算
        USART_Cmd(RS485_UART, ENABLE);
        USART_ITConfig(RS485_UART,USART_IT_RXNE,ENABLE);

        
        
}
系统时钟设置如下
static void SetSysClock(void)
{
  /* SYSCLK, HCLK, PCLK configuration ----------------------------------------*/

  /* At this stage the HSI is already enabled */

  /* Enable Prefetch Buffer and set Flash Latency */
  FLASH->ACR = FLASH_ACR_PRFTBE | FLASH_ACR_LATENCY;

  /* HCLK = SYSCLK */
  RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;

  /* PCLK = HCLK */
  RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE_DIV1;

  /* PLL configuration = (HSI/2) * 12 = ~48 MHz */
  RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMUL));
  RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSI_DIV2 | RCC_CFGR_PLLMUL12);

  /* Enable PLL */
  RCC->CR |= RCC_CR_PLLON;

  /* Wait till PLL is ready */
  while((RCC->CR & RCC_CR_PLLRDY) == 0)
  {
  }

  /* Select PLL as system clock source */
  RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
  RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;   

  /* Wait till PLL is used as system clock source */
  while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)RCC_CFGR_SWS_PLL)
  {
  }
}
huangchui 发表于 2019-12-15 15:56 | 显示全部楼层

USART1->BRR = 205;  // 波特率单独计算
把这句去掉看看
jiajs 发表于 2019-12-15 15:59 | 显示全部楼层
用库函数,让系统自己配置看看
jiajs 发表于 2019-12-15 16:01 | 显示全部楼层
用库函数,让系统自己配置看看
zhanghqi 发表于 2019-12-15 16:04 | 显示全部楼层

或者再焊块板子测试下;
 楼主| spark周 发表于 2019-12-15 16:07 | 显示全部楼层

这句我是不成功才加的
加了也不行 忘记注释掉了.谢谢你的回复 ,遇到这种问题我不知道该从哪里入手  
zhenykun 发表于 2019-12-15 16:10 | 显示全部楼层
然后呢?你是怎么应对这个的呢
 楼主| spark周 发表于 2019-12-15 16:14 | 显示全部楼层

我把
USART1->BRR = 205;  // 波特率单独计算,这行注释掉,程序我发送0X55  发出正确 ,发送0X46发出的是0XAE
wyjie 发表于 2019-12-15 16:17 | 显示全部楼层
什么意思?不是很明白你说的什么,能再解释一下这个现象吗
 楼主| spark周 发表于 2019-12-15 16:19 | 显示全部楼层
通过跟踪 串口时钟为48MHZ ,如截图所示
jlyuan 发表于 2019-12-15 16:23 | 显示全部楼层
没有理由啊,会不会是焊接出现问题了
 楼主| spark周 发表于 2019-12-15 16:26 | 显示全部楼层
焊接没问题,两块板子都是如此
jiaxw 发表于 2019-12-15 16:31 | 显示全部楼层
问下楼主,刚开始用这款新品,使用内部的晶振,波特率115200,有没有误差这个问题?
shimx 发表于 2019-12-15 16:33 | 显示全部楼层
同求,内部时钟稳定否
您需要登录后才可以回帖 登录 | 注册

本版积分规则

821

主题

10121

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部

821

主题

10121

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部