OpenEdv-开源电子网

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

stm32f103中用485连接串口2在UCOS系统下接收不到数据

[复制链接]

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2018-4-9
在线时间
27 小时
发表于 2018-9-10 17:30:14 | 显示全部楼层 |阅读模式
3金钱
我在裸机跑串口2的485通信能够正常接收发送,但加上uc操作系统就只能发送接收不到数据,能够进入串口2中断,但没有数据

QQ截图20180910172841.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2018-9-11 02:03:22 | 显示全部楼层
继续调试,看能发送数据不。。。
回复

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2018-4-9
在线时间
27 小时
 楼主| 发表于 2018-9-11 08:46:00 | 显示全部楼层
正点原子 发表于 2018-9-11 02:03
继续调试,看能发送数据不。。。

能够发送数据,但接收不到,这个串口2接收与发送都在一个定时器里面,配置里面的优先级也改过了,但就是只能发送不能接收
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2018-9-12 01:56:51 | 显示全部楼层
孤水 发表于 2018-9-11 08:46
能够发送数据,但接收不到,这个串口2接收与发送都在一个定时器里面,配置里面的优先级也改过了,但就是 ...

检查串口接收配置
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2018-4-9
在线时间
27 小时
 楼主| 发表于 2018-9-12 11:22:37 | 显示全部楼层

这是照抄原子哥你裸机485通信的配置,用了2个串口,串口1正常,串口2只能发,不能收,不知道问题出在什么地方啦,加上操作系统,我是不是要修改ucos里面的配置

void RS485_Init(u32 bound)
{  
         GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
  
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE);//ê1ÄüGPIOA,Dê±Öó
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//ê1ÄüUSART2ê±Öó
        USART_DeInit(USART2);  //¸′λ′®¿ú1
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;                                 //PD7¶Ë¿úÅäÖÃ
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //íÆíìêä3ö
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOD, &GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;        //PA2
       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;        //¸′óÃíÆíì
       GPIO_Init(GPIOA, &GPIO_InitStructure);
   
       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;//PA3
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //¸¡¿Õêäèë
      GPIO_Init(GPIOA, &GPIO_InitStructure);  

        RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2,ENABLE);//¸′λ′®¿ú2
        RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2,DISABLE);//í£Ö1¸′λ

       
#ifdef EN_USART2_RX                          //èç1ûê1Äüá˽óêÕ
        USART_InitStructure.USART_BaudRate = bound;//2¨ìØÂêéèÖÃ
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;//8λêy¾Y3¤¶è
        USART_InitStructure.USART_StopBits = USART_StopBits_1;//ò»¸öí£Ö1λ
        USART_InitStructure.USART_Parity = USART_Parity_No;///ÆæÅ¼D£Ñéλ
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//ÎTó2¼têy¾Yá÷¿ØÖÆ
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//êÕ·¢Ä£ê½

  USART_Init(USART2, &USART_InitStructure); ; //3õê¼»ˉ′®¿ú
  
        NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; //ê1Äü′®¿ú2ÖD¶Ï
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; //ÏèÕ¼óÅÏè¼¶2¼¶
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //′óóÅÏè¼¶2¼¶
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //ê1Äüía2¿ÖD¶Ïí¨μà
        NVIC_Init(&NVIC_InitStructure); //¸ù¾YNVIC_InitStructÖDÖ¸¶¨μÄ2Îêy3õê¼»ˉíaéèNVIC¼Ä′æÆ÷

  USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//¿aÆôÖD¶Ï
   
  USART_Cmd(USART2, ENABLE);                    //ê1Äü′®¿ú

#endif

  RS485_TX_EN=0;                        //ĬèÏÎa½óêÕÄ£ê½

}
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2020-3-16
在线时间
15 小时
发表于 2020-7-9 20:20:30 来自手机 | 显示全部楼层
楼主找到原因了么
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-1 03:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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