stary666 发表于 2015-8-13 22:19:48

f429 uart 输出乱码

初始化代码和发送,各位大神请指教
void UART_Transmit(uint16_t*pData, uint16_t Size)
{
        uint16_t TxXferCount;
       
    if((pData == NULL ) || (Size == 0))
    {
      return;
    }

    TxXferCount = Size;
    while(TxXferCount > 0)
    {
                        while (0 == (USART1->SR & USART_SR_TXE))
                        {

                        }   
                        USART1->DR = ((*pData) & (uint16_t)0x01FF);
                        pData++;
                        TxXferCount--;
                        while (0 == (USART1->SR & USART_SR_TC))
                        {

                        }
        }
}
void uart_init(void)
{
        RCC->AHB1ENR |= 0x01;
        GPIOA->MODER =         (GPIOG->MODER & ~(GPIO_MODER_MODER9 | GPIO_MODER_MODER10)) | GPIO_MODER_MODER9_1 | GPIO_MODER_MODER10_1;
        GPIOA->OTYPER = GPIOG->OTYPER & ~(GPIO_OTYPER_OT_9 | GPIO_OTYPER_OT_10);       
        GPIOA->AFR = (GPIOA->AFR & ~0xff0) | 0x770;
        GPIOA->PUPDR |= 0x140000;
       
       RCC->APB2ENR |= 0x10;//uart1
        SystemCoreClockUpdate();
        USART1->BRR = SystemCoreClock / 9600;
        USART1->CR1 = 0;
    USART1->CR1 = USART_CR1_RE | USART_CR1_TE | USART_CR1_RXNEIE;
    USART1->CR1 |= USART_CR1_UE;
    /*Enable Interrupt*/
    NVIC_EnableIRQ(USART1_IRQn); /* (1) */
    NVIC_SetPriority(USART1_IRQn, 3); /* (2) */
}

stary666 发表于 2015-8-13 22:24:16

网上找的代码,改写printf()函数输出就正常,可也是调用的UART_Transmit函数

netlhx 发表于 2015-8-13 22:27:35

以前碰到过乱码的情况,会不会是波特率设置不对

creep 发表于 2015-8-13 22:37:03

还是寄存器配置的库多好用啊,估计是波特率不对,检查下时钟是不是有问题导致的。

yanhaijian 发表于 2015-8-14 08:12:49

多用用示波器。

stary666 发表于 2015-8-14 10:02:14

在家调试的,不是在公司,所以,没有示波器

stary666 发表于 2015-8-14 11:00:13

应该是时钟的问题,是浮点数

zhang7309 发表于 2015-8-14 15:00:29

检查一下波特率配置情况

你好我好大家好! 发表于 2015-8-16 09:43:13

帮顶   

晓枫VS枯叶 发表于 2015-8-16 14:51:46

估计时钟没配置好
页: [1]
查看完整版本: f429 uart 输出乱码