新手上路
- 积分
- 35
- 金钱
- 35
- 注册时间
- 2017-7-24
- 在线时间
- 6 小时
|
2金钱
串口接收中断函数如下,但是无法使Rxflag=1
void USART1_IRQHandler(void)
{
extern uint8_t ucTemp;
extern uint8_t Rxflag;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
Rxflag=1;
ucTemp = USART_ReceiveData(USART1);
下面这段代码是例程中的部分函数,通讯协议是用STM32给模块发送“+++”,模块会回复“a”,STM32收到"a"后,又会回复模块"a",然后模块收到"a"后,会给STM32发送"+OK",STM32收到“+OK"就代表进入AT指令模式,STM32可以给模块发送AT指令了,但是下面这段代码 就是一直无法进入if(Rxflag),而且我觉得这段代码来实现协议也有问题
求大神解答一下,这个Rxflag进不去真的是困扰我好久了,在下万分感谢!!!!
Usart_SendString( macUSARTx, "+++" );
usRxCount = 0;
while(1)
{
if(Rxflag)
{
Rxflag=0;
if (usRxCount < sizeof(ucaRxBuf))
{
ucaRxBuf[usRxCount++] = ucTemp;
if(ATOKflag==1)
{
if(ucTemp == 0X4B)//K
{
if(Temp==0X4F)//O
{
SEND_OK=1;
}
}
Temp= ucTemp;
}
else
{
if(usRxCount == 2)
{
if(ucTemp==0X4F)
{
ATOKflag=1;
SEND_OK=1;
}
}
if(ucTemp == 0x61)
{
Usart_SendString( macUSARTx, "a" );
usRxCount = 0;
for (delay = 0; delay < maxdelay; delay++);
}
}
}
else
{
usRxCount = 0;
}
}
|
|