在线时间0 小时
UID281012
ST金币0
蝴蝶豆0
注册时间2011-4-20
新手上路
- 最后登录
- 1970-1-1
|
a0a.1 0b0c
求解答:求帮助:我在中断接收函数里灭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);
}
}
} |
|