打印

GD32F470 串口3无法进入中断

[复制链接]
7870|74
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
花火122345|  楼主 | 2023-12-13 14:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 花火122345 于 2023-12-20 16:30 编辑

void UART3_Init()
{
        /* enable GPIO clock */
        rcu_periph_clock_enable(RCU_GPIOC);

        /* enable USART clock */
        rcu_periph_clock_enable(RCU_UART3);

        /* configure the USART0 TX pin and USART0 RX pin */
        gpio_af_set(GPIOC, GPIO_AF_8, GPIO_PIN_11);
        gpio_af_set(GPIOC, GPIO_AF_8, GPIO_PIN_10);

        /* configure UART4 TX as alternate function push-pull */
        gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_10);
        gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10);

        /* configure USART0 RXs alternate fion push-pull */
        gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_PULLDOWN, GPIO_PIN_11);
        //gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_11);

        /* USART configure */
        usart_deinit(UART3);
        usart_baudrate_set(UART3, 115200U);
        usart_receive_config(UART3, USART_RECEIVE_ENABLE);
        usart_transmit_config(UART3, USART_TRANSMIT_ENABLE);
        usart_enable(UART3);


        nvic_irq_enable(UART3_IRQn,0,1);
        /* enable USART TBE interrupt */
        usart_interrupt_enable(UART3_IRQn, USART_INT_TBE);
        usart_interrupt_enable(UART3_IRQn, USART_INT_RBNE);
        usart_interrupt_enable(UART3_IRQn, USART_INT_IDLE);
}

        
void UART3_IRQHandler(void)
{
        if((RESET != usart_interrupt_flag_get(UART3, USART_INT_FLAG_RBNE)) &&
                        (RESET != usart_flag_get(UART3, USART_FLAG_RBNE))) {
                /* receive data */
                USART_Receive_Data[0] = usart_data_receive(UART3);
        }
        if((RESET != usart_interrupt_flag_get(UART3, USART_INT_FLAG_IDLE)) &&
        (RESET != usart_flag_get(UART3, USART_FLAG_IDLE))) {
        /* receive data */
                usart_interrupt_flag_clear(UART3,USART_INT_FLAG_IDLE);
        }
}

这样配置无法进入中断,是什么原因?

使用特权

评论回复
沙发
tpgf| | 2024-1-3 16:44 | 只看该作者
串口三的引脚有没有和其他的功能进行复用啊

使用特权

评论回复
板凳
qcliu| | 2024-1-3 21:59 | 只看该作者
另外楼主还需要对io口进行初始化

使用特权

评论回复
地板
drer| | 2024-1-4 10:20 | 只看该作者
相关的串口中断使能开启了吗

使用特权

评论回复
5
coshi| | 2024-1-4 11:43 | 只看该作者
首先要确认数据 是不是已经发送到串口了

使用特权

评论回复
6
乌月明星稀| | 2024-1-4 13:15 | 只看该作者
这配置看起来没什么问题,如果没有屏蔽全局中断,在执行完 usart_interrupt_enable(UART3_IRQn, USART_INT_IDLE);;这句异常中断优先级配置后,没一会就会进入空闲中断。
你查一下是否有中断锁?其他中断是否能够进入?

使用特权

评论回复
7
loutin| | 2024-1-4 17:28 | 只看该作者
串口3的中断使能位已经设置              

使用特权

评论回复
8
yorkbarney| | 2024-1-4 17:36 | 只看该作者
需要检查是否正确设置了中断优先级以及使能了中断

使用特权

评论回复
9
1988020566| | 2024-1-4 18:07 | 只看该作者
已实现串口的中断服务程序,并且该函数没有错误

使用特权

评论回复
10
wiba| | 2024-1-4 23:20 | 只看该作者
引脚初始化  中断使能   引脚是否复用了  是否真的有数据发送过来了  这个都要排查

使用特权

评论回复
11
kxsi| | 2024-1-4 23:54 | 只看该作者
如果可以进入其他串口中断 那么可以确定的就是总中断是开启的

使用特权

评论回复
12
kkzz| | 2024-1-5 09:25 | 只看该作者
需要确保已经正确配置了GPIO和USART时钟。

使用特权

评论回复
13
ccook11| | 2024-1-5 10:21 | 只看该作者
正确配置了串口3的中断。这包括设置中断优先级、使能中断、并且确保中断向量表正确。

使用特权

评论回复
14
robertesth| | 2024-1-5 10:35 | 只看该作者
需要检查一下串口3的中断优先级设置

使用特权

评论回复
15
belindagraham| | 2024-1-5 10:57 | 只看该作者
可以参考GD32F470官方库或者第三方开发资源提供的USART中断配置示例代码

使用特权

评论回复
16
sdlls| | 2024-1-5 16:24 | 只看该作者
如果使用了外部硬件,如电平转换器或某些特殊的串口芯片

使用特权

评论回复
17
nomomy| | 2024-1-5 16:40 | 只看该作者
中断服务例程(ISR)能够正确响应中断,并且没有错误地禁用了中断。

使用特权

评论回复
18
mattlincoln| | 2024-1-5 16:56 | 只看该作者
其他中断源与串口3的中断线有冲突,可能会导致串口3无法进入中断

使用特权

评论回复
19
burgessmaggie| | 2024-1-5 17:16 | 只看该作者
调整中断嵌套设置,确保串口中断能够正常响应。

使用特权

评论回复
20
phoenixwhite| | 2024-1-5 17:35 | 只看该作者
选择了正确的中断触发方式              

使用特权

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

本版积分规则

2

主题

4

帖子

0

粉丝