简介

rs485是一种硬件通信接口,USART引脚的TTL电平通过SP485芯片转换为差分信号,+2V~+6V表示"0",- 6V~- 2V表示"1"。RS485有两线制和四线制两种接线,四线制是全双工通讯方式,本文采用两线制半双工通讯方式。

1 rs485初始化

    //1、USART配置/* enable GPIO clock */rcu_periph_clock_enable(RCU_GPIOB);/* enable USART clock */rcu_periph_clock_enable(RCU_USART2);/* connect port to USARTx_Tx */gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_10 );/* connect port to USARTx_Rx */gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_11);/* USART configure */usart_deinit(USART2);usart_baudrate_set(USART2, 9600U);usart_receive_config(USART2, USART_RECEIVE_ENABLE);        //默认接收使能usart_transmit_config(USART2, USART_TRANSMIT_ENABLE);usart_enable(com);//2、 rs485使能/* enable the RS485_OE clock */rcu_periph_clock_enable(RCU_GPIOC);/* configure led GPIO port */gpio_init(GPIOC, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_3);GPIO_BC(GPIOC) = GPIO_PIN_3;    //默认接收使能//3、rs485中断初始化nvic_irq_enable(USART2_IRQn,0, 1U);usart_interrupt_enable(USART2, USART_INT_RBNE);         /* 使能USART2读区非空中断 */  usart_interrupt_enable(USART2, USART_INT_IDLE);         /* 使能USART2空闲中断 */

2 rs485发送数据

//发送数据
int rs485_send_data(uint8_t *buf, uint32_t len)
{   gpio_bit_set(GPIOC,  GPIO_PIN_3);; // 设置为发送模式while(len--){while(RESET == usart_flag_get(USART2, USART_FLAG_TBE)); // 等待发送区为空usart_data_transmit(USART2, *(buf++));          // 发送数据}while(RESET == usart_flag_get(USART2, USART_FLAG_TC));    // 发送完成中断rxcount = 0;      gpio_bit_reset(GPIOC,  GPIO_PIN_3);     // 设置为接收模式return 0;
}

3 中断接收数据

void USART2_IRQHandler(void)
{   if((RESET != usart_interrupt_flag_get(USART2, USART_INT_FLAG_RBNE)) && (RESET != usart_flag_get(USART2, USART_FLAG_RBNE)))// 接收到数据{   rxbuffer[rxcount++] = usart_data_receive(USART2);usart_interrupt_flag_clear(USART2, USART_INT_FLAG_RBNE); //清中断标志} else if (RESET != usart_interrupt_flag_get(USART2, USART_INT_FLAG_IDLE)) {usart_interrupt_flag_clear(USART2, USART_INT_FLAG_IDLE);usart_data_receive(USART2); /* 清除接收完成标志位 */g_rs485_receive_end = 1;     //事件通知接收完成}
}

GD32f303之rs485配置相关推荐

  1. STM32CUBEMX开发GD32F303(14)----IIC之配置OLED

    STM32CUBEMX开发GD32F303.14----IIC之配置OLED 概述 视频教学 csdn课程 样品申请 生成例程 配置时钟树 IIC配置 OLED 参考程序 HAL_I2C_Mem_Wr ...

  2. GD32F303调试小记(三)之IIC(硬件IIC+PCF8563实时时钟)

    前言 前面的文章介绍了在单片机中常用的两种通信协议(USART和SPI),并给出了GD32F303对应的配置流程.这次介绍第三种常见的通信协议IIC.这此使用GD32的硬件IIC通信PCF8563实时 ...

  3. D-MNSV6-X8|D-MNSV7-X16磁导航传感器RS232/RS485(MODBUS-RTU)通讯协议说明

    D-MNSV6-X8|D-MNSV7-X16磁导航传感器是一款支持RS232/RS485(MODBUS-RTU)通讯协议的传感设备,利用集磁道钉的磁场特性研究磁信号检测.车辆与磁道钉之间相对运动于一体 ...

  4. 【Buildroot】学习记录(2)配置注释

    文章目录 一.前言 二.Buildroot目录结构 三.Buildroot配置选项 四.Target options(目标选项) 五.Build options(编译选项) 六.Toolchain(工 ...

  5. S7-1212C AC/DC/DLY作为PN主站通过PROFINET转Modbus RTU网关设备与Micro Logix 140

    S7-1212C AC/DC/DLY作为PN主站通过EnTalk PROFINET Slave – Modbus RTU Master 3 Port RS485网关设备与Micro Logix 140 ...

  6. BACnet MSTP协议485功能测试

    文章目录 BACnet MSTP协议485功能测试 一.命令行运行方法 二.测试工具 1.使用sscom串口助手 2.使用yabe查看结果 三.代码部分 1.包含头文件 2.变量和宏定义 2.RS48 ...

  7. Linux UART驱动分析及测试

    1.Linux TTY驱动程序框架 Linux TTY驱动程序代码位于/drivers/tty下面.TTY的层次接口包括TTY应用层.TTY文件层.TTY线路规程层.TTY驱动层.TTY设备驱动层.T ...

  8. Linux内核(一) [ IMX RK ] TTY-UART驱动框架解析

    平台:NXP imx6ull 内核版本:4.1.15 文章目录 一.Linux TTY驱动框架 二.Linux Uart驱动框架 三.UART相关结构体uart_driver(UART驱动结构体) . ...

  9. HaaS506-HD1 RTU快速开始

    一.简介 HaaS506-HD1是一款基于4G-CAT1通信的工业级RTU.         支持一路485.一路232.2路AI.2路DI.2路继电器接口.支持TCP.HTTP.MQTT等多种网络协 ...

最新文章

  1. Microsoft .NET Pet Shop 4 架构与技术分析
  2. Mock session,cookie,querystring in ASB.NET MVC
  3. 理解I/O Completion Port(完成端口)
  4. WHUST 2015 Summer Contest #11
  5. MySQL中INSERT IGNORE INTO和REPLACE INTO的使用
  6. 微信小程序获取用户手机号--官方示例
  7. Linux 进程、父进程、子进程
  8. php mysql 实现原理_PHP底层和mysql的通信原理
  9. idea maven插件tomcat内存溢出
  10. ionic4页面常用判断
  11. 仿抖音上下滑动播放视频
  12. GPX格式地图轨迹生成python
  13. 分枝定界法matlab,分支定界法 求混合0-1规划问题
  14. iptable 帮助
  15. 免安装mysql_免安装版的Mysql
  16. swift3 下标subscript
  17. Arduino 用4位共阴数码管造一个计数器
  18. 进阶持续威胁(APT)与入侵防御系统
  19. 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
  20. 【Linux操作系统系列】 Linux压缩打包

热门文章

  1. 比较好玩的工具类合集推荐!!!
  2. java垃圾回收菜鸟_java程序员不懂JVM内存回收,两年后也是个菜鸟
  3. 人的差别在于业余时间——细细品味
  4. 【第175期】游戏策划的跳槽:做决定前,建议你要知道的两个事
  5. Java可视化界面设计(登录界面设计)
  6. 理性的北方大学与物质的南方高校十大对抗(转载)
  7. 2022李宏毅作业hw1—新冠阳性人员数量预测。
  8. 照片秒变卡通风!教你用PaddleGAN快速生成你的专属卡通头像
  9. 程序员当年的烂代码被人挖出来后……
  10. 0727Python总结-内置方法,数学模块,random随机模块,序列化模块pickle