做一个无线通信的节点,想通过串口调试助手给板子发数据,在通过板子上的无线模块发出去。
但用串口调试助手发数据时,进入不了 USART1_IRQHandler();然后就接受不到数据,不知道为什么串口程序是在教程源码的基础上略加改动的,请各位高手帮我看看问题怎么解决
全部程序在附件~~
void USART1_IRQHandler(void)
{
u8 res;
if(USART1->SR&(1<<5))//接收到数据
{
LED1=0;
printf("in");
res=USART1->DR;
if((USART_RX_STA&0x80)==0)//接收未完成
{
if(USART_RX_STA&0x40)//接收到了0x0d
{
if(res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
else USART_RX_STA|=0x80; //接收完成了
}else //还没收到0X0D
{
if(res==0x0d)USART_RX_STA|=0x40;
else
{
USART_RX_BUF[USART_RX_STA&0X3F]=res;
USART_RX_STA++;
if(USART_RX_STA>31)USART_RX_STA=0;//接收数据错误,重新开始接收
}
}
}
}
}
int main(void)
{
// u8 t;
// u8 len;
Stm32_Clock_Init(9);//系统时钟设置
delay_init(72); //延时初始化
uart_init(72,9600); //串口1初始化
LED_Init(); //LED初始化
nRF905_PortInit();
Config905();
while(!nRF905_Check()){LED0=0;delay_ms(100);} //红灯闪提示模块异常
LED0=1;
while(1)
{
LED1=!LED1;
delay_ms(200);//绿灯闪烁表示处于待机状态
printf("ready~~\n");
if(USART_RX_STA&0x80)
{
SetTxMode(); // 设置send模式
TxBuf=USART_RX_BUF;
TxPacket(); //send数据
delay_ms(100);
LED0=0;
delay_ms(200);
LED0=1;
USART_RX_STA=0;
// }
}
}
|