OpenEdv-开源电子网

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

探索者F407板子串口3发送正常,进不了接收中断

[复制链接]

5

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2021-5-19
在线时间
64 小时
发表于 2021-6-2 16:33:19 | 显示全部楼层 |阅读模式
1金钱
探索者F407板子串口3发送正常,进不了接收中断!代码如下:
//---------------------------初始化IO 串口3---------------------------------
//bound:波特率
//-------------------------------------------------------------------------
void uart3_init(u32 bound)
{
        //GPIO端口设置
        GPIO_InitTypeDef    GPIO_InitStructure;
        USART_InitTypeDef   USART_InitStructure;
        NVIC_InitTypeDef    NVIC_InitStructure;
       
        //使能GPIOB时钟
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE);
       
       //使能USART3时钟       
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);  

        //串口3对应引脚复用映射
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource10,GPIO_AF_USART3);      //GPIOB10复用为USART3
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource11,GPIO_AF_USART3);      //GPIOB11复用为USART3
       
        //USART3端口配置
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11;      //GPIOB10
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;                  //复用功能
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                  //速度50MHz
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;                //推挽复用输出
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;                  //上拉
        GPIO_Init(GPIOB,&GPIO_InitStructure);                         //初始化PB10
               

       //USART3初始化设置
        USART_InitStructure.USART_BaudRate = bound;                   //波特率设置
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;   //字长为8位数据格式
        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);                     //初始化串口3
       
        //使能串口3
        USART_Cmd(USART3, ENABLE);  
       
        //开启相关中断
        USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);               

        //USART3 NVIC 配置
       NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;             //串口3中断通道
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;       //抢占优先级2
        NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;                      //子优先级3
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                              //IRQ通道使能
        NVIC_Init(&NVIC_InitStructure);                                      //根据指定的参数初始化VIC寄存器
}




//---------------------------串口3中断服务程序------------------------------
//
//-------------------------------------------------------------------------
void USART3_IRQHandler(void)                       
{
        u8 Res;

        if(USART_GetITStatus(USART3, USART_IT_RXNE))            //接收中断
        {
                Res =USART_ReceiveData(USART3);                         //读取接收到的数据
                USART_SendData(USART3,Res);                                 //把接收到的数据再发送出去
    }
}


最佳答案

查看完整内容[请看2#楼]

问题已解决!探索者开发板串口3的RS232硬件接口有问题,同样的代码将串口3的TTL信号跳线至串口2的RS232接口,程序完全正常!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2021-5-19
在线时间
64 小时
 楼主| 发表于 2021-6-2 16:33:20 | 显示全部楼层
问题已解决!探索者开发板串口3的RS232硬件接口有问题,同样的代码将串口3的TTL信号跳线至串口2的RS232接口,程序完全正常!
回复

使用道具 举报

6

主题

890

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1477
金钱
1477
注册时间
2020-8-19
在线时间
335 小时
发表于 2021-6-3 16:43:39 | 显示全部楼层
1.中断优先级分组
2.if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
回复

使用道具 举报

5

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
202
金钱
202
注册时间
2021-5-19
在线时间
64 小时
 楼主| 发表于 2021-6-3 19:11:53 | 显示全部楼层
谢谢!
1、主函数里中断优先及已经分组了
2、if(USART_GetITStatus(USART3, USART_IT_RXNE)) 和if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)是一样的
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-4-4
在线时间
4 小时
发表于 2021-6-20 18:27:33 | 显示全部楼层
请问具体是哪个位置呀?怎么跳线呀?我也碰到相同的问题了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-27 14:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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