rs485接收中断函数使能_关于STM32串口调试RS485时自动进入接收中断

//*******************************************************************

//作用:RS485初始化

//参数:BPS-波特率

//      StopBit-停止位,1为1位,2为2位

//      Parity-校验方式,0为无校验,1为寄校验,2为偶校验

//返回:无

//*******************************************************************

void RS485Init(Uint32 BPS, Uint8 StopBit, Uint8 Parity)

{

GPIO_InitTypeDef GPIOInit;

USART_InitTypeDef USARTInit;

NVIC_InitTypeDef NVICInit;

//初始化485使能脚

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);

GPIOInit.GPIO_Pin = GPIO_Pin_15;

GPIOInit.GPIO_Speed = GPIO_Speed_50MHz;

GPIOInit.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_Init(GPIOB, &GPIOInit);

//初始化USART1中断优先级

NVICInit.NVIC_IRQChannel = USART1_IRQn;

NVICInit.NVIC_IRQChannelPreemptionPriority = 1;

NVICInit.NVIC_IRQChannelSubPriority = 1;

NVICInit.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVICInit);

//初始化USART1管脚

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);

GPIOInit.GPIO_Pin = GPIO_Pin_9;

GPIOInit.GPIO_Speed = GPIO_Speed_50MHz;

GPIOInit.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOA, &GPIOInit);

GPIOInit.GPIO_Pin = GPIO_Pin_10;

GPIOInit.GPIO_Speed = GPIO_Speed_50MHz;

// GPIOInit.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIOInit.GPIO_Mode = GPIO_Mode_IPU;//此处设为上拉输入

GPIO_Init(GPIOA, &GPIOInit);

//初始化USART1参数

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

USARTInit.USART_BaudRate = BPS ;

if(StopBit == 1)

{

USARTInit.USART_StopBits = USART_StopBits_1;

}

else

{

USARTInit.USART_StopBits = USART_StopBits_2;

}

if(Parity == 0)

{

USARTInit.USART_WordLength = USART_WordLength_8b;

USARTInit.USART_Parity = USART_Parity_No;

}

else if(Parity == 1)

{

USARTInit.USART_WordLength = USART_WordLength_9b;

USARTInit.USART_Parity = USART_Parity_Odd;

}

else

{

USARTInit.USART_WordLength = USART_WordLength_9b;

USARTInit.USART_Parity = USART_Parity_Even;

}

USARTInit.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;

USARTInit.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

USART_Init(USART1, &USARTInit);

USART_ITConfig(USART1, USART_IT_TC, DISABLE);

USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

USART_Cmd(USART1, ENABLE);

USART_ClearFlag(USART1, USART_FLAG_TC);

RS485RXEn();                //接收使能,根据485芯片设置:高电平则发送使能,低电平则接收使能

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值