OpenEdv-开源电子网

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

STM32 485通信不能进入中断

[复制链接]

1

主题

4

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2018-8-13
在线时间
7 小时
发表于 2018-8-28 13:46:23 | 显示全部楼层 |阅读模式
8金钱
//初始化
void RS485_Init(void)  
{   

            USART_InitTypeDef USART_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;   

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);//ê1ÄüGPIOA/USARTê±Öó
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//1|Äü¸′óÃIOê±Öóê1Äü

        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;           //
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;   //
        GPIO_Init(GPIOA,&GPIO_InitStructure);        //

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



        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;             //
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   //
             GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       
        GPIO_Init(GPIOA, &GPIO_InitStructure);
        GPIO_SetBits(GPIOA, GPIO_Pin_8);//默认发送模式

        USART_ClearFlag(USART1,USART_FLAG_TC);//
        USART_StructInit(&USART_InitStructure);
        USART_Init(USART1,&USART_InitStructure);
            USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);        //



        NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;     
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority =1;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
          
}  
//中断函数
void USART1_IRQHandler(void)     
{

  if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
  {

        USART_ClearITPendingBit(USART1, USART_IT_RXNE);
        USART1_Buffer[uart_p]=USART_ReceiveData(USART1);
        uart_p++;
  }       

}

//串口发送数据
void RS485_Send_Data(u8 byte[])  
{                   
     u8 i;
     GPIO_SetBits(GPIOA, GPIO_Pin_8);
           for(i=0;i<8;i++)
           {
           USART_SendData(USART1,byte[i]);
           while( USART_GetFlagStatus(USART1,USART_FLAG_TC)!= SET);
           }
           GPIO_ResetBits(GPIOA, GPIO_Pin_8);
           delay_ms(2000);//等待接收中断
                 
}
                       
我刚开始是用的232接收和发送 通过串口助手测试成功了 但现在换成了485(相同串口,只是多了控制脚),就发现只能发送,中断接收不能实现了,应该是程序没有进入中断,一直无法解决 求大神帮忙

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

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2016-4-23
在线时间
6 小时
发表于 2018-8-28 15:15:10 | 显示全部楼层
请485两个EN脚是否并联,然后请测量485EN脚电压是否为0V。
回复

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2017-6-3
在线时间
28 小时
发表于 2018-8-28 15:26:43 | 显示全部楼层
有没解决方案呢,我也遇到同样的问题
回复

使用道具 举报

0

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
175
金钱
175
注册时间
2018-8-1
在线时间
54 小时
发表于 2018-8-29 15:58:47 | 显示全部楼层
是不是中断没使能啊
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7568
金钱
7568
注册时间
2016-11-30
在线时间
643 小时
发表于 2018-8-29 16:05:11 | 显示全部楼层
最主要是确认硬件有没有问题。485芯片是否处于接收模式?
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2018-8-13
在线时间
7 小时
 楼主| 发表于 2018-8-29 20:10:01 | 显示全部楼层
lvkanger 发表于 2018-8-29 16:05
最主要是确认硬件有没有问题。485芯片是否处于接收模式?

请问怎么测试呢? 我只知道切换为接收时不能发送了  但是不是接收状态就不知道了
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2018-8-13
在线时间
7 小时
 楼主| 发表于 2018-8-29 20:10:28 | 显示全部楼层
王十二 发表于 2018-8-29 15:58
是不是中断没使能啊

使能了的  232测试时通过了
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7568
金钱
7568
注册时间
2016-11-30
在线时间
643 小时
发表于 2018-8-30 09:07:38 | 显示全部楼层
wannianjie 发表于 2018-8-29 20:10
请问怎么测试呢? 我只知道切换为接收时不能发送了  但是不是接收状态就不知道了

测量485芯片DE,R\E\引脚是否都为低电平
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2018-4-9
在线时间
7 小时
发表于 2018-8-30 09:27:09 | 显示全部楼层
我使用485通讯 默认EN脚和RE低电平 ,即默认接收模式,打开相关串口的接收中断。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 11:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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