最近在使用HT32内部USART功能的时候,发现了一个问题。
目前网络上比较流行的HT32 USART收发代码存在一个问题,如下:
//Tx/Rx中断使能
USART_IntConfig(COM1_PORT, USART_FLAG_RXDR, ENABLE);
USART_IntConfig(COM1_PORT, USART_FLAG_TXDE, ENABLE);
此处实参不应该是
USART_FLAG_RXDR
USART_FLAG_TXDE
应该是
USART_INT_RXDR
USART_INT_TXDE
正确代码如下:
//Tx/Rx中断使能
USART_IntConfig(COM1_PORT, USART_INT_RXDR, ENABLE);
USART_IntConfig(COM1_PORT, USART_INT_TXDE, ENABLE);
我还遇到的一个问题是,Tx和Rx的中断同时开启会导致程序卡死,无法往下执行,不知道是什么原因,希望有大佬看到后能解答一下,万分感谢!
我的写法如下,开启其中一个:
//Tx/Rx中断使能
USART_IntConfig(COM1_PORT, USART_INT_RXDR, ENABLE);
//USART_IntConfig(COM1_PORT, USART_INT_TXDE, ENABLE);
顺便再提一嘴,HT32库函数中有关USART的函数声明有误:
此处应改为:
完整UART/USART代码可参考这些文章,写的都很详细: