[C] 纯文本查看 复制代码 USART_InitStructure.USART_BaudRate = bound; //串口波特率
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //字长为8位数据格式
USART_InitStructure.USART_StopBits = USART_StopBits_1; //一个停止位
USART_InitStructure.USART_Parity = USART_Parity_No; //无奇偶校验位
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发模式
默认配置就是全双工的吗?全双工的意思是既能接收也能发送,还是在能发送的同时也能接收?
现在程序的USART初始化结构体如上,只能单独的接收和发送,不能在发送的同时接收数据,请问是我中断接收函数写的有问题还是需要调用其它库函数?
[C] 纯文本查看 复制代码void USART1_IRQHandler(void) //串口2中断服务程序
{
u8 inByte;
u8 i;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断
inByte = USART_ReceiveData(USART1); //读取接收到的数据
if(inByte!=0x0A)
{
USARTBuff1[USART_RC1]=inByte;
USART_RC1++;
if(USART_RC1>99)
{
USART_RC1 = 0;
}
}
else
{
USARTBuff1[USART_RC1]=inByte; //传输0x0A到队列尾部
if(USARTBuff1[0]=='S'&&USARTBuff1[1]=='T'&&USARTBuff1[2]=='A'&&USARTBuff1[3]=='R'&&USARTBuff1[4]=='T')
{
LED_G_TOGGLE; //这个用于检验串口是否在发送的时候接收到了数据,串口不在发送的时候,接收数据灯是会亮的,串口发送的时候无法接收数据,灯不亮
}
部分中断接收代码。 |