OpenEdv-开源电子网

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

RS485 串口接收中断

[复制链接]

17

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2014-10-7
在线时间
0 小时
发表于 2015-11-21 17:55:27 | 显示全部楼层 |阅读模式
5金钱
想调试一下RS485串口接收中断~用终端发送数据,触发串口中断,然后再将接收到的数据发回终端
不知道什么原因,好像接收不到,






以上是我串口中断程序,和接收、发送程序
调试的时候发现是能进入中断的,然后中断执行一次就结束了。。。
不知道哪里原因~求解答。。谢谢

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-11-22 22:46:05 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2015-9-25
在线时间
6 小时
发表于 2015-11-23 14:06:35 | 显示全部楼层
86,88行
回复

使用道具 举报

17

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2014-10-7
在线时间
0 小时
 楼主| 发表于 2015-11-24 15:07:05 | 显示全部楼层
回复【3楼】管管:
---------------------------------
86? 88? 什么东西?
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2015-9-25
在线时间
6 小时
发表于 2015-11-24 15:48:53 | 显示全部楼层
回复【4楼】ddong610:
---------------------------------
86,88那两行程序不一样,USART1->SR,USART2->DR
回复

使用道具 举报

17

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2014-10-7
在线时间
0 小时
 楼主| 发表于 2015-11-24 15:49:44 | 显示全部楼层
之前接收不到好像是我的发送函数有问题,但是之后改了,又出现一个问题
问题是:串口发送任何数字,返回给串口是前面都有东西,不知道从哪里出来的


上面是刚进入调试状态


这是我将断点打在RA_Finish = 0;时,点击串口发送一个0,之后,串口就无缘无故不知道哪里冒出了一个V 


上图是 不管我发上面数值,返回时前面都有乱码,而且,发几个数,返回情况还不一样



上面两图是程序的中断,和发送接收函数~我调试了好久,就是不明白为什么返回值前有乱码~求帮助
请原子哥帮忙看看~谢谢
回复

使用道具 举报

17

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2014-10-7
在线时间
0 小时
 楼主| 发表于 2015-11-24 15:50:40 | 显示全部楼层
回复【5楼】管管:
---------------------------------
帮我看看,我刚发的这个~为什么返回值前面有乱码~谢谢
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2015-9-25
在线时间
6 小时
发表于 2015-11-24 16:12:53 | 显示全部楼层
回复【7楼】ddong610:
---------------------------------
你用的是串口2?你怎么初始化串口2的
回复

使用道具 举报

17

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2014-10-7
在线时间
0 小时
 楼主| 发表于 2015-11-24 16:27:35 | 显示全部楼层
回复【8楼】管管:
---------------------------------
void RS485_Init(u32 pclk1,u32 bound)
{    
float temp;
u16 mantissa;
u16 fraction;    
temp=(float)(pclk1*1000000)/(bound*16);//????USARTDIV
mantissa=temp;  //??????????·?
fraction=(temp-mantissa)*16; //??????????·?  
    mantissa<<=4;
mantissa+=fraction; 
RCC->APB2ENR|=1<<8;    //????PORTG???±??  
  GPIOG->CRH&=0XFFFFFF0F; //IO×????è??
GPIOG->CRH|=0X00000030; //IO×????è??   
 
RCC->APB2ENR|=1<<2;    //????PORTA???±??  
GPIOA->CRL&=0XFFFF00FF; //IO×????è??
GPIOA->CRL|=0X00008B00; //IO×????è??   

RCC->APB1ENR|=1<<17;   //?????????±?? 
  
RCC->APB1RSTR|=1<<17;   //????????2
RCC->APB1RSTR&=~(1<<17);//????????        
//?¨?????è??
  USART2->BRR=mantissa;  // ?¨?????è??  
USART2->CR1|=0X200C;   //1??????,?????é??.
#ifdef EN_USART2_RX    //??????????????
//????????????
USART2->CR1|=1<<8;     //PE????????
USART2->CR1|=1<<5;     //??????????·???????????     
MY_NVIC_Init(3,3,USART2_IRQn,2);//×é2??×????????? 
#endif
RS485_TX_EN=0; //??????????????
}
回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2015-9-25
在线时间
6 小时
发表于 2015-11-24 16:31:48 | 显示全部楼层
temp=(float)(pclk1*1000000)/(bound*16);//????USARTDIV 

把1000000改成500000试试
回复

使用道具 举报

17

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2014-10-7
在线时间
0 小时
 楼主| 发表于 2015-11-24 16:40:01 | 显示全部楼层
回复【10楼】管管:
---------------------------------
不行~连发送的数值都不显示了,只显示乱码~
问一下,你为什么会想到改这个呢
回复

使用道具 举报

17

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2014-10-7
在线时间
0 小时
 楼主| 发表于 2015-11-24 16:42:43 | 显示全部楼层
回复【10楼】管管:
---------------------------------
我的波特率是对的呀
回复

使用道具 举报

17

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2014-10-7
在线时间
0 小时
 楼主| 发表于 2015-11-24 16:45:19 | 显示全部楼层

不管发送什么前面总是有乱码~

回复

使用道具 举报

0

主题

6

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2015-9-25
在线时间
6 小时
发表于 2015-11-24 16:48:28 | 显示全部楼层
回复【13楼】ddong610:
---------------------------------
串口2和串口1是不一样的,我之前也出现过乱码,就是那里的问题,你确定你改的是50万,没多零吧
回复

使用道具 举报

17

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2014-10-7
在线时间
0 小时
 楼主| 发表于 2015-11-24 18:22:08 | 显示全部楼层
回复【14楼】管管:
---------------------------------
我很确定我改了~出现的是乱码~
你这一改波特率肯定不对了呀~
你能告诉串口2和串口1有什么不一样么?
回复

使用道具 举报

17

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2014-10-7
在线时间
0 小时
 楼主| 发表于 2015-11-25 20:32:23 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,能帮忙看一下么~我上面的问题,串口在触发中断之前无缘无故自动发送乱码到串口上~
谢谢~
回复

使用道具 举报

17

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
151
金钱
151
注册时间
2014-10-7
在线时间
0 小时
 楼主| 发表于 2015-11-25 20:39:36 | 显示全部楼层
这是我的程序,


调试的时候把断点打在中断里面,串口发送数据,触发中断~上面都没做串口就接收到   乱码了~
没明白这是怎么回事~

STM32_RS485.rar

2.4 MB, 下载次数: 110

回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-11-25 22:17:31 | 显示全部楼层
回复【17楼】ddong610:
---------------------------------
出一个乱码正常。
持续出乱码就不正常了。
第一个乱码可能是初始化IO的时候,引起的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 14:37

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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