具体情况是这样 我想同时使能串口发送和接收中断
在中断ISR中判断类型 关联OS 消息做成一个串口模块
出现状况就是 不打开发送中断USART_ITConfig(USART1, USART_IT_TXE, ENABLE);//
注释这句,正常运行
一打开这一句 我还未发数据,就不停的进入ISR
开始怀疑没请标示位 但后来加这一句USART_ClearFlag(USART1,USART_FLAG_TXE);
还是不行
烦请版主和大神帮忙指点
我先贴出ISR 然后会上传整个工程
void USART1_IRQHandler(void) //????1????·??????ò(????????·???)
{
u8 Res;
u8 *p;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //????????
{
Res =USART_ReceiveData(USART1);//(USART1->DR); //????????????????
OSQPost(Uart1_In_msg,(u8 *)&Res); //·???????
}
else if (USART_GetITStatus(USART1,USART_IT_TXE) != RESET) //·???????
{
USART_ClearFlag(USART1,USART_FLAG_TXE);
p= OSQAccept(Uart1_Out_msg);
if (p!=0)
{
USART1->DR = *p;
}
else
{
Serial1CanSend = 1;
}
}
} |