昨天的问题还是没有解决,接收数据老是丢,或者多,今天发现串口总是产生ORE错误,这什么造成的,大佬们给点意见
[mw_shl_code=applescript,true]void USART1_IRQHandler(void) //串口1中断服务程序
{
u8 r;
static u8 cnt = 0;
if(USART_GetFlagStatus(USART1,USART_FLAG_ORE) != RESET)
{
USART_ClearFlag(USART1,USART_FLAG_ORE);
r =USART_ReceiveData(USART1);//(USART1->DR); //读取接收到的数据
printf("error");
}
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断
{
r =USART_ReceiveData(USART1);//(USART1->DR); //读取接收到的数据
buf[cnt ++] = r;
if(r == '
')
{
buf[cnt] = ' ';
cnt = 0;
printf("%s",buf);
}
}
USART_ClearFlag(USART1,USART_FLAG_RXNE);
} [/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
http://bbs.21ic.com/forum.php?mo ... =2511860&page=1
我把串口中断调最高先凑合解决了,DMA没有学,可以用DMA直接再从串口发出去吗?或用DMA把数据存到一个缓冲数组。这样是不是就不用进中断了?
一周热门 更多>