初级会员
- 积分
- 101
- 金钱
- 101
- 注册时间
- 2022-8-19
- 在线时间
- 17 小时
|
STM32串口通讯协议,接受中断如何写,可以把数据包里的数组逐个读出,有相关例程吗?
我写的程序,我通过串口调试助手定时发送,读不到相应的数组里,我也不知道该如何调试,从哪里调试
还如何进行相应串口中断函数的调试
int USART2_IRQHandler(void) //串口2中断服务程序
{
u8 Res;//串口接收数据
static uint8_t checkSum = 0;//校验位
#if SYSTEM_SUPPORT_OS //如果SYSTEM_SUPPORT_OS为真,则需要支持OS.
OSIntEnter();
#endif
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) ////由接受寄存器状态标志位触发0接收中断(接收到的数据必须是0x0d 0x0a结尾)
{
Res =USART_ReceiveData(USART2); //读取接收到的数据
if(count==0)//如果是接收的第一个数据
{
if(Res ==0xFF)
{
table_data[count] = USART_RX_BUF[count];
checkSum += table_data[count];
count++;
return 1;
}
else
{
return 0;
}
}
else if(count == 1)
{
table_data[count] = USART_RX_BUF[count];
rx_length = table_data[count] ;
checkSum += table_data[count];
count++;
return 1;
}
else if((count>1)&&(count<rx_length+2))
{
table_data[count] = USART_RX_BUF[count];
checkSum += table_data[count];
count++;
return 1;
}
else if(count == rx_length+2 )
{
table_data[count] = USART_RX_BUF[count];
USART_RX_STA |=0x8000;
if(checkSum == table_data[count])
//先调用一次再删
return 0;
else
{
//table_data
memset(table_data, 0x00, count);
count = 0;
USART_RX_STA = 0;
return 2;//数据错误
}
}
}
#if SYSTEM_SUPPORT_OS //如果SYSTEM_SUPPORT_OS为真,则需要支持OS.
OSIntExit();
#endif
}
能帮我看看我这个串口中断函数能用吗?
|
|