想要通过串口输入数据控制LED灯,下面的中断处理函数可行吗,有哪个地方不对,实际执行是不行的。
//中断处理函数
void USART1_IRQHandler(void)
{
u8 res;
if(USART_GetITStatus(USART1,USART_IT_RXNE)){
res=USART_ReceiveData(USART1);
USART_SendData(USART1,++res);
switch(res)
{
case 1:
GPIO_ResetBits(GPIOF,GPIO_Pin_9);
case 2:
GPIO_ResetBits(GPIOF,GPIO_Pin_10);
default:
GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
}
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
++res
这步已经改变res的值了,注意没?
另外,没有break,每项case都会执行一遍。
++去掉了,加了break,执行还是不对。仍然控制不了LED灯,求解//中断处理函数
void USART1_IRQHandler(void)
{
u8 res;
if(USART_GetITStatus(USART1,USART_IT_RXNE)){
res=USART_ReceiveData(USART1);
USART_SendData(USART1,res);
switch(res)
{
case 1:
GPIO_ResetBits(GPIOF,GPIO_Pin_9);
break;
case 2:
GPIO_ResetBits(GPIOF,GPIO_Pin_10);
break;
default:
GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
break;
}
}
你串口发送的是十六位模式发送还是字符模式发送,字符发送的1时,对应十六进制是 0X31
一周热门 更多>