OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2604|回复: 4

关于串口收发错误

[复制链接]

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
发表于 2017-2-21 16:48:04 | 显示全部楼层 |阅读模式
1金钱
void USART1_IRQHandler(void)                                                                            //′®¿ú1ÖD¶Ï′|àíoˉêy
{
  unsigned int i;
  if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)                                //¼ì2aêÇ·ñêǽóêÕÖD¶Ï
  {       
    /* Read one byte from the receive data register */
    RxBuffer[RxCounter++] = USART_ReceiveData(USART1);                                //½óêÕò»×Ö½úêy¾Y
    if(RxCounter == DataSizeOfReceiver)                                                                //èç1û½óêÕêy¾Yá¿μèóú×üêy¾Yá¿
    {                                          
          for(i=0; i< RxCounter; i++) TxBuffer[i]=RxBuffer[i];                         //&#189;&#171;&#189;óê&#213;μ&#189;μ&#196;êy&#190;Y×a′&#230;μ&#189;·¢&#203;íêy×é
          RxCounter=0;                                                                                                        //&#189;óê&#213;&#188;&#198;êy&#198;÷&#199;&#229;á&#227;
             USART_ITConfig(USART1, USART_IT_TXE, ENABLE);                                        //′ò&#191;a′&#174;&#191;ú1·¢&#203;í&#214;D&#182;&#207;£&#172;′ò&#191;aoó&#187;áá¢&#188;′&#214;′DD&#214;D&#182;&#207;·¢&#203;í2ù×÷          
    }

  }

  if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET)                           //&#188;ì2aê&#199;·&#241;ê&#199;·¢&#203;í&#214;D&#182;&#207;
  {   
           /* Send one byte */
    USART_SendData(USART1, TxBuffer[TxCounter++]);                                   //·¢&#203;íò&#187;×&#214;&#189;úêy&#190;Y                                                                                                                                          
    if(TxCounter == DataSizeOfTransfer)                                                           //è&#231;1&#251;·¢&#203;íêy&#190;Yá&#191;μèóú×üêy&#190;Yá&#191;
    {                                                                                  
          USART_ITConfig(USART1, USART_IT_TXE, DISABLE);                           //1&#216;±&#213;′&#174;&#191;ú·¢&#203;í&#214;D&#182;&#207;£&#172;í£&#214;1·¢&#203;í
             GPIO_WriteBit(GPIOA, GPIO_Pin_1, (BitAction)(!GPIO_ReadOutputDataBit(GPIOA, GPIO_Pin_1)));       
          TxCounter=0;                                                                                                   //·¢&#203;í&#188;&#198;êy&#198;÷&#199;&#229;á&#227;
    }   
  }       
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
 楼主| 发表于 2017-2-21 16:50:04 | 显示全部楼层
求助,就是上面那个是串口收发中断的函数,但是实际在实现的过程中出现了问题,就是通过串口助手发送数据给单片机后,显示的是乱码,求助指正一下这个中间哪里出现了问题?
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
发表于 2017-2-21 18:14:39 | 显示全部楼层
显示乱码也有可能是晶振 波特率配置不对
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

33

主题

310

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
495
金钱
495
注册时间
2016-12-31
在线时间
63 小时
 楼主| 发表于 2017-2-21 19:17:19 | 显示全部楼层
南有乔木 发表于 2017-2-21 18:14
显示乱码也有可能是晶振 波特率配置不对

你好,上面那一段程序有没有逻辑错误呀?波特率没问题,因为我查看了一下的
回复

使用道具 举报

1

主题

98

帖子

0

精华

高级会员

Rank: 4

积分
618
金钱
618
注册时间
2015-11-20
在线时间
89 小时
发表于 2017-2-22 11:46:52 | 显示全部楼层
在接收中断中的USART_ITConfig(USART1, USART_IT_TXE, ENABLE);的后面加一条USART_SendData(USART1, 随意数据);试下看??
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-9-22 14:40

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表