GD32串口通信

虽说GD32与stm32采用同样的ARM® Cortex®-M3内核,而且GD32很大程度上可兼容stm32的程序,但是也存在着一些差异;所以为了使用上减少出错,使用GD32时尽量采用GD32官方库来编写程序。

GD32与STM32在串口通信上的差异

GD32 STM32
USART0 USART1
USART1 USART2
USART2 USART3

也就是GD32在串口数是从0开始,而stm32是从1开始;特别注意的是GD32在手册上串口数也是从1开始的,小编为此也是郁闷得很。

下面就是常规的串口操作啦,大致上与stm32 相同。

串口初始化

void usart_init(void)
{rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_clock_enable(RCU_USARTx);rcu_periph_clock_enable(RCU_AF);/* configure USART Tx as alternate function push-pull */gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);gpio_init(GPIOA, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, GPIO_PIN_10); /* USART configure */usart_deinit(USARTx);nvic_irq_enable(USARTx_IRQn, 0, 0);usart_baudrate_set(USARTx, bd);usart_word_length_set(USARTx, USART_WL_8BIT);usart_stop_bit_set(USARTx, USART_STB_1BIT);usart_parity_config(USARTx, USART_PM_NONE);usart_hardware_flow_rts_config(USARTx, USART_RTS_DISABLE);usart_hardware_flow_cts_config(USARTx, USART_CTS_DISABLE);usart_receive_config(USARTx, USART_RECEIVE_ENABLE);usart_transmit_config(USARTx, USART_TRANSMIT_ENABLE);usart_interrupt_enable(USARx, USART_INT_RBNE);usart_interrupt_enable(USARTx, USART_INT_ERR);usart_enable(USARTx);
}

串口发送

