标题: STM32F103 USART3接收不到数据 [打印本页]

作者: 向往同学    时间: 2018-8-28 13:50
标题: STM32F103 USART3接收不到数据
#include "usart.h"                 

/*******************************************************************************
* 函 数 名         : USART1_Init
* 函数功能                   : USART1初始化函数
* 输    入         : bound:波特率
* 输    出         : 无
*******************************************************************************/
void USART3_Init(u32 bound)
{
   //GPIO端口设置
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE);
       
        /*  配置GPIO的模式和IO口 */
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//TX                           //串口输出PA9
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;            //复用推挽输出
        GPIO_Init(GPIOB,&GPIO_InitStructure);  /* 初始化串口输入IO */
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;//RX                         //串口输入PA10
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;                  //模拟输入
        GPIO_Init(GPIOB,&GPIO_InitStructure); /* 初始化GPIO */
       

   //USART1 初始化设置
        USART_InitStructure.USART_BaudRate = bound;//波特率设置
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式
        USART_InitStructure.USART_StopBits = USART_StopBits_1;//一个停止位
        USART_InitStructure.USART_Parity = USART_Parity_No;//无奇偶校验位
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;        //收发模式
        USART_Init(USART3, &USART_InitStructure); //初始化串口1
       
        USART_Cmd(USART3, ENABLE);  //使能串口1
       
        USART_ClearFlag(USART3, USART_FLAG_TC);
               
        USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//开启相关中断

        //Usart1 NVIC 配置
        NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;//串口1中断通道
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//抢占优先级3
        NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;                //子优先级3
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQ通道使能
        NVIC_Init(&NVIC_InitStructure);        //根据指定的参数初始化VIC寄存器、       
}

/*******************************************************************************
* 函 数 名         : USART1_IRQHandler
* 函数功能                   : USART1中断函数
* 输    入         : 无
* 输    出         : 无
*******************************************************************************/
void USART3_IRQHandler(void)                        //串口1中断服务程序
{
        u8 r;
        if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)  //接收中断
        {
                r =USART_ReceiveData(USART3);//(USART1->DR);        //读取接收到的数据
                USART_SendData(USART3,r);
                while(USART_GetFlagStatus(USART3,USART_FLAG_TC) != SET);
        }
        USART_ClearFlag(USART3,USART_FLAG_TC);
}        


把usart1改成usart3,就接收不到数据了


作者: 向往同学    时间: 2018-8-28 13:51
请大神们指点一下,谢谢
作者: 向往同学    时间: 2018-8-28 14:30
请大神们指点一下,谢谢
作者: 252193666@qq.co    时间: 2018-8-28 15:55
直接下载原子的例程
作者: b516gf    时间: 2018-8-28 15:58
GPIO管脚等你有没有相应的修改先?
作者: 向往同学    时间: 2018-8-30 10:17
b516gf 发表于 2018-8-28 15:58
GPIO管脚等你有没有相应的修改先?

把串口1修改成了串口3
作者: 向往同学    时间: 2018-8-30 10:17
252193666@qq.co 发表于 2018-8-28 15:55
直接下载原子的例程

历程是串口1,想用串口3,修改之后不可以
作者: 人中狼    时间: 2018-8-30 10:51
接收引脚应该设置成内部上拉吧,设置成悬空,如果外部没有上,下拉电阻,引脚状态应该不稳定
作者: seupenn    时间: 2018-10-27 16:31
找到问题了吗??谢谢
作者: CrlikenNN    时间: 2018-10-28 10:11
改一下优先级分组
作者: jianfeii    时间: 2019-11-4 19:40
楼主解决了么,我也碰到这个问题
作者: 仰望星臣    时间: 2020-1-21 03:06
人中狼 发表于 2018-8-30 10:51
接收引脚应该设置成内部上拉吧,设置成悬空,如果外部没有上,下拉电阻,引脚状态应该不稳定

大佬牛逼!困惑了我一个星期的问题




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1