初中生
最后登录1970-1-1
在线时间 小时
注册时间2016-9-7
|
关于USART接收器溢出错误,在网上找了他人写的代码,如下:
第一种:- if(USART_GetITStatus(USART1,USART_IT_ORE) != RESET) //产生溢出中断
- {
- Utemp = USART_ReceiveData(USART1); //扔掉接收的数据
- USART_ClearITPendingBit(USART1, USART_IT_ORE); //清溢出中断标志位
- }
复制代码
第二种:
- if(USART_GetFlagStatus(USART2,USART_FLAG_ORE)==SET)
- {
- USART_ClearFlag(USART2,USART_FLAG_ORE); //读SR其实就是清除标志
- USART_ReceiveData(USART2); //读DR
- }
复制代码 参考他们的代码,加上自己对参考手册的理解,我自己写了如下代码:不知道,写的对不对,望大伙帮忙看看
欢迎大家骚扰
- void DEBUG_USARTx_IRQHandler(void)
- {
- uint8_t temp1,temp2,temp3;
- if(USART_GetFlagStatus(DEBUG_USARTx,USART_FLAG_ORE) == SET) //产生溢出错误
- {
- temp1 = USART_GetFlagStatus(DEBUG_USARTx,USART_FLAG_ORE); //通过读USART_GetFlagStatus()将ORE清零
- temp2 = USART_ReceiveData(DEBUG_USARTx);
- }
- if(USART_GetITStatus(DEBUG_USARTx, USART_IT_RXNE) == SET )
- {
- temp3 = USART_ReceiveData(DEBUG_USARTx);
- USART_SendByte(DEBUG_USARTx,temp3);
复制代码
|
|