OpenEdv-开源电子网

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

求助:用uart3进不了485接收中断

[复制链接]

5

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2014-2-28
在线时间
2 小时
发表于 2015-12-16 20:11:18 | 显示全部楼层 |阅读模式
5金钱
程序如下:

//初始化IO 串口3
//pclk1CLK1时钟频率(Mhz)
//bound:波特率  
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<<2;   //使能PORTA口时钟    A1  485接、收控制位
  GPIOA->CRL&=0XFFFFFF0F; //IO状态设置
GPIOA->CRL|=0X00000030; //IO状态设置  
 
RCC->APB2ENR|=1<<3;   //使能PORTB口时钟  
GPIOB->CRH&=0XFFFF00FF; //IO状态设置
GPIOB->CRH|=0X00008B00; //IO状态设置   PB10 TX   PB11 RX

RCC->APB1ENR|=1<<18;   //使能串口3时钟 
 
RCC->APB1RSTR|=1<<18;   //复位串口3
RCC->APB1RSTR&=~(1<<18);//停止复位

//波特率设置
  USART3->BRR=mantissa; // 波特率设置  
USART3->CR1|=0X200C;   //1位停止,无校验位.
#ifdef EN_USART3_RX   //如果使能了接收
//使能接收中断
USART3->CR1|=1<<8;     //PE中断使能
USART3->CR1|=1<<5;     //接收缓冲区非空中断使能    
MY_NVIC_Init(3,3,USART3_IRQn,2);//组2,最低优先级  
#endif
RS485_TX_EN=0; //默认为接收模式
}



void USART3_IRQHandler(void)
{
u8 res;
static MotorState Mostate;    
if(USART3->SR&(1<<5))//接收到数据 收到数据  可以接收
{
//处理接收到的数据

}
}


是参照旗舰版程序uart2改的程序,但是死活进不了接收中断,求指点

最佳答案

查看完整内容[请看2#楼]

回复【4楼】pener: --------------------------------- 解决了,其实是我的485电路有问题
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2014-12-12
在线时间
46 小时
发表于 2015-12-16 20:11:19 | 显示全部楼层
回复【4楼】pener:
---------------------------------
解决了,其实是我的485电路有问题
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

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

使用道具 举报

5

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2014-2-28
在线时间
2 小时
 楼主| 发表于 2015-12-17 09:58:44 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
发送数据是正常的,但是用查询方式接收数据收不到,接收中断进不去。我觉得发送数据正常,说明硬件连接和485初始化是正常的,仿真时我也看了,uart的寄存器都按照初始化的程序置位了,接收中断使能了呀,但是不知道什么原因进不去中断。原子哥给看看,初始化程序应该没问题吧,那是什么地方出问题了?谢谢!
回复

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
176
金钱
176
注册时间
2014-12-12
在线时间
46 小时
发表于 2015-12-18 10:22:51 | 显示全部楼层
回复【3楼】single104:
---------------------------------
我的也是这种情况,串口1串口2都正常,就串口3能发送不能接收
回复

使用道具 举报

5

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
66
金钱
66
注册时间
2014-2-28
在线时间
2 小时
 楼主| 发表于 2016-1-15 10:05:55 | 显示全部楼层
前段时间忙,没顾着来回复,我的问题解决了,是485控制管脚被搞错了,配置错管脚了,是低级错误,希望大家以后小心啊!
回复

使用道具 举报

8

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
145
金钱
145
注册时间
2019-4-27
在线时间
88 小时
发表于 2019-11-1 20:12:10 | 显示全部楼层
pener 发表于 2015-12-18 10:22
回复【3楼】single104:
---------------------------------
我的也是这种情况,串口1串口2都正常,就串口3 ...

我也是可以发送无法接收    你的问题解决了吗
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-29 12:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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