请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430F5438A 工具/软件:Code Composer Studio
尊敬的团队
我的客户希望使用 UART TX 中断。 以下是他的代码
void UART_Transmit _IT (UART_HandleTypeDef * huart、uint8_t * pData、uint16_t size) { huart->txbuf = pData; huart->txlen =大小; USCI_A_UART_enableInterrupt (huart->baseAddress、USCI_A_UART_Transmit _interrupt); } void TX_IT_Callback (UART_HandleTypeDef * huart) { if (huart->txlen =0U){ USCI_A_UART_transmitData (huart->baseAddress、* huart->txbuf); /*禁用 UART 发送数据寄存器空中断*/ USCI_A_UART_DisableInterrupt (hart->baseAddress、USCI_A_UART_Transmit _interrupt); } 其他 { USCI_A_UART_transmitData (huart->baseAddress、* huart->txbuf++); huart->txlen-; } }
在此逻辑中、中断输入9次、只能发送一次、以后不会输入中断。
如果将其更改为下面的代码、这是正常的、但他使用了一个485芯片、他希望完全发送它、然后生成一个中断。
此时、该引脚将切换为接收。 请帮助获取方法。
if (huart->txlen == 1U) { USCI_A_UART_transmitData (huart->baseAddress、* huart->txbuf); /*禁用 UART 发送数据寄存器空中断*/ USCI_A_UART_DisableInterrupt (hart->baseAddress、USCI_A_UART_Transmit _interrupt); huart->txlen --; }