打印
[STM32F0]

关于485通讯RE角置位问题

[复制链接]
906|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gujiahui|  楼主 | 2017-5-3 14:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文用STM32F0芯片设计485通讯,端口初始化和主程序如下图,此程序为检测程序,编译无误。
int main(void)
{       
        RCC_Configuration();//ʱÖÓ³õʼ»¯SystemInit
        GPIO_Configuration();
        GPIO_SetBits(GPIOB,GPIO_Pin_1);
        USART2_Configuration();
        USART2_NVIC_Config();

        while(1)
        {
                GPIO_SetBits(GPIOB,GPIO_Pin_1);
   //        put_c('w');
                //yanshi(1000);//GPIO_SetBits(GPIOB,GPIO_Pin_1);       
        }
       

}

void RCC_Configuration(void)
{
        SystemInit();
        RCC_APB2PeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_AHBPeriph_GPIOB,ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
}

void GPIO_Configuration(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        GPIO_InitStructure.GPIO_Pin=hw1|hw2|hw3|hw4|hw5|hw6|hw7|hw8;
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
       
       

        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;//RE
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
        GPIO_Init(GPIOB,&GPIO_InitStructure);
//        GPIO_SetBits(GPIOB,GPIO_Pin_1);
       
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//TX
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
        GPIO_Init(GPIOA,&GPIO_InitStructure);

        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//RX
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN;
//        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
//        GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_NOPULL;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
}

void USART2_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_NVIC_Config(void)
{
        NVIC_InitTypeDef NVIC_InitStructure;
       
        NVIC_InitStructure.NVIC_IRQChannel=USART2_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStructure.NVIC_IRQChannelPriority=0;
        NVIC_Init(&NVIC_InitStructure);
       
}


不知道什么原因用此方法设计置RE角为高电位时示波器检测反应RE为低 TX常高,不知道是不是设置错误,再次求助,谢谢各位
沙发
ZhenCiLiao| | 2017-5-3 16:17 | 只看该作者
我觉得RE配置没什么问题 ,倒是TX和RX的配置我感觉不对

使用特权

评论回复
板凳
xiaoyaodz| | 2017-5-3 17:10 | 只看该作者
RE角置位是什么?

使用特权

评论回复
地板
xiaoyaodz| | 2017-5-3 17:11 | 只看该作者
这个串口配置不是很多的代码可以参考吗?楼主去找一下disconvery代码

使用特权

评论回复
5
gujiahui|  楼主 | 2017-5-3 19:53 | 只看该作者
xiaoyaodz 发表于 2017-5-3 17:10
RE角置位是什么?

置高 我代码给的高,实际测试出的是低,测试过硬件没有问题

使用特权

评论回复
6
gujiahui|  楼主 | 2017-5-3 19:54 | 只看该作者
ZhenCiLiao 发表于 2017-5-3 16:17
我觉得RE配置没什么问题 ,倒是TX和RX的配置我感觉不对

这里面我感觉也有点问题,但是查过之后和例程一样,没有问题,看过配置自我理解也没有问题,但是感觉怪怪的,TX出来的信号一直都是高,所以我在想是不是相互之间配置冲突了或者短路了?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

34

帖子

0

粉丝