OpenEdv-开源电子网

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

静默模式接收不到数据

[复制链接]

33

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
309
金钱
309
注册时间
2016-5-20
在线时间
45 小时
发表于 2016-10-17 22:41:04 | 显示全部楼层 |阅读模式
5金钱
//有请大家帮忙看看,静默模式收不到数据

USART_WakeUpConfig(USART2,USART_WakeUp_AddressMark);  //USART2为地址标记唤醒
USART_SetAddress(USART2, 0X01);   //设置USART2的站号为节点地址
USART_ReceiverWakeUpCmd(USART2,ENABLE);   //使能接收唤醒

上面这3行代码不要,能准确的收到数据;
要上面这3行代码,就收不到数据;
是不是哪里设置有问题,请帮忙指点下,谢谢!
下面附上串口助手监控数据的图片



//STM32参考手册540页,USART寄存器描述
//STM32参考手册526页,设置静默模式,
void RS485_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART2_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
       
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);  //使能GPIOA时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);  //使能GPIOD时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);  //使能GPIOF时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);  //使能USART2时钟
       
USART_DeInit(USART2);

//发送接收控制模式       
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;  //PD7
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);

//USART2-TX       
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;  //PA2
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;  //复用推挽
GPIO_Init(GPIOA,&GPIO_InitStructure);

//USART2-RX       
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;  //PA3
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;  //浮空输入
GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_All;  
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;  //下拉输入
GPIO_Init(GPIOF,&GPIO_InitStructure);

RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2,ENABLE);//复位串口2
RCC_APB1PeriphResetCmd(RCC_APB1Periph_USART2,DISABLE);//停止复位

USART2_InitStructure.USART_BaudRate=115200;  //波特率115200
USART2_InitStructure.USART_WordLength=USART_WordLength_8b;  //数据位8位
USART2_InitStructure.USART_StopBits=USART_StopBits_1;  //停止位1位
USART2_InitStructure.USART_Parity=USART_Parity_No ;  //无校验
USART2_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;  //无硬件流
USART2_InitStructure.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;  //发送/接收使能
USART_Init(USART2,&USART2_InitStructure);  //初始化USART2成员变量
USART_Cmd(USART2,ENABLE);  //串口使能

USART_WakeUpConfig(USART2,USART_WakeUp_AddressMark);  //USART2为地址标记唤醒
USART_SetAddress(USART2, 0X01);   //设置USART2的站号为节点地址
USART_ReceiverWakeUpCmd(USART2,ENABLE);   //使能接收唤醒


NVIC_InitStructure.NVIC_IRQChannel=USART2_IRQn;  //USART2全局中断
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;  //通道使能
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;  //抢占优先级为1
NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;  //子优先级为1
NVIC_Init(&NVIC_InitStructure);  //初始化中断成员变量
USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);  //开串口RXNE中断使能

RS485_TX_EN=0;                        //默认为接收模式
}       







}Q5W[I~_V5]~{S5OXRDT`YH.png
BAV8IT0DOFPNIWT\0_BTUA.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

22

主题

751

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1605
金钱
1605
注册时间
2015-6-10
在线时间
222 小时
发表于 2016-10-18 10:42:25 | 显示全部楼层
数据处理是怎么处理的

还是接收什么就返回什么。


还有  地址高位置一试试
回复

使用道具 举报

33

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
309
金钱
309
注册时间
2016-5-20
在线时间
45 小时
 楼主| 发表于 2016-10-18 22:23:51 | 显示全部楼层
是收到什么会什么,高一位也试了,还不行
回复

使用道具 举报

33

主题

99

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
309
金钱
309
注册时间
2016-5-20
在线时间
45 小时
 楼主| 发表于 2016-10-18 22:24:34 | 显示全部楼层
止天 发表于 2016-10-18 10:42
数据处理是怎么处理的

还是接收什么就返回什么。

是收到什么会什么,高一位也试了,还不行,请指点
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 01:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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