大家好!
我无法使用
STM32G030K8中的USART2传输数据。
ISR 寄存器的 TC 标志在向 TDR 寄存器无限时间写入数据后没有设置,如果我用它来控制一个字节的传输,程序没有传输任何东西就挂了。
如果我使用 ISR 的 TXE 位进行控制,那么数据将被部分传输,即并非每个发送的字节都到达。
如果我在发送字节后插入一个强制延迟,那么它并不能解决问题。
USART1 工作没有问题。
我正在使用以下 USART 初始化
RCC-> APBENR1 | = RCC_APBENR1_USART2EN;
USART2-> PRESC = USART_PRESC_PRESCALER_0;
USART2-> BRR = 3333;//波特率9600
USART2-> CR1 = USART_CR1_TE | USART_CR1_RE | USART_CR1_UE;
用于传输数据
while(!(USART2->ISR & (1 << 7))); //等待设置TXE
USART2->TDR = 数据;
//while(!(USART2->ISR & (1 << 6))); // 等待设置 TC(不工作)