Estoy tratando de hacer que UART trabaje en una parte STM32F0 y no puedo resolver las interrupciones. Según el manual de referencia
Bit 7 TXE: Transmit data register empty
This bit is set by hardware when the content of the USARTx_TDR register has been
transferred into the shift register. It is cleared by a write to the USARTx_TDR register.
An interrupt is generated if the TXEIE bit =1 in the USARTx_CR1 register.
Sin embargo, nunca puedo ver la marca TXE clara. Esto es lo que tengo en mi controlador de IRQ:
if(USART_GetITStatus(EVAL_COM1, USART_IT_TXE) != RESET)
{
/* Write one byte to the transmit data register */
if (TxBuffer[TxCount] != 'Bit 7 TXE: Transmit data register empty
This bit is set by hardware when the content of the USARTx_TDR register has been
transferred into the shift register. It is cleared by a write to the USARTx_TDR register.
An interrupt is generated if the TXEIE bit =1 in the USARTx_CR1 register.
')
{
USART_SendData(EVAL_COM1, TxBuffer[TxCount++]);
}
//else{
// USART_ITConfig(EVAL_COM1, USART_IT_TXE, DISABLE);
//}
}
A menos que elimine el comentario de la instrucción else, la interrupción de envío sigue activándose sin interrupción incluso después de que deje de enviar bytes al TDR. ¿Hay alguna manera de detener las interrupciones sin desactivarlas? ¿O necesito volver a habilitar cada vez que quiera enviar algo?