本帖最后由 ifxz0123 于 2022-3-28 14:19 编辑
HK32F030MF4P6中断方式发送,可以释放CPU,不用阻塞CPU。
接收中断+接收超时中断,勉强可以代替没DMA的遗憾,并实现不定长度的数据接收。
例程代码,是把串口的接收的数据进行回环发送出去。你发送一串数据后,MCU接收完毕这串数据收再发送出去。
例程代码:
HK32F030MF4P6_USART_INT_TX_INT_RX_with_RxTimeout.zip
(301.75 KB)
定义了2个结构体变量,方便对接收发送的数据进行管理。
struct USART_IT_TX
{
uint8_t Buffer[256];
uint8_t Len;
uint8_t Index;
}Usart1_it_tx;
struct USART_IT_RX
{
uint8_t Buffer[256];
uint8_t Len;
uint8_t Index;
uint8_t FinishedFlag;
}Usart1_it_rx;
int main(void)
{
delay_init();
Led_Init();
Usart1_Config();
/* Infinite loop */
while (1)
{
if( SET == Usart1_it_rx.FinishedFlag)
{
USART1_IT_SendString(Usart1_it_rx.Buffer, Usart1_it_rx.Len);
Usart1_it_rx.FinishedFlag = RESET;
}
}
}
回环压力测试:串口助手每3ms发送24个字节数据(逻辑分析仪测得,发送24个字节需要2.071333ms),MCU接收完24个字节数据后再发回给串口助手。
发送接收回环压力测试,可以看到没有数据丢失
|