打印
[N32G45x]

串口接收中断一直进不去,但是可以printf发送数据

[复制链接]
1270|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ZHI123456|  楼主 | 2024-9-21 17:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void usart_init(u32 buad)
{   
       
          USART_InitType USART_InitStructure;
          GPIO_InitType GPIO_InitStructure;
          NVIC_InitType NVIC_InitStructure;
          RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA|RCC_APB2_PERIPH_AFIO,ENABLE);
          RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_USART1,ENABLE);
             /* Configure USARTx Tx as alternate function push-pull */
    GPIO_InitStructure.Pin        = GPIO_PIN_9;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode  = GPIO_Mode_AF_PP;
    GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);

    /* Configure USARTx Rx as input floating */
    GPIO_InitStructure.Pin       = GPIO_PIN_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_InitPeripheral(GPIOA, &GPIO_InitStructure);
       
          NVIC_InitStructure.NVIC_IRQChannel            = USART1_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
          NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;
    NVIC_InitStructure.NVIC_IRQChannelCmd         = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
               
          USART_InitStructure.BaudRate            = buad;
    USART_InitStructure.WordLength          = USART_WL_8B;
    USART_InitStructure.StopBits            = USART_STPB_1;
    USART_InitStructure.Parity              = USART_PE_NO;
    USART_InitStructure.HardwareFlowControl = USART_HFCTRL_NONE;
    USART_InitStructure.Mode                = USART_MODE_RX | USART_MODE_TX;

    /* Configure USARTx */
    USART_Init(USART1, &USART_InitStructure);
                USART_ConfigInt(USART1, USART_INT_RXDNE, ENABLE);
    /* Enable the USARTx */
    USART_Enable(USART1, ENABLE);
}


void USART1_IRQHandler(void)                        //串口1中断服务程序
        {
        u8 Res;
        if(USART_GetIntStatus(USART1, USART_INT_RXDNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾)
                {
                Res =USART_ReceiveData(USART1);        //读取接收到的数据
               
                if((USART_RX_STA&0x8000)==0)//接收未完成
                        {
                        if(USART_RX_STA&0x4000)//接收到了0x0d
                                {
                                if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始
                                else USART_RX_STA|=0x8000;        //接收完成了
                                }
                        else //还没收到0X0D
                                {       
                                if(Res==0x0d)USART_RX_STA|=0x4000;
                                else
                                        {
                                        USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
                                        USART_RX_STA++;
                                        if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接收          
                                        }                 
                                }
                        }  
                       
     }
}
       

使用特权

评论回复
沙发
classroom| | 2024-9-22 15:57 | 只看该作者
是否已经使能了UART接收中断。

使用特权

评论回复
评论
William1994 2024-9-22 19:33 回复TA
CubeMx生成的代码,为什么不会开启Rx接收中断? 
板凳
laocuo1142| | 2024-9-22 15:58 | 只看该作者
检查NVIC(嵌套向量中断控制器)是否也启用了UART中断

使用特权

评论回复
地板
flycamelaaa| | 2024-9-22 15:58 | 只看该作者
确认UART中断的优先级设置没有过高或过低,导致其他中断抢占或中断被屏蔽。
使用调试器检查中断优先级寄存器,确保设置正确。

使用特权

评论回复
5
powerantone| | 2024-9-22 15:58 | 只看该作者
验证UART的配置,包括波特率、数据位、停止位和奇偶校验位等,确保与发送方相匹配。
确保没有将UART配置为仅发送模式(如果这样的配置选项存在)。

使用特权

评论回复
6
stormwind123| | 2024-9-22 15:59 | 只看该作者
检查UART的TX和RX引脚是否正确连接到外部设备或测试设备。

使用特权

评论回复
7
probedog| | 2024-9-22 15:59 | 只看该作者
检查是否有任何硬件故障,如引脚短路、开路或信号衰减。

使用特权

评论回复
8
William1994| | 2024-9-22 19:37 | 只看该作者
各位大佬,几年前就碰到同样的问题。
弱弱的请教一下,CubeMx生成的代码,为什么不会开启Rx接收中断?

使用特权

评论回复
9
qintian0303| | 2024-9-22 20:54 | 只看该作者
可以printf发送数据说明硬件问题不大,你说的中断是哪里的中断?printf发送不通过中断的

使用特权

评论回复
10
jobszheng| | 2024-9-22 23:38 | 只看该作者
您这就是没有enable Usart的中断啊!
您仅仅是配置了中断参数而已

使用特权

评论回复
11
xionghaoyun| | 2024-9-23 13:39 | 只看该作者
兄弟你不会发工程???

使用特权

评论回复
12
月亮| | 2024-9-23 13:44 | 只看该作者
盲人摸象;

使用特权

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

本版积分规则

3

主题

5

帖子

0

粉丝