OpenEdv-开源电子网

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

STM32F407 USART3进入接收中断

[复制链接]

344

主题

514

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1606
金钱
1606
注册时间
2014-7-11
在线时间
279 小时
发表于 2025-2-11 17:05:38 | 显示全部楼层 |阅读模式
1金钱
我最近做STM32F407 USART3,但是串口不能接收请问是怎么回事

代码如下:

void UART3_Config(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
  USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
      
         /* USART2 -> GPS */
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);

  /* 配置中断源 */
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
  NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);


  GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_USART3);   /* PA2 AF7 USART2_TX */
    GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_USART3);

    GPIO_StructInit(&GPIO_InitStructure);
    GPIO_InitStructure.GPIO_Pin   = GPIO_Pin_10 | GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF;
    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
    GPIO_InitStructure.GPIO_PuPd  = GPIO_PuPd_UP;
    GPIO_Init(GPIOB, &GPIO_InitStructure);
                       
   USART_StructInit(&USART_InitStructure);
    USART_InitStructure.USART_BaudRate            = 115200;
    USART_InitStructure.USART_WordLength          = USART_WordLength_8b;
    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);
      
        /*配置串口接收中断*/
        USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
      
  USART_Cmd(USART3, ENABLE);
}


中断接收

void USART3_IRQHandler(void)
{
    if (USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
    {
        USART3_RxBuffer[USART3_RxLength] = USART_ReceiveData(USART3);
        USART3_RxLength++;
                       
                                if(USART3_RxLength > (USART3_MAXRxLength-1)){
                                        USART3_RxLength = 0;
                                        memset(USART3_RxBuffer, 0, sizeof(USART3_RxBuffer));
                                }
                          if((USART3_RxBuffer[USART3_RxLength-2]==0x0D)&&(USART3_RxBuffer[USART3_RxLength-1]==0x0A)){
                                        C2_flag = 1;
                                        USART3_RxLength = 0;
                                }
    }
}      


现在是进入不了接收中断,请问是哪里的问题

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

使用道具 举报

11

主题

2130

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4724
金钱
4724
注册时间
2015-1-10
在线时间
590 小时
发表于 2025-2-12 09:07:28 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-22 02:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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