给的资料串口通信只有USART1,我改成USART2,但是用不了,萌新快哭了

2019-07-21 04:32发布

void MYUSART2_Init2(u32 My_BaudRate)
{
        GPIO_InitTypeDef GPIO_InitStrue;
        USART_InitTypeDef USART_InitStrue;
        NVIC_InitTypeDef NVIC_InitStrue;
       
        // 外设使能时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
        USART_DeInit(USART2);  //复位串口2 -> 可以没有
       
        // 初始化 串口对应IO口  TX-PA2  RX-PA3
        GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStrue.GPIO_Pin=GPIO_Pin_2;
        GPIO_InitStrue.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStrue);
       
        GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING;
        GPIO_InitStrue.GPIO_Pin=GPIO_Pin_3;
  GPIO_Init(GPIOA,&GPIO_InitStrue);
       
        // 初始化 串口模式状态
        USART_InitStrue.USART_BaudRate=My_BaudRate; // 波特率
        USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None; // 硬件流控制
        USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx; // 发送 接收 模式都使用
        USART_InitStrue.USART_Parity=USART_Parity_No; // 没有奇偶校验
        USART_InitStrue.USART_StopBits=USART_StopBits_1; // 一位停止位
        USART_InitStrue.USART_WordLength=USART_WordLength_8b; // 每次发送数据宽度为8位
        USART_Init(USART2,&USART_InitStrue);
       
        USART_Cmd(USART2,ENABLE);//使能串口
        USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);//开启接收中断
       
        // 初始化 中断优先级
        NVIC_InitStrue.NVIC_IRQChannel=USART2_IRQn;
        NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=1;
        NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;
        NVIC_Init(&NVIC_InitStrue);
}

void USART2_IRQHandler(void) // 串口2中断服务函数
{
        u8 res;
        if(USART_GetITStatus(USART2,USART_IT_RXNE)) // 中断标志
{
     res= USART_ReceiveData(USART2);  // 串口2 接收
     USART_SendData(USART2,res);   // 串口2 发送
  }

}
int main(void)
{       
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        MYUSART2_Init2(115200);
         while(1);
         
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
nashui_sx
1楼-- · 2019-07-21 05:36
代码没问题,好好检查接线吧
郭杰
2楼-- · 2019-07-21 10:11
nashui_sx 发表于 2019-3-9 13:05
代码没问题,好好检查接线吧

没有接线, 就那一块板子,要不然我试试USART3?
郭杰
3楼-- · 2019-07-21 11:23
有大佬知道为啥吗,正点原子精英版开发板,想用USART2进行通信,用的ATKXCOM(资料给的串口调试助手),把USART1改成USART2的就不行,没有反应
nashui_sx
4楼-- · 2019-07-21 16:39
 精彩回答 2  元偷偷看……
翼行园子
5楼-- · 2019-07-21 17:45
你用XCOM的话 你串口二的IO接口有没有TTL转USB接到电脑呢
1208
6楼-- · 2019-07-21 18:24

一周热门 更多>