OpenEdv-开源电子网

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

串口3的接收中断???

[复制链接]

39

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
399
金钱
399
注册时间
2014-11-7
在线时间
44 小时
发表于 2017-4-13 18:17:49 | 显示全部楼层 |阅读模式
1金钱
//初始化IO 串口3
//bound:波特率
void USART3_Init(u32 bound)
{
        //GPIO端口设置
        GPIO_InitTypeDef  GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;                                    
       
        NVIC_InitTypeDef NVIC_InitStructure;
       
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE); //使能GPIOB时钟
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);//使能USART3时钟

        //串口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与GPIOB11
        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,PB11

        //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
           USART_Cmd(USART3, ENABLE);      //使能串口3        
        USART_ClearFlag(USART3, USART_FLAG_TC);


        USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);//开启相关中断

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

void  USART3_SendData(u8 data)
{
    USART_SendData(USART3, data);        //通过库函数  发送数据
    while(USART_GetFlagStatus(USART3,USART_FLAG_TXE)== RESET);  //等待发送完成。   检测 USART_FLAG_TC 是否置1;    //见库函数 P359 介绍
}

void USART3_SendString(u8 *p)
{
   while(*p)
   {
      USART3_SendData(*p++);
   }
}



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

        if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
         {
                //add my   code;   
         }
}


初始化  发送OK, 可是就是进不了接收中断,咋回事哈? 真是懵逼了。求教!!!


再牛逼的梦想都禁不住傻逼的坚持!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-4-13 18:49:59 | 显示全部楼层
论坛搜索,参考代码一堆,慢慢对比
回复

使用道具 举报

39

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
399
金钱
399
注册时间
2014-11-7
在线时间
44 小时
 楼主| 发表于 2017-4-13 19:18:06 | 显示全部楼层
正点原子 发表于 2017-4-13 18:49
论坛搜索,参考代码一堆,慢慢对比

是呀,很初级的问题, 不知道咋回事
再牛逼的梦想都禁不住傻逼的坚持!
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2017-4-13 19:34:55 | 显示全部楼层
//USART3端口配置
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11; //GPIOB10与GPIOB11
        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,PB11
10.11一个输入一个输出。你的两个都是输出,肯定是发送可以接收不行了
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

5

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2017-1-15
在线时间
19 小时
发表于 2017-4-13 21:45:28 | 显示全部楼层
你把中断程序换成原子哥的代码试试
回复

使用道具 举报

4

主题

28

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2017-3-31
在线时间
17 小时
发表于 2017-4-14 11:37:24 | 显示全部楼层
本帖最后由 suan 于 2017-4-14 11:50 编辑
szczyb1314 发表于 2017-4-13 19:34
//USART3端口配置
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11; //GPIOB10与GPIOB11 ...

但是我看原子的代码,两个都是GPIO_OType_PP; //推挽复用输出,为什么又可以,串口1的
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2017-4-14 15:08:51 | 显示全部楼层
suan 发表于 2017-4-14 11:37
但是我看原子的代码,两个都是GPIO_OType_PP; //推挽复用输出,为什么又可以,串口1的

不知道你看的原子的那个程序是这样子配置的。我的F1都是一个推挽复用输出,一个浮空输入的
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; //PA.9
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //复用推挽输出
    GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA9
   
    //USART1_RX          PA.10
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入
    GPIO_Init(GPIOA, &GPIO_InitStructure);  //初始化PA10
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

4

主题

28

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2017-3-31
在线时间
17 小时
发表于 2017-4-14 15:24:51 | 显示全部楼层
szczyb1314 发表于 2017-4-14 15:08
不知道你看的原子的那个程序是这样子配置的。我的F1都是一个推挽复用输出,一个浮空输入的
GPIO_InitStr ...

串口.png
这是原子写的,串口的代码,但是可以用串口没有问题
我也有些疑惑,为什么可以
F4的板子的
回复

使用道具 举报

39

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
399
金钱
399
注册时间
2014-11-7
在线时间
44 小时
 楼主| 发表于 2017-4-14 18:51:45 | 显示全部楼层
suan 发表于 2017-4-14 15:24
这是原子写的,串口的代码,但是可以用串口没有问题
我也有些疑惑,为什么可以
F4的板子的

对呀,我就是按着原子哥的代码改过来的,发送正常,接收就不正常了
再牛逼的梦想都禁不住傻逼的坚持!
回复

使用道具 举报

4

主题

28

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2017-3-31
在线时间
17 小时
发表于 2017-4-14 23:34:19 | 显示全部楼层
本帖最后由 suan 于 2017-4-14 23:36 编辑
灰太狼小灰兔 发表于 2017-4-14 18:51
对呀,我就是按着原子哥的代码改过来的,发送正常,接收就不正常了

窗口3.png 我才知道,其实f4,推挽输出不管事,最主要的是对照数据手册,对应的io口,才可以使用对应串口的读和写。
回复

使用道具 举报

4

主题

28

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2017-3-31
在线时间
17 小时
发表于 2017-4-14 23:36:57 | 显示全部楼层
本帖最后由 suan 于 2017-4-14 23:38 编辑

啊不对,你的引脚什么的都没问题,为什么不行
我弄得串口2的也是两个推挽输出也没有问题了
你的是什么芯片手册查一下吧
回复

使用道具 举报

39

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
399
金钱
399
注册时间
2014-11-7
在线时间
44 小时
 楼主| 发表于 2017-4-16 00:49:08 | 显示全部楼层
suan 发表于 2017-4-14 23:36
啊不对,你的引脚什么的都没问题,为什么不行
我弄得串口2的也是两个推挽输出也没有问题了
你的是什么芯 ...

407ZGT6哈1
再牛逼的梦想都禁不住傻逼的坚持!
回复

使用道具 举报

39

主题

123

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
399
金钱
399
注册时间
2014-11-7
在线时间
44 小时
 楼主| 发表于 2017-4-17 10:57:51 | 显示全部楼层

在么? 有用串口3的么?
再牛逼的梦想都禁不住傻逼的坚持!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 03:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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