2816|7

302

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

初学stm32串口,不知道哪里出错?帮忙看一下 [复制链接]

//用的是串口3,目的是想从电脑发过来7字节数据,完成后再返回
//端口配置部分,
void PBioConfig(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;                   //éùÃ÷ò»¸ö½á11ìå±äá¿£¬óÃà′3õê¼»ˉGPIO
        //SystemInit();                                               //ê±Öó3õê¼»ˉ
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        /*  ÅäÖÃGPIOμÄÄ£ê½oíIO¿ú */
        GPIO_InitStructure.GPIO_Pin=BUZ;                       //Ñ¡ÔñÄãòaéèÖÃμÄIO¿ú
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;               //éèÖÃíÆíìêä3öÄ£ê½
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;               //éèÖÃ′«êäËùÂê
        GPIO_Init(GPIOB,&GPIO_InitStructure);
       
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//TX                             //′®¿úêä3öPB10
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;                 //¸′óÃíÆíìêä3ö
        GPIO_Init(GPIOB,&GPIO_InitStructure);                  /* 3õê¼»ˉ′®¿úêäèëIO */
       
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;//RX                             //′®¿úêäèëPB11
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;           //Ä£Äaêäèë
        GPIO_Init(GPIOB,&GPIO_InitStructure);
       
}

void Usart1_Config()                                          //′®¿ú1ÅäÖÃ
{
  USART_InitTypeDef  USART_InitStructure;                            //′®¿ú½á11ì嶨òå
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);
        USART_InitStructure.USART_BaudRate=9600;                    //2¨ìØÂêéèÖÃÎa9600        //2¨ìØÂê
        USART_InitStructure.USART_WordLength=USART_WordLength_8b;                //êy¾Y3¤8λ
        USART_InitStructure.USART_StopBits=USART_StopBits_1;                          //1λí£Ö1λ
        USART_InitStructure.USART_Parity=USART_Parity_Even;                                  //oD§Ñé
        USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None; //ê§Äüó2¼tá÷
        USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;        //¿aÆô·¢Ëíoí½óêüÄ£ê½
        USART_Init(USART3,&USART_InitStructure);        /* 3õê¼»ˉUSART1 */
        USART_Cmd(USART3, ENABLE);                   /* ê1ÄüUSART1 */
        USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);//ê1Äü»òÕßê§ÄüÖ¸¶¨μÄUSARTÖD¶Ï ½óêÕÖD¶Ï
        USART_ClearFlag(USART3,USART_FLAG_TC);//Çå3yUSARTxμÄ′y′|àí±ê־λ
       
}
void Nvic_Init()
{
  NVIC_InitTypeDef NVIC_InitStructure;//ÖD¶Ï½á11ì嶨òå
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);                 //′ò¿aê±Öó
        /* éèÖÃNVIC2Îêy */
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);   
        NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;                  //′ò¿aUSART1μÄ諾ÖÖD¶Ï
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;          //ÇàÕ¼óÅÏ輶Îa0
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;                              //Ïìó|óÅÏ輶Îa0
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                                //ê1Äü
        NVIC_Init(&NVIC_InitStructure);
}

//中段函数,摘抄的网上的
void USART3_IRQHandler(void)                                               //c′®¿ú3ÖD¶Ï
{
        u8 dat;
        //USART_ClearFlag(USART3,USART_FLAG_TC);
  if (USART_GetITStatus(USART3, USART_IT_ORE) == SET)  
  {  
     USART_ClearITPendingBit(USART3,USART_IT_ORE);      
     USART_ReceiveData( USART3 );  
  }
       
  if( USART_GetITStatus(USART3,USART_IT_RXNE) != RESET )
  {  
     USART_ClearITPendingBit(USART3,USART_IT_RXNE);  
     dat = USART_ReceiveData( USART3 );  
     ReceiveData[RecStrlen++]=dat;  
                 if( RecStrlen >= RECEIVEDATALEN )
                 {
                         RecStrlen=0;
                         ReceiveCompleteFlag=1;
                 }
  }
       
        if( USART_GetITStatus(USART3,USART_IT_TXE) != RESET )
        {
                 USART_ClearITPendingBit(USART3,USART_IT_TXE);
                 if( SendStrlen >0 )
       USART_SendData(USART3,SendBuffer[--SendStrlen]);
  }
}


main()
{
  SystemInit();        //ê±Öó3õê¼»ˉ
        GpioConfig();
        InitState();
        while(1)
        {
                if( ReceiveCompleteFlag )
                {
                        ReceiveCompleteFlag=0;
                        InitCom();
                }
                //BuzOut();
        }
}


void InitCom(void)
{
     u8 i;
     SendStrlen = RECEIVEDATALEN;

     for( i=0;i<7;i++ )
        SendBuffer[i] = ReceiveData[i];
   UartSend(USART3,0xfc);
}

实际操作时,只返回一个FC

此帖出自stm32/stm8论坛

最新回复

你发送的只有一个fc啊  详情 回复 发表于 2018-7-9 18:59
点赞 关注
 

回复
举报

44

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
没具体看,不过我按你用到USART_IT_TXE了,但是没有使能
此帖出自stm32/stm8论坛

点评

ena
使能之后,还是不行的  详情 回复 发表于 2018-7-9 08:09
 
 

回复

302

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
gyp1 发表于 2018-7-8 23:58
没具体看,不过我按你用到USART_IT_TXE了,但是没有使能

使能之后,还是不行的
此帖出自stm32/stm8论坛

点评

USART_IT_ERR和USART_IT_ORE呢?  详情 回复 发表于 2018-7-9 11:30
 
 

回复

380

帖子

0

TA的资源

一粒金砂(高级)

4
 
GPIO你只是初始化成了输入输出,但是Alternate function 好像没有配置
如果要使用内部外设去实现硬件控制GPIO 需要配置GPIO的Alternate function才行
此帖出自stm32/stm8论坛
 
 
 

回复

44

帖子

0

TA的资源

一粒金砂(中级)

5
 
ena 发表于 2018-7-9 08:09
使能之后,还是不行的

USART_IT_ERR和USART_IT_ORE呢?
此帖出自stm32/stm8论坛
 
 
 

回复

3471

帖子

13

TA的资源

五彩晶圆(高级)

6
 
实际操作时,只返回一个FC, 这就是  UartSend(USART3,0xfc);的结果。你要什么结果呢
此帖出自stm32/stm8论坛

点评

ena
过程应该是这样的:发送完成之后,进中断判断是否还有数据,若有继续发送,结果是返回电脑发送过来的数据  详情 回复 发表于 2018-7-9 19:28
 
 
 

回复

193

帖子

0

TA的资源

一粒金砂(中级)

7
 
你发送的只有一个fc啊
此帖出自stm32/stm8论坛
 
 
 

回复

302

帖子

0

TA的资源

一粒金砂(高级)

8
 
ienglgge 发表于 2018-7-9 13:16
实际操作时,只返回一个FC, 这就是  UartSend(USART3,0xfc);的结果。你要什么结果呢

过程应该是这样的:发送完成之后,进中断判断是否还有数据,若有继续发送,结果是返回电脑发送过来的数据
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表