Embedded 如何将阻塞机制添加到简单的USART\U tx efm32中
我使用简单的usart_tx发送SPI命令,我们需要检查是否阻塞,直到usart_tx函数完成。我们需要确保在开始排队交换新值之前缓冲区是空的。 我正在使用手动芯片选择进行传输。我想在单个CS低会话中发送4个字节。 因此,我启用了TXBL,如下所示 然后我发送4次8位数据,在每次数据发送之间,我放入while循环,如下所示。 在我们开始新的发送之前,是阻塞机制确保缓冲区是空的吗? 谢谢Embedded 如何将阻塞机制添加到简单的USART\U tx efm32中,embedded,Embedded,我使用简单的usart_tx发送SPI命令,我们需要检查是否阻塞,直到usart_tx函数完成。我们需要确保在开始排队交换新值之前缓冲区是空的。 我正在使用手动芯片选择进行传输。我想在单个CS低会话中发送4个字节。 因此,我启用了TXBL,如下所示 然后我发送4次8位数据,在每次数据发送之间,我放入while循环,如下所示。 在我们开始新的发送之前,是阻塞机制确保缓冲区是空的吗? 谢谢 您使用的是哪个EFM32部件?您知道USART中有内部传输缓冲区吗?为什么在发送另一个字节之前,需要等待每个字
您使用的是哪个EFM32部件?您知道USART中有内部传输缓冲区吗?为什么在发送另一个字节之前,需要等待每个字节退出USART?当代码只是轮询USART状态时,为什么要启用中断?注释说您正在启用TXC中断,但代码启用TXDATAV。我不熟悉那种打断。你是说RXDATAV吗?
USART1->IEN = USART_IEN_TXDATAV; //enable TXC interrupt flag
GPIO_PinOutClear(gpioPortA,4); //Low CS
USART_Tx(USART1, Tx_WRSR[0]);//transmit first byte of the command
while( !(USART1->STATUS & USART_STATUS_TXC) ); //wait TILL TXC goes high
USART_Tx(USART1, Tx_WRSR[1]);//transmit second byte of the command
while( !(USART1->STATUS & USART_STATUS_TXC) ); //wait TILL TXC goes high
USART_Tx(USART1, Tx_WRSR[2]);//transmit third byte of the command
while( !(USART1->STATUS & USART_STATUS_TXC) ); //wait TILL TXC goes high
USART_Tx(USART1, Tx_WRSR[3]);//transmit 4th byte of the command
while( !(USART1->STATUS & USART_STATUS_TXC) ); //wait TILL TXC goes high
GPIO_PinOutSet(gpioPortA,4); //High CS so signal the end of SPI session
delay(500) //delay half a second so the device will understand that trnasmition is OVER