你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm8串口收发多个字节的问题

[复制链接]
歇斯底里a 提问时间:2017-4-22 16:30 /
我这样修改了下,在中断里写接收到了2个字节的数据 就把标志位flagTxd置1,主函数里判断flagTxd是否置1,然后把数据给发出来,这样是收发没问题的,但是 if(UART_RX_NUM==2)这个计数的条件 我换成大于等1他就是一个字节正常收发,大于等于2他就是两个字节正常收发,多了少了都发的接受错误的数据,感觉 RX_MUN没有在2个函数同步操作,我想不通原因,纠结了好久



INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)
{
    /* In order to detect unexpected events during development,
       it is recommended to set a breakpoint on the following instruction.
    */
      //u8 Res,i;
      if(UART1_GetITStatus(UART1_IT_RXNE)!= RESET)                     
          RxBuffer[ UART_RX_NUM++] = UART1_ReceiveData8();
         if(UART_RX_NUM==2)
         {
          flagTxd=1;
         }
        UART1_ClearITPendingBit(UART1_IT_RXNE);



int main( void )
{
     u8 i,len1;
  //u8 ad[4],i;
  //fp32 cc=3.14;
  sysInit();
   while(1)
  {

   if(flagTxd==1)
       {
        // len1=UART_RX_NUM;        //得到此次接收到的数据长度
       //UART1_Send_Byte(len1);


      for(i=0;i<UART_RX_NUM;i++)
        {
           UART1_Send_Byte(RxBuffer[i]);
          }
         delay_us(50);

          UART_RX_NUM=0;       
          flagTxd=0;

       }



收藏 1 评论1 发布时间:2017-4-22 16:30

举报

1个回答
enjoyfreescal 回答时间:2017-4-24 15:17:50
UART_RX_NUM在发送的地方设置为0,但是接收的地方++了,这样会有冲突(还没发完又有数据),除非flagTxd == 1的时候不接收新数据,或则自己想一下解决方案吧。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版