串口配置正常
关键代码如下:
/* UART1配置如下:
- 字长 = 8 比特
- 停止位 = 1 比特
- 校验 = 无
- 波特率 = 115200
- 硬件流控制禁止 (RTS和CTS 信号) */
huart1.Instance = USART1;
huart1.Init.BaudRate = 115200;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart1.Init.Mode = UART_MODE_TX_RX;
if(HAL_UART_Init(&huart1) != HAL_OK)
{
Error_Handler();
}
if(HAL_UART_Receive_IT(&huart1, (uint8_t *)aRxBuffer, 2048) != HAL_OK)
{
Error_Handler();
}
Uart1RxReady = RESET;
while(1)
{
/*****************************配置信息解析****************************************/
/*串口1以中断的方式循环接收信息,缓冲尺寸根据实际情况进行设置*/
if( Uart1RxReady == SET)
{
//huart1.State = HAL_UART_STATE_READY;
if(HAL_UART_Receive_IT(&huart1, (uint8_t *)aRxBuffer, 2048) != HAL_OK)//采用中断接收,接收缓存为2048个字节
{
Error_Handler();
}
Uart1RxReady = RESET;
}
/* 串口1边接收边解析*/
if(Index != huart1.RxXferSize - huart1.RxXferCount ) //已接收字节数与已解析字节数不相等,则进行解析
{
// if(HAL_UART_Transmit(&huart1,&aRxBuffer[ Index ], 1,200) != HAL_OK)//自收发,非中断方式发送用于测试
//{
// Error_Handler();
//}
if(HAL_UART_Transmit_IT(&huart1,&aRxBuffer[ Index ], 1) != HAL_OK)//自收发,中断方式发送用于测试
{
Error_Handler();
}
/*
其他代码等等。。
*/
if(++Index == huart1.RxXferSize)//解析完缓冲区的最后一个字节,重新回到缓冲区起始位置进行解析
{
Index = 0;
}
}
}
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *UartHandle)
{
/* Set transmission flag: trasfer complete*/
if( UartHandle == &huart1)
{
Uart1TxReady = SET;
}
}
/**
* @brief Rx Transfer completed callback
* @param UartHandle: UART handle
* @note This example shows a simple way to report end of DMA Rx transfer, and
* you can add your own implementation.
* @retval None
*/
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
{
/* Set transmission flag: trasfer complete*/
if( UartHandle == &huart1)
{
Uart1RxReady = SET;
}
}
问题是这样的:首先,接收是绝对没问题的,但是接收一个发送一个的时候,使用中断方式发送就是不行,可能发一两个字符还可以,发多了后面的就不发了,发送代码用红颜 {MOD}标记了出来。蓝 {MOD}的代码是使用非中断方式发送的,可以,但是不适合我的程序。
我的疑问是,是不是接收采用中断方式,发送就不能采用中断方式?而且串口一旦出问题,怎么复位串口都不好使,如非系统复位。串口的问题整得我头都大了,望各位高手牛人能指点一二啊。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
谢谢,,,已经都 下载了 一些 库中 自带的 例程 ==> 毫无 指导意义。。
所以:::才来 请你 推荐。。。
一周热门 更多>