//main.c
//最大256可以用宏定义其他大小是最好的
uint8_t aRxBuffer; //接收中断缓冲
uint8_t rxBuff[256]; //接收缓冲,可以宏定义
uint8_t rxCnt = 0; //接收缓冲计数
uint8_t overErr[] = "数据超过256rn";
/* main()函数中使能接收,进入中断回调函数 */
//每次接收完数据后会关闭接收,因而要重新使能一次
//每次接收数据都会进入中断,但只有在接收的书目等于设定的size时才进入回调函数
HAL_UART_Receive_IT(&huart1,&aRxBuffer,1);
//串口回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
{
/* Prevent unused argument(s) compilation warning */
UNUSED(UartHandle);
if(rxCnt >= 255) //溢出判断,要注意溢出后的数据还是会接收进来
{
rxCnt = 0;
//memset(void *buffer, int c, int count) buffer:为指针或是数组, c:是赋给buffer的值,count:是buffer的长度.
//清空数组.原型是memset(buffer, 0, sizeof(buffer))
memset(rxBuff,0x00,sizeof(rxBuff));
HAL_UART_Transmit(&huart1, (uint8_t *)&overErr, sizeof(overErr),0xFFFF);
}
else
{
rxBuff[rxCnt++] = aRxBuffer; //接收数据转存
if((rxBuff[rxCnt-1] == 0x0A)&&(rxBuff[rxCnt-2] == 0x0D)) //判断结束位
{
HAL_UART_Transmit(&huart1, (uint8_t *)&rxBuff, rxCnt,0xFFFF); //将收到的信息发送出去
rxCnt = 0;
memset(rxBuff,0x00,sizeof(rxBuff)); //清空数组
}
}
while(HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1)==HAL_OK); //再开启接收中断
}
//main.c
//最大256可以用宏定义其他大小是最好的
uint8_t aRxBuffer; //接收中断缓冲
uint8_t rxBuff[256]; //接收缓冲,可以宏定义
uint8_t rxCnt = 0; //接收缓冲计数
uint8_t overErr[] = "数据超过256rn";
/* main()函数中使能接收,进入中断回调函数 */
//每次接收完数据后会关闭接收,因而要重新使能一次
//每次接收数据都会进入中断,但只有在接收的书目等于设定的size时才进入回调函数
HAL_UART_Receive_IT(&huart1,&aRxBuffer,1);
//串口回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle)
{
/* Prevent unused argument(s) compilation warning */
UNUSED(UartHandle);
if(rxCnt >= 255) //溢出判断,要注意溢出后的数据还是会接收进来
{
rxCnt = 0;
//memset(void *buffer, int c, int count) buffer:为指针或是数组, c:是赋给buffer的值,count:是buffer的长度.
//清空数组.原型是memset(buffer, 0, sizeof(buffer))
memset(rxBuff,0x00,sizeof(rxBuff));
HAL_UART_Transmit(&huart1, (uint8_t *)&overErr, sizeof(overErr),0xFFFF);
}
else
{
rxBuff[rxCnt++] = aRxBuffer; //接收数据转存
if((rxBuff[rxCnt-1] == 0x0A)&&(rxBuff[rxCnt-2] == 0x0D)) //判断结束位
{
HAL_UART_Transmit(&huart1, (uint8_t *)&rxBuff, rxCnt,0xFFFF); //将收到的信息发送出去
rxCnt = 0;
memset(rxBuff,0x00,sizeof(rxBuff)); //清空数组
}
}
while(HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1)==HAL_OK); //再开启接收中断
}
举报