STM8 串口波特率与设置值不一致问题

最近调试STM8L串口通讯,发现设置了波特率115200,实际波特率却是57600。心想这种问题一般是串口的时钟分频设置不对,找了半天没有找到单独设置串口时钟的地方,费了不少时间。

void Uart1_Configer(void)
{

    CLK_PeripheralClockConfig (CLK_Peripheral_USART3,ENABLE);   //开启ADC/USART时钟
    GPIO_Init(GPIOA, GPIO_Pin_2, GPIO_Mode_Out_PP_High_Fast);   //TX
    GPIO_Init(GPIOA, GPIO_Pin_3, GPIO_Mode_In_FL_No_IT);        //RX
    USART_Init(USART1,115200,USART_WordLength_8b,USART_StopBits_1,USART_Parity_No,
               (USART_Mode_TypeDef)(USART_Mode_Rx|USART_Mode_Tx));  //USART初始化
    USART_ClearITPendingBit(USART1,USART_IT_RXNE);
    ITC_SetSoftwarePriority(USART1_RX_IRQn,ITC_PriorityLevel_3);    //优先级最高
    USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
    USART_Cmd (USART1,ENABLE);  //使能USART
}

最后发现在固件库文件里有设置外部晶振频率的宏定义,这个坑确实大。

把HSE_VALUE由16000000改成8000000就好了。

/**
 * @brief In the following line adjust the value of External High Speed oscillator (HSE)
   used in your application

   Tip: To avoid modifying this file each time you need to use different HSE, you
        can define the HSE value in your toolchain compiler preprocessor.
  */
#if !defined  HSE_Value
 #define HSE_VALUE   ((uint32_t)16000000) /*!< Typical Value of the HSE in Hz */
#endif /* HSE_Value */

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值