串口中断接收
求解答:求帮助:我在中断接收函数里灭led2灯,发现,当我用串口调试助手给开发板发数据的时候,进入不了中断,即2灯不灭,但是当我按下GET_DOWN()||GET_LEFT()||GET_RIGHT()||GET_UP()这四个键中的一个时候(即让开发板先发送数据给pc机),就进入接收中断了,并且串口调试助手上会连续显示100多个a(即我先发送给pc机的数据),我怎么才能通过串口调试助手发送数据给开发板并且让它显示出来呢?
补充:特别说明处事始终进入不了的
接收中断函数:
void USART1_IRQHandler(void)
{
//接收中断
if(USART_GetITStatus(USART1,USART_IT_RXNE)==SET)
{ GPIO_SetBits(GPIOD, GPIO_Pin_7);
USART_ClearITPendingBit(USART1,USART_IT_RXNE);
Uart1_Get_Data=USART_ReceiveData(USART1);
Uart1_Get_Flag=1;
}
//溢出-如果发生溢出需要先清空SR的溢出位,再读DR寄存器 则可清除不断入中断的问题
if(USART_GetFlagStatus(USART1,USART_FLAG_ORE)==SET)
{
USART_ClearFlag(USART1,USART_FLAG_ORE); //清溢出位
USART_ReceiveData(USART1); //读DR
}
}
主函数:
int main(void)
{
u8 Uart1_Get_Data;
u8 Uart1_Get_Flag;
Uart1_Get_Flag=Uart1_Get_Flag;
ChipHalInit(); //片内硬件初始化
ChipOutHalInit(); //片外硬件初始化
for(;;)
{
if(GET_DOWN()||GET_LEFT()||GET_RIGHT()||GET_UP())
{
USART1_Puts("a");
}
if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==SET)
{
GPIO_SetBits(GPIOA, GPIO_Pin_8); //特别说明
Uart1_Get_Flag=0;
USART1_Putc(Uart1_Get_Data);
}
}
}
RE:串口中断接收
你这个(GET_DOWN()||GET_LEFT()||GET_RIGHT()||GET_UP())条件应该是外部中断吧,这部分的代码在哪呢。最好满足外部中断条件后置某标志位才好吧,你试试先用电脑发一个字节数据看看呢。感觉这个还有点象你的效果吧!RE:串口中断接收
没有看到你对串口的初始化,另外,NVIC中断也要开启,很可能是没有开启中断向量列表的优先级和中断使能。RE:串口中断接收
中断处理问题没有解决好,先看一个成功的例子,再在上面有目的的修改RE:串口中断接收
你的配置应该是不正确。RE:串口中断接收
外部中断的问题,看看你的电路
页:
[1]