资源简介
在STM32 开发平台中对Modbus RTU协议在串口中的代码实现,包含主站接收协议,从站接收协议,从站各功能码应答协议。

代码片段和文件信息
#include “includes.h“ //ucos 使用
#include “hal_usart.h“
#include “hal_sys.h“
#include “hal_delay.h“
#include “stdarg.h“
#include “stdio.h“
#include “string.h“
#include “Protocol.h“
#include “SlaveRTU.h“
#include “MasterRTU.h“
#include “OLED0_96.h“
/*****************************************************************************
包含的函数:
1、void USARTx_BufferType_RestMark(USARTx_BufferType *USART_Bufferu8 mode); 初始化结构体 中接收 发送参数
2、void USARTx_StructInit(USART_TypeDef *USARTx); 初始化结构体中 波特率 及接收发送函数
3、void USARTx_Init_Config(USART_TypeDef *USARTx); 初始化串口
4、void USARTx_Protocol_Send(USART_TypeDef *USARTxUSARTx_BufferType * USARTx_Buffer); 串口数据发送
5、void USART_Printf(USART_TypeDef *USARTxchar *fmt...); 打印函数
6、void USART1_IRQHandler(void)
7、void USART2_IRQHandler(void)
8、void USART3_IRQHandler(void) 中断服务函数
9、void USARTx_Data_Processing(USART_TypeDef *USARTxUSARTx_BufferType * USARTx_Buffer); 数据处理函数
*****************************************************************************/
#if (USART1_ENABLE == 1)
USARTx_BufferType USART1_Buffer;
#endif
#if (USART2_ENABLE == 1)
USARTx_BufferType USART2_Buffer;
#endif
#if (USART3_ENABLE == 1)
USARTx_BufferType USART3_Buffer;
#endif
/**
* @brief 清除 结构体的接收/发送缓存及接收/发送标志
* @param[in] USART_Buffer 接收发送数据结构体
* @param[in] mode: 初始化模式 |0x01 初始化接收缓存区
* |0x02 初始化发送缓存区
* |0x04 初始化接收长度
* |0x08 初始化发送长度
* @retval
*/
void USARTx_BufferType_RestMark(USARTx_BufferType *USARTx_Bufferu8 mode)
{
if(mode &0x01 )
{
memset(USARTx_Buffer->recvbuff0MODBUS_BUFF_LEN);
}
if(mode &0x02)
{
memset(USARTx_Buffer->sendbuff0MODBUS_BUFF_LEN);
}
if(mode &0x04)
{
USARTx_Buffer->Rcv_Cmpl = FALSE;
USARTx_Buffer->recv_size = 0;
}
if(mode&0x08)
{
USARTx_Buffer->send_size = 0;
}
USARTx_Buffer->recv_state = RECEIVE_1BIT;
}
/**
* @brief 串口初始化配置
* @param
* @retval
* 函数使用说明:
* 1、在初始化串口时 先对该函数的USART1/2/3 按照需求分别进行修改波特率参数及数据解析协议函数
*/
void USARTx_StructInit(USART_TypeDef *USARTx)
{
if(USARTx==USART1)
{
#if (USART1_ENABLE ==1)
USART1_Buffer.ByteTmp = 0;
USART1_Buffer.Rcv_Cmpl = FALSE;
USART1_Buffer.recv_size = 0;
USART1_Buffer.send_size = 0;
USART1_Buffer.ParamInit.Baud = 9600;
USART1_Buffer.ParamInit.DataBit = USART_WordLength_8b;
USART1_Buffer.ParamInit.Parity = USART_Parity_No;
USART1_Buffer.ParamInit.StopBit = USART_StopBits_1;
USART1_Buffer.USART_Timer = (u32)(20000/ USART1_Buffer.ParamInit.Baud) +1;
/************* 发送 接收 数据处理 函数重新映射到结构体 ******************/
USART1_Buffer.Protocol_Receive = &(SlaveRTU_Protocol_Receive);
// USART1_Buffer.Protocol_Send = &(UOCS_Protocol_Send);
USART1_Buffer.Data_Processing = &(SlaveRTU_Data_Processing);
#endif
}
else if(USARTx == USART2)
{
#if (USART2_ENABLE == 1)
USART2_Buffer.ByteTmp = 0;
USART2_Buffer.Rcv_Cmpl = FALSE;
USART2_Buffer.recv_size = 0;
USART2_Buffer.
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-03-30 14:41 STM32串口各协议实现\
文件 16181 2018-03-22 17:34 STM32串口各协议实现\HAL_USART.c
文件 3928 2018-03-26 15:54 STM32串口各协议实现\HAL_USART.h
文件 9681 2018-03-22 17:33 STM32串口各协议实现\MasterRTU.c
文件 1361 2018-03-22 17:33 STM32串口各协议实现\MasterRTU.h
文件 3949 2018-03-22 17:16 STM32串口各协议实现\Modbus.h
文件 3825 2018-03-09 17:27 STM32串口各协议实现\O2SlaveRTU.c
文件 664 2018-03-09 17:25 STM32串口各协议实现\O2SlaveRTU.h
文件 14335 2018-03-22 17:33 STM32串口各协议实现\Protocol.c
文件 1441 2018-03-22 17:33 STM32串口各协议实现\Protocol.h
文件 21785 2018-03-28 17:37 STM32串口各协议实现\SlaveRTU.c
文件 1635 2018-03-28 17:37 STM32串口各协议实现\SlaveRTU.h
- 上一篇:轮廓提取(中心识别算法
- 下一篇:qt TCP多客户端通信
相关资源
- FreeRTOS采样ADC+KEY事件信号+DMA串口收发
- 解读AT89C2051遥控接收器电路设计原理
- 红外转串口通信含原理图和程序
- stm32做的红外遥控解码程序
- 《emwin实战指南(基于STM32-ISO开发板)
- Beginning STM32: Developing with FreeRTOS libo
- stm32f103c8t6_sch.Lib
- ALIENTEK战舰STM32F1 V3开发板原理图.rar
- Modbus RTU S7-1200 发送
- STM32F103RC+ADC+DMA多通道采样LCD显示
- Modbus协议官方文档中、英文全
- I2C读写AT24C02 基于STM32F103 cube116540
- 基于stm32f103ve的程序——跑马灯实验
- 基于STM32RCT6的步进电机驱动程序
- stm32f407上的两个can发送和接收例程
- 易语言OTG串口通信
- delphi 串口通讯
- STM32 led 时钟
- STM32 2.4G通信例程
- Omron ETN21模块进行modbustcp通讯
- 直流无刷电机方波驱动 stm32 例程代码
- STM32中文资料
- STM32蓝牙和串口程序
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- LCD显示温度+串口接收温度.rar
- WPF USB 网络 串口 通信软件
- stm32f030 IAP Demo(原创)
- DELPHI与西门子200PLC的串口通信实例
- modbus通讯协议详解
评论
共有 条评论