OpenEdv-开源电子网

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

stm32 ucosIII中使用USART1,USART2,USART3三个串口中断有问题

[复制链接]

14

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2014-5-25
在线时间
21 小时
发表于 2017-3-24 16:29:46 | 显示全部楼层 |阅读模式
5金钱
最近研究uCOSIII,但是今天在同时用三个串口得时候发现配置好之后三个串口发数据没有问题,USART1接收中断正常,USART2和3不能进入中断,调试跟了一下接收到数据后USART1直接到中断服务函数里,USART2和3都不能进到中断服务函数里,下面附上配置USART1-3得代码,各位帮忙看下,万分感谢!@正点原子 [mw_shl_code=applescript,true]GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
         
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB,ENABLE);       
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2|RCC_APB1Periph_USART3,ENABLE);
        USART_DeInit(USART1);  //¸´Î»´®¿Ú123
        USART_DeInit(USART2);
        USART_DeInit(USART3);
       
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_2;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;       
    GPIO_Init(GPIOA, &GPIO_InitStructure);
   
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_3;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
       
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;       
    GPIO_Init(GPIOB, &GPIO_InitStructure);
               
                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

   //Usart1 NVIC ÅäÖÃ

  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//ÇÀÕ¼ÓÅÏȼ¶3
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;                //×ÓÓÅÏȼ¶3
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQͨµÀʹÄÜ
        NVIC_Init(&NVIC_InitStructure);        //¸ù¾ÝÖ¸¶¨µÄ²ÎÊý³õʼ»¯VIC¼Ä´æÆ÷
       
         //USART ³õʼ»¯ÉèÖÃ
        USART_InitStructure.USART_BaudRate = USART1BaudRate;
        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(USART1, &USART_InitStructure);
   USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
   USART_Cmd(USART1, ENABLE);     
       
       
        NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;       
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;               
        NVIC_Init(&NVIC_InitStructure);       
       
        USART_InitStructure.USART_BaudRate = USART2BaudRate;
        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_ITConfig(USART2, USART_IT_RXNE, ENABLE);
    USART_Cmd(USART2, ENABLE);
       
       
        NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 3;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;       
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;               
        NVIC_Init(&NVIC_InitStructure);               
       
        USART_InitStructure.USART_BaudRate = USART3BaudRate;
        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(USART3, &USART_InitStructure);
    USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
    USART_Cmd(USART3, ENABLE);[/mw_shl_code]

最佳答案

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

裸机你三个串口都发送成功了么?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-3-24 16:29:47 | 显示全部楼层
倩宝宝咿呀咿呀呦 发表于 2017-3-24 22:03
这个就是在串口实验基础上增加了串口2和3,裸机跑得是正常得,但是加上了ucosIII之后就出现了这个情况,u ...

裸机你三个串口都发送成功了么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

186

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
441
金钱
441
注册时间
2016-6-30
在线时间
97 小时
发表于 2017-3-24 17:01:45 | 显示全部楼层
RCC_APB2Periph_AFIO 复用没开?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-3-24 18:39:22 | 显示全部楼层
请先在我们串口实验的基础上(不要用OS),实现串口1+串口2的数据收发,然后再实现串口1+串口2+串口3的收发,最后,再加你的OS
回复

使用道具 举报

14

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2014-5-25
在线时间
21 小时
 楼主| 发表于 2017-3-24 22:03:05 | 显示全部楼层
正点原子 发表于 2017-3-24 18:39
请先在我们串口实验的基础上(不要用OS),实现串口1+串口2的数据收发,然后再实现串口1+串口2+串口3的收发 ...

这个就是在串口实验基础上增加了串口2和3,裸机跑得是正常得,但是加上了ucosIII之后就出现了这个情况,ucosIII也是用的原子哥你们得例程。现在用得C8T6芯片,然后刚刚我用RBT6试了一下竟然没有问题,我就郁闷了……不清楚式哪里得问题,加上os之后中断都进不去
回复

使用道具 举报

14

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2014-5-25
在线时间
21 小时
 楼主| 发表于 2017-3-24 22:04:46 | 显示全部楼层
yijinxiaoyou 发表于 2017-3-24 17:01
RCC_APB2Periph_AFIO 复用没开?

RCC_APB2Periph_AFIO这个要开么?USART1也是在APB2上的啊,不开这个复用也是正常的啊,不知道我表达的对不对
回复

使用道具 举报

14

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
160
金钱
160
注册时间
2014-5-25
在线时间
21 小时
 楼主| 发表于 2017-3-27 10:42:21 | 显示全部楼层
正点原子 发表于 2017-3-25 00:36
裸机你三个串口都发送成功了么?

找到问题所在了原子哥,我得板子上US ART2和3上都接了485芯片,焊掉485芯片就正常了,但是问题又来了,我是在STM32和485中间把USART2和3的RX和TX引出来的,接了485后接收除了问题了?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-22 22:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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