注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
yick的个人空间 https://home.eeworld.com.cn/space-uid-622276.html [收藏] [复制] [分享] [RSS]
日志

STM32的UART5中断收发数据问题

已有 3252 次阅读2015-5-11 15:35

波特率是9600
void UART5_IRQHandler(void)
{
        u8 res;               
        //if(USART_GetFlagStatus(UART5, USART_FLAG_RXNE)!=RESET)
        if(USART_GetITStatus(UART5, USART_IT_RXNE) != RESET)//接收到数据中断,(接收到的数据必须是0x0d 0x0a结尾)
        {               
                res =USART_ReceiveData(UART5);//读取到收到的数据       
                if(UART5_RX_STA<UART5_MAX_RECV_LEN)                //还可以接收数据
                {
                        TIM_SetCounter(TIM3,0);//计数器清空                                         
                        if(UART5_RX_STA==0)TIM3_Set(1);                 //使能定时器3的中断
                        UART5_RX_BUF[UART5_RX_STA++]=res;                //记录接收到的值                                
                }else
                {
                        UART5_RX_STA|=1<<15;                                        //强制标记接收完成
                }         
         }       
}

采用的是循环发送数据方式:
/**************************************************
  UART5发送一个字节
**************************************************/
void UART5_Tx_Char(u8 i)
{
    USART_SendData(UART5,i); //发往WIFI模块
        while(USART_GetFlagStatus(UART5, USART_FLAG_TXE)==RESET);
}  
/*******************************************
UART5发送字符串
*******************************************/
void UART5_Tx_Str(u8 *pt, u8 length)
{   
        u8 i;
        for( i=0;i<length;i++ ){
        UART5_Tx_Char(*pt++);       
        //printf("\r\nUART5_test_2:\r\n",USART_ReceiveData(UART5));
   }       
   //delay_ms(500);
}  

UART5发送数据没有问题,但是接受数据时,平均每10次有两次会收不到数据,这是为什么?
(UART5<=>WIFI,手册技术支持上WIFI波特率115200,但是我试过115200,收发数据根本不行,9600恰好可以)

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章