打印
[STM32F4]

[问答] STM32F401RE NUCLEO串口中断收发,串口一直不能进中断

[复制链接]
401|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
onlycook|  楼主 | 2023-6-25 10:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32F401RE NUCLEO串口中断收发,配置函数如下:
void UARTConfiguration(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef        NVIC_InitStructure;        
        USART_ClockInitTypeDef USART_ClockInitStruct;

         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);

        GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_USART2);
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_USART2);
        
        GPIO_StructInit(&GPIO_InitStructure);        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
        
//        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
//        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
//        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
//        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
//        GPIO_Init(GPIOA,&GPIO_InitStructure);

//        USART_DeInit(USART2);
//        USART_OverSampling8Cmd(USART2,ENABLE);
        USART_StructInit(&USART_InitStructure);
        USART_InitStructure.USART_BaudRate = 9600;
        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(USART2, &USART_InitStructure);
        USART_ClockStructInit(&USART_ClockInitStruct);   
  USART_ClockInit(USART2, &USART_ClockInitStruct);
        USART_Cmd(USART2, ENABLE);
//        USART_ClearFlag(USART2,USART_FLAG_TC);
        USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);
        
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);        
        NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelCmd =ENABLE;
        NVIC_Init(&NVIC_InitStructure);
}

串口一直不能进中断,而且如果在主函数中发数据,串口调试助手中也没有数据,求大神指点一下,或者直接给我一个STM32F401RE NUCLEO串口的例程

使用特权

评论回复
沙发
Undshing| | 2023-7-1 23:58 | 只看该作者
IO配置有问题吧

使用特权

评论回复
板凳
一只眠羊| | 2023-7-10 21:54 | 只看该作者
你初始化部分做了么?

使用特权

评论回复
地板
在曼谷的春| | 2023-7-10 23:41 | 只看该作者
仿真跟踪一下试试,看程序运行到哪儿了

使用特权

评论回复
5
月亮一键变蓝| | 2023-7-11 01:23 | 只看该作者
你得有接收函数啊,看看你的串口接收函数呗

使用特权

评论回复
6
她已醉| | 2023-7-11 03:05 | 只看该作者
你咋不找个官方的例程,关于串口的例程,找来看看呢

使用特权

评论回复
7
春日负喧| | 2023-7-11 07:28 | 只看该作者
进不来中断也是正常,可能是你中断函数里没有做收到数据之后的处理

使用特权

评论回复
8
温室雏菊| | 2023-7-11 09:06 | 只看该作者
我觉得有可能串口的协议没对上,也会导致数据收不到

使用特权

评论回复
9
故意相遇| | 2023-7-11 11:54 | 只看该作者
你在串口中断那块,打个短点看看

使用特权

评论回复
10
白马过平川| | 2023-7-11 13:35 | 只看该作者
一般也不会啊,串口多简单啊,你是不是波特率没对上啊

使用特权

评论回复
11
风凉| | 2023-7-11 16:27 | 只看该作者
你串口中断函数写了啥啊?

使用特权

评论回复
12
捧一束彼岸花| | 2023-7-11 18:09 | 只看该作者
有没有可能,你线接错了?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

432

主题

1607

帖子

3

粉丝