OpenEdv-开源电子网

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

ttl转485求救,谢谢

[复制链接]

3

主题

13

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-6-3
在线时间
0 小时
发表于 2013-6-3 22:10:29 | 显示全部楼层 |阅读模式
ttl转485,发送使能前,DE置1,接收使能前,RE置0,控制端口选用的PB6,但是接收总不成功
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-3 23:16:45 | 显示全部楼层
先硬件无问题吧?
如果硬件无问题,设置为纯接收模式,来测试一下数据接收.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-6-3
在线时间
0 小时
 楼主| 发表于 2013-6-4 14:49:13 | 显示全部楼层
你帮我看一下程序吧
这是截取的主程序
                      SendCnt=1;   
while(SendCnt)
{
FormFrame(i);//组织帧
TxSecCnt=0;
TxTimeOut=0;
        LED2=1;//PBout6,其IO初始化在LED_Iint()里,和PA8,PD2设置一样
TXEIE=1;//TXEIE是发送数据寄存器空中断使能
while((!SendSuccess)&&(!TxTimeOut));
if(1==SendSuccess)
{
break;
}
else
{
TxTimeOut=0;
SendCnt--;
if(0==SendCnt)
TXEIE=0;//关闭发送中断
}
}
if(1==SendSuccess)
{
SendSuccess=0;
RxSecCnt=0;
RxTimeOut=0;
LED2=0;
RXNEIE=1;//RXNEIE是接收数据寄存器非空中断使能
while((!RecvSuccess)&&(!RxTimeOut));
以下是usart.c
void USART1_IRQHandler(void)
{    
if(RXNE)//RXNEIE读数据寄存器非空标志
{  
   
   RecvBuff[RecvFrameCnt]=USART1->DR;
RecvFrameCnt++;
if( RecvFrameNum==RecvFrameCnt)
{
RecvFrameCnt=0;
RecvSuccess=1;
RXNEIE=0;

}


}
if(TXEIE && TXE) // TXE是发送数据寄存器空标志
{
    
if(SendFrameCnt<SendFrameNum)
{

USART1->DR;=SendBuff[SendFrameCnt];
SendFrameCnt++;
}
else
{
TXEIE=0;
SendSuccess=1; 
SendFrameCnt=0;
}
 
}
     
}    
你帮我看一下是不是哪儿出错了,谢谢
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-6-3
在线时间
0 小时
 楼主| 发表于 2013-6-4 20:48:10 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
你帮我看一下程序吧 
这是截取的主程序 
                      SendCnt=1;    
while(SendCnt) 
{
FormFrame(i);//组织帧 
TxSecCnt=0; 
TxTimeOut=0; 
        LED2=1;//PBout6,其IO初始化在LED_Iint()里,和PA8,PD2设置一样 
TXEIE=1;//TXEIE是发送数据寄存器空中断使能 
while((!SendSuccess)&&(!TxTimeOut)); 
if(1==SendSuccess) 

break; 

else 

TxTimeOut=0; 
SendCnt--; 
if(0==SendCnt) 
TXEIE=0;//关闭发送中断 


if(1==SendSuccess) 

SendSuccess=0; 
RxSecCnt=0; 
RxTimeOut=0; 
LED2=0; 
RXNEIE=1;//RXNEIE是接收数据寄存器非空中断使能 
while((!RecvSuccess)&&(!RxTimeOut)); 
以下是usart.c 
void USART1_IRQHandler(void) 
{     
if(RXNE)//RXNEIE读数据寄存器非空标志 
{   
   
   RecvBuff[RecvFrameCnt]=USART1->DR; 
RecvFrameCnt++; 
if( RecvFrameNum==RecvFrameCnt) 

RecvFrameCnt=0; 
RecvSuccess=1; 
RXNEIE=0; 





if(TXEIE && TXE) // TXE是发送数据寄存器空标志 

    
if(SendFrameCnt<SendFrameNum) 
{

USART1->DR;=SendBuff[SendFrameCnt]; 
SendFrameCnt++; 

else

TXEIE=0; 
SendSuccess=1;  
SendFrameCnt=0;
}
  
}
      
}      
你帮我看一下是不是哪儿出错了,谢谢
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-4 23:37:50 | 显示全部楼层
还不如我帮你写了算了.
我们有485的例程,何不你看看我的代码?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2013-6-3
在线时间
0 小时
 楼主| 发表于 2013-6-5 14:26:30 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
你说的485例程在哪儿下载,谢谢
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-6-5 23:28:57 | 显示全部楼层
论坛搜索:485
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-19 01:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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