OpenEdv-开源电子网

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

关于RS485通信的问题,请各位帮我看看,为什么我进不了中断?开发板是老战舰STM32zet6

[复制链接]

17

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
309
金钱
309
注册时间
2014-5-1
在线时间
75 小时
发表于 2015-9-9 09:11:43 | 显示全部楼层 |阅读模式
5金钱
void RCC_Configuration(void);
void GPIO_Configuration(void);
void NVIC_Configuration(void);
void USART_Configuration(void);
u8 TX_Buf[8]={0x01,0x03,0x00,0x01,0x00,0x01,0xD5,0xCA};
int main(void)
{
   u8 i=0;
   RCC_Configuration(); //?????±????????
   GPIO_Configuration();//??????????
   USART_Configuration();
   NVIC_Configuration();
   GPIO_SetBits(GPIOE,GPIO_Pin_7);  //485先发送
    for(i=0;i<8;i++)
    {
       USART_SendData(USART2,TX_Buf);
       while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);//????·????ê??±ê???? 
    }
    delay_ms(10);    
    GPIO_ResetBits(GPIOE,GPIO_Pin_7);  //485接收
   while (1);
}

void RCC_Configuration(void)
{
    SystemInit();//72m
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
}

void GPIO_Configuration(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;//CS_485
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_Init(GPIOE,&GPIO_InitStructure);

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

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;//RX
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStructure);
}

void NVIC_Configuration(void)
{
    NVIC_InitTypeDef NVIC_InitStructure; 

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); 

NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; 
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; 
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; 
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
NVIC_Init(&NVIC_InitStructure);
}

void USART_Configuration(void)
{
    USART_InitTypeDef  USART_InitStructure;

USART_InitStructure.USART_BaudRate=9600;
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_ITConfig(USART2,USART_IT_RXNE,ENABLE);
USART_Cmd(USART2,ENABLE);
USART_ClearFlag(USART2,USART_FLAG_TC);
}

void USART2_IRQHandler(void)
{
   u8 temp=0,Count=0;
   u8 WSD[7]={0,0,0,0,0,0,0};
   if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET)
   {
    temp=USART_ReceiveData(USART2);
     WSD[Count]=temp;
        Count++;
        if(Count>7)
        {
            Count=0;
        }
       delay_ms(2);
        GPIO_SetBits(GPIOE,GPIO_Pin_7);
   }
}
我用示波器看了下波形,我发送TX_Buf[8]={0x01,0x03,0x00,0x01,0x00,0x01,0xD5,0xCA}这一串数据过去,能返回数据回来,但是就是进不了接收中断?请各位帮我看看。

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

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2015-9-9 09:39:50 | 显示全部楼层
怎么返回数据的,看代码应该没返回才对
学无止境
回复

使用道具 举报

17

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
309
金钱
309
注册时间
2014-5-1
在线时间
75 小时
 楼主| 发表于 2015-9-9 10:01:17 | 显示全部楼层
回复【2楼】jermy_z:
---------------------------------
我用JTAG仿真的,就是进入不了中断?
回复

使用道具 举报

17

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
309
金钱
309
注册时间
2014-5-1
在线时间
75 小时
 楼主| 发表于 2015-9-9 10:04:58 | 显示全部楼层
回复【2楼】jermy_z:
---------------------------------
  我是在中断里面处理接收的数据呀? 为什么进入不了中断,我用RS232就可以进入中断,加入485就进入不了中断了?知道是什么原因不?
回复

使用道具 举报

17

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
309
金钱
309
注册时间
2014-5-1
在线时间
75 小时
 楼主| 发表于 2015-9-9 10:09:42 | 显示全部楼层
有哪位好心人帮我看看呀,在下非常感激。
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2015-9-9 10:24:54 | 显示全部楼层
回复【4楼】goodzero0409:
---------------------------------
SP3485 芯片需要处于接收状态    你看下你代码是不是这个逻辑
学无止境
回复

使用道具 举报

17

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
309
金钱
309
注册时间
2014-5-1
在线时间
75 小时
 楼主| 发表于 2015-9-9 10:28:56 | 显示全部楼层
回复【6楼】jermy_z:
---------------------------------
 是呀。。 我先发送 发送完成以后 延时5个MS,在改变485为接收状态
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2015-9-9 11:23:17 | 显示全部楼层
回复【7楼】goodzero0409:
---------------------------------
我不知道你是哪版的硬件

我看的一版硬件  485接收发送控制引脚是G9
学无止境
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2015-9-9 11:24:04 | 显示全部楼层
回复【7楼】goodzero0409:
---------------------------------
你看你的原理图   发送/接收控制引脚是不是E7  我手里这版图是G9
学无止境
回复

使用道具 举报

17

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
309
金钱
309
注册时间
2014-5-1
在线时间
75 小时
 楼主| 发表于 2015-9-9 11:33:04 | 显示全部楼层
回复【9楼】jermy_z:
---------------------------------
  能不能把你手里的那个给我参考下
回复

使用道具 举报

17

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
309
金钱
309
注册时间
2014-5-1
在线时间
75 小时
 楼主| 发表于 2015-9-9 11:36:57 | 显示全部楼层


 我数据都返回来了,而且是正常的,就是我在中断里面接收不到?
回复

使用道具 举报

70

主题

6763

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13129
金钱
13129
注册时间
2012-11-26
在线时间
3814 小时
发表于 2015-9-9 12:41:21 | 显示全部楼层
回复【11楼】goodzero0409:
---------------------------------
直接下例程试试吧
学无止境
回复

使用道具 举报

17

主题

71

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
309
金钱
309
注册时间
2014-5-1
在线时间
75 小时
 楼主| 发表于 2015-9-9 16:28:30 | 显示全部楼层
谢谢各位亲。 程序已经调试出来。
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2018-8-13
在线时间
7 小时
发表于 2018-8-13 16:42:40 | 显示全部楼层
楼主你好 请问当时你是怎么解决这个问题的? 我也遇到了同样的问题
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 16:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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