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) */
} 网上找的代码,改写printf()函数输出就正常,可也是调用的UART_Transmit函数 以前碰到过乱码的情况,会不会是波特率设置不对 还是寄存器配置的库多好用啊,估计是波特率不对,检查下时钟是不是有问题导致的。 多用用示波器。 在家调试的,不是在公司,所以,没有示波器 应该是时钟的问题,是浮点数 检查一下波特率配置情况 帮顶 估计时钟没配置好
页:
[1]