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