void UARTx_SendSpBuffer(uint32_t usart_periph,uint8_t* pSda,uint8_t len)
{int i=0;for(i=0;i<len;i++){while(RESET == usart_flag_get(usart_periph, USART_FLAG_TBE));//等待数据寄存器变空usart_data_transmit(usart_periph, *pSda);      pSda++;}while(RESET == usart_flag_get(usart_periph, USART_FLAG_TC));
}

串口接受函数

void USARTx_IRQHandler(void )
{if(RESET != usart_interrupt_flag_get(USARTx, USART_INT_FLAG_RBNE)){/* receive data */value = (uint8_t)usart_data_receive(USARTx);usart_interrupt_flag_clear(USARTx,USART_INT_FLAG_ERR_FERR);}
}

附:

1.modbus rtu格式说明

功能码说明

功能码 说明
03 读取输出寄存器
04 读取输入寄存器
06 写单个寄存器
10 写多个寄存器

CRC校验说明
modbus crc16为高位在后,低位在前

功能码 说明
CRCL 低位在前
CRCH 高位在后

读操作
modbus读取数据采用功能码03或04,其中正常来说03读取输出寄存器数据,04读取输入寄存器数,也就是03读取设置参数等数据,04读取实时采集的数据。

项目 Value 位数
通信地址 0~255 8位
功能码 03/04 8位
起始地址 0~65535 16位
寄存器个数 0~65535 16位
CRC校验 0~65535 16位

写操作

项目 Value 位数
通信地址 0~255 8位
功能码 06 8位
起始地址 0~65535 16位
待写入的数据 0~65535 16位
CRC校验 0~65535 16位

2.GD32中断函数名及中断服务函数

项目 路径
中断函数名及其优先级 gd32f10x.h
中断服务函数 startup_gd32f10x_md.s

GD32串口通信注意事项相关推荐

  1. RS232与串口通信的4个注意事项详解

    RS232和串口通信,用于串口设备的数据采集软件,包括仪表.天平.秤或任何RS232仪器.WinWedge直接将数据捕获到Excel.Access或任何Windows应用程序或网页.它甚至可以从COM ...

  2. STM32(GD32)串口通信ORE(overrun error)导致死机

    STM32串口通信ORE(overrun error)导致死机 现象就是:我要接收到16个字节到数据后就开始处理数据,但是主机发过来的指令超过了16个字节,就导致我这里死机了,其实我这里不应该死机的, ...

  3. GD32 F303RCT6串口通信和IAP升级

    #ifndef __CLOUDTASK_H #define __CLOUDTASK_H#include "task.h" #include "queue.h" ...

  4. python第三方库之学习pyserial库--串口通信

    pyserial串口通信库 1.安装pyserial库 2.填写串口参数的注意事项 3.简单封装一下 4.碰到的bug 1.安装pyserial库 pip install pyserial versi ...

  5. android 串口开发第二篇:利用jni实现android和串口通信

    一:串口通信简介 由于串口开发涉及到jni,所以开发环境需要支持ndk开发,如果未配置ndk配置的朋友,或者对jni不熟悉的朋友,请查看上一篇文章,android 串口开发第一篇:搭建ndk开发环境以 ...

  6. java与单片机通信_Java实现串口通信与单片机通信实例..【Pnoter】

    一 · 在windows操作系统下,实现Java串口通信,需要用到sun提供的串口通信包,javacomm[可以去Java站点去下载最新版本的压缩包,然后解压]. 解压之后要用到压缩包中的三个文件,将 ...

  7. STM32单片机与Openmv的串口通信

    openmv与stm32的串口通信 简谈闲话 Openmv主要代码 STM32单片机的配置 运行效果图片如下 简谈闲话 这两天本人利用周末时间粗略的学习一下openmv的使用,目的是用openmv图像 ...

  8. 【STM32F429的DSP教程】第9章 Matlab的串口通信实现

    完整版教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=94547 第9章   Matlab的串口通信实现 本章节主要为大家讲解 ...

  9. MSP430G2553 串口通信

    MSP430G2553   串口通信 记下来 加深一下自己的理解 希望 有新手看到可以有点启发   记录下来自己的点点滴滴  终于感觉自己有那么一点进步了   哈哈  未来的日子在努力一些  一个菜鸟 ...

最新文章

  1. TEE(Trusted Execution Environment)简介
  2. [SOJ1039]Phone Home(深搜,染色问题)
  3. 在git项目误上传了本地idea配置文件,如何解决?
  4. [spring]Attribute scope must be declared for element type bean
  5. java tbase_使用Java从firebase获取数据
  6. 计算机领域hpec会议,2018 IEEE High Performance extreme Computing Conference HPEC
  7. [转]Winform不规则窗体的实现心得
  8. Python标准库 - subprocess
  9. Android移动应用基础教程【服务】
  10. RHEL6.3下编译安装ffmpeg
  11. Linux 杀死进程方法大全(kill,killall)
  12. 使用maven将jar包下载到本地仓库
  13. 通过SQL语句建立数据库. 表
  14. Linux性能工具:系统CPU
  15. 星期一到星期日的英文 缩写 读音 巧记方法
  16. mysql数据库地址 名称_数据库地址和名称是什么?怎么知道自己地址和名称?
  17. 数据分析软件Excel,Origin, Matlab,Mathmatica和Maple
  18. 记一次微信小程序云函数操作Mysql数据库
  19. javascript 汉字生成拼音
  20. 【1-2】非本人智慧结晶,有疑问请咨询相关技术人员!

热门文章

  1. from batchgenerators.transforms import ComposeImportError: cannot import name ‘Compose‘ from ‘batch
  2. 计算机二级office公式汇总,计算机二级Office2010Eexcel公式汇总
  3. HDU 4389 - X mod f(x)
  4. linux 繁体中文转为简体,Linux下对文件进行编码转换(简体→繁体,繁体→简体,简体繁体→UTF-8)...
  5. 哥大五年CV岁月:只有开心,才能做出有影响力的工作
  6. 拉钩教育课程管理系统接口文档
  7. Java 6-1 人口统计
  8. 计算机任务无法结束,简单几步解决win7任务管理器无法结束进程的问题
  9. Specified VM install not found: type Standard VM, name jre7
  10. ZO1X(功能安全验证)介绍