关于stmf103zet6 RS485串口通信 发送数据接收不到相关问题

「已注销」 2017-10-29 12:59:17
以下为初始化代码
void USART2_Init(u32 bound){

GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);


GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7; //CS-485
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOD,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;//TX
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_Init(GPIOD,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;//RX
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOD,&GPIO_InitStructure);

GPIO_PinRemapConfig(GPIO_Remap_USART2,ENABLE);

USART_InitStructure.USART_BaudRate = bound;

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_Cmd(USART2, ENABLE);

USART_ClearFlag(USART2, USART_FLAG_TC);

USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);

NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;

NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

RS485_TX_EN=0;
}
-----------------------------以下为中断服务----
void USART2_IRQHandler(void){
u8 r;
if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET){
r=USART_ReceiveData(USART2);
//RS485_TX_EN=1;
USART_SendData(USART2,r);
delay_ms(5);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC) != SET);
// RS485_TX_EN=0;
}
USART_ClearFlag(USART2,USART_FLAG_TC);
}
-------------------------------------------------------------------
问题是,用u转485对接板子和电脑,串口助手 发送数据,一直收不到,
...全文
472 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2017-10-30
  • 打赏
  • 举报
回复
引用 2 楼 tys591320 的回复:
电脑要U转485 芯片要485转TTL 而且你确定电脑数据一定发出来了么 还有485转TTL如果没有自动流向控制 需要在程序里控制是接收还是发送状态
用的确实是u转485的口,我换了3个串口软件发送接收数据,都得不到回馈,,ttl我试试,
「已注销」 2017-10-30
  • 打赏
  • 举报
回复
引用 1 楼 w22net 的回复:
对电脑应该能收到,板子收不到可能是程序问题
问题是两者都收不到,,,,
依然冷暖 2017-10-30
  • 打赏
  • 举报
回复
电脑要U转485 芯片要485转TTL 而且你确定电脑数据一定发出来了么 还有485转TTL如果没有自动流向控制 需要在程序里控制是接收还是发送状态
w22net 2017-10-29
  • 打赏
  • 举报
回复
对电脑应该能收到,板子收不到可能是程序问题

27,374

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