[mw_shl_code=c,true]void USART1_IRQHandler(void) 中断响应函数
{
USART1->SR =0;
USART_ClearFlag(USART1, USART_FLAG_RXNE);
serialDecode(USART1->DR);
}[/mw_shl_code]
[mw_shl_code=c,true]void serialDecode(char data)
{
switch(data)
{
case '#':
pointOfReceive = 0;
break;
case ';':
if(pointOfReceive > 0)
{
serialchar[pointOfReceive] = 0;
ScanValue(serialchar, pointOfReceive);
}
pointOfReceive = -1;
break;
default :
if(pointOfReceive >= 0 && pointOfReceive <= 18)
{
serialchar[pointOfReceive] = data;
pointOfReceive++;
}
else
{
pointOfReceive = -1;
}
break;
}
}[/mw_shl_code]
中断响应函数是每次串口数据寄存器接受数据就触发,我要发送#P1000;的话,串口数据寄存器是一次接收完#P1000;响应一次中断函数,还是每次接受一个字节,比如#,中断响应函数触发一次,然后串口数据寄存器再接受下一个字符P再触发中断响应函数,如此循环知道结束啊。才学习stm32不久,感觉有点混了,望大神们提点下啊。
|