我的串口中断是这样写的
void USART1_IRQHandler(void) //串口中断函数
{
u8 Res;
if(USART_GetiTStatus(USART1, USART_IT_RXNE) != RESET) //接受中断
{
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
Res =USART_ReceiveData(USART1);//(USART1->DR); //读取接收到的数据
Bluetooth_data=Res; //将接收到的数据 Bluetooth_data
}
}
主函数关键部分是这样
LED0=0;
LED1=0;
while(1)
{
switch(Bluetooth_data)
{
case 0x01: LED0=!LED0;
break;
case 0x02: LED1=!LED1;
break;
case 0x03: LED0=!LED0;LED1=!LED1;
break;
}
}
}
当我用手机发送命令的时候,开发板上的LED没有任何 反应。这是为什么呢,是我的中断函数哪出错了吗?
-
-
蓝牙控制LED.rar
下载积分: 积分 -1 分
271.72 KB, 下载次数: 55, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
{
//USART_SendData(USART1,USART_ReceiveData(USART1));
//while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
switch(USART_ReceiveData(USART1))
{
case '1'://LED1 ¿ª
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
break;
case '2'://LED1 ¹Ø
GPIO_SetBits(GPIOB,GPIO_Pin_5);
break;
case '3'://LED2 ¿ª
GPIO_ResetBits(GPIOD,GPIO_Pin_6);
break;
case '4'://LED2 ¹Ø
GPIO_SetBits(GPIOD,GPIO_Pin_6);
break;
case '5'://LED3 ¿ª
GPIO_ResetBits(GPIOD,GPIO_Pin_3);
break;
case '6'://LED3 ¹Ø
GPIO_SetBits(GPIOD,GPIO_Pin_3);
break;
}
}
}
一周热门 更多>