f429 uart 输出乱码

2019-07-14 17:10发布

初始化代码和发送,各位大神请指教
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[1] = (GPIOA->AFR[0] & ~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) */
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
wq644921241
1楼-- · 2019-07-14 23:35
以前碰到过乱码的情况,会不会是波特率设置不对
亲爱的娜娜
2楼-- · 2019-07-15 00:10
还是寄存器配置的库多好用啊,估计是波特率不对,检查下时钟是不是有问题导致的。
fantasyo老时光
3楼-- · 2019-07-15 02:31
多用用示波器。
nyvvhxcs
4楼-- · 2019-07-15 04:43
在家调试的,不是在公司,所以,没有示波器
nyvvhxcs
5楼-- · 2019-07-15 06:41
 精彩回答 2  元偷偷看……
045086068
6楼-- · 2019-07-15 09:05
检查一下波特率配置情况

一周热门 更多>