波特率的问题

2019-03-23 17:11发布

我用STM32F107VCT6写串口程序。波特率设为9600.
可是用示波器看,一位300多微妙,时间不对。
是不是要设置时钟啊。请问怎么设置才能让波特率对的上啊?谢谢!
我外部晶振8M

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
4条回答
chenbingjy
2019-03-24 08:09
初始化程序:
void UART4_Configuration(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
            NVIC_InitTypeDef NVIC_InitStructure;        

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE );
                               
        /* Configure USART2 Tx (PC.10) as alternate function push-pull */
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
          GPIO_Init(GPIOC, &GPIO_InitStructure);
   
          /* Configure USART2 Rx (PC.11) as input floating */
          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
          GPIO_Init(GPIOC, &GPIO_InitStructure);
        
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE );
        RCC->APB1RSTR|=1<<19;   //¸′λ′®¿ú4
              RCC->APB1RSTR&=~(1<<19);//í£Ö1¸′λ       

        USART_InitStructure.USART_BaudRate            = 9600  ;
        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(UART4, &USART_InitStructure);

        NVIC_InitStructure.NVIC_IRQChannel = UART4_IRQn;     //UART4_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);


        USART_ITConfig(UART4, USART_IT_RXNE, ENABLE);
        USART_Cmd(UART4, ENABLE);
}

一周热门 更多>