手把手教你,通过HAL库实现MODBUS从机程序编写与调试(一)-----STM32CubeMX操作篇

目录

1、STM32CubeMX操作

1.1 新建工程

1.2芯片配置

1.2.1 时钟配置

​1.2.2 串口的配置

1.2.3 定时器的配置

1.2.4 NVIC配置

1.2.5 工程设置


1、STM32CubeMX操作

1.1 新建工程

打开STM32CubeMX软件,File-->New Project。新建工程。

 在打开的对话框内,在1处的Part Number文本框内输入STM32F103ZE,会在2处自动产生可以选择的芯片,在这里选择LQFP144封装的STM32F103ZETx系列的芯片。

1.2芯片配置

1.2.1 时钟配置

进入芯片配置界面,首先选择System Core选项下面的RCC,然后在弹出的High Speed Clock选项下选择Crystal/Ceramic Resonator。

 点击3处的Clock Configuration,在弹出的界面,在1处输入输入72,系统会自动将其他的时钟调整为相对应的配置。

为了使生成的程序可以进行在线调试,重新点击1处的Pinout&Configuration,点击SYS,在Debug处点击Serial Wire。

1.2.2 串口的配置

在Pinout&Configuration选项卡下,选择Connectctivity下的UART4(可以根据自己的电路板的实际接口进行选择),Mode选择Asynchronous(异步模式)。

 首先进行参数配置(Parameter Settings)

Basic Parameters:

        Baud:                115200bit Bits/s        波特率

        Word Length:       8Bits                        字长

        Parity:                None                        无校验

        Stop Bits:        1                        1位停止位

Advanced Parameters:

        Data Direction:        Receive and Transmit                既接收也发送

        Over Sampling:        16 Samples

其次进行User Constant配置:

此项参数不变

再次进行NVIC setting配置:

此处将UART4 global interrupt进行使能,优先级等后续再进行配置。

DMA和GPIO配置不用更改。

1.2.3 定时器的配置

在modbus中,需要判断一帧什么时候发送结束,我们采用定时器进行判断。当定时器时间大于我们设定的时间时,发生定时器中断,告诉系统,一帧数据发送完成。

首先选择TIM7下的Parameter Settings,将PSC设置为7199,Counter Mode设置为UP,Counter Period 设置为39,Auto-reload preload设置为Enable。

在中断开启的情况下,中断时间为:

\frac{7200*40}{72,000,000}=4ms

即超过4ms仍旧没有数据发送过来,证明一帧数据发送完成。

开启定时器的NVIC中断,即TIM7 global interrupt更改为Enable,此处优先级先不进行设置,等后续在NVIC中集中进行设置。

 

1.2.4 NVIC配置

在System Core选项下,选择NVIC,在NVIC的选项下,将Priority Group优先级分组设置为2位为pre-emption priority, 2位为subpriority。

然后将UART4的优先级设置为3,3低于TIM7的优先级3,2。证明当串口中断和时间中断同时来的时候,先相应时间中断。

1.2.5 工程设置

选择最上面的Project Manager的Project,首先对新建的工程命名为ModbusSlave,将Application Structure更改为Basic,最后将开发工具改成自己的开发工具,我这里用的是KEIL,这里选择MDK。

然后选择Code Generator,在这个界面将Generator peripheral initalization as a pair of '.c/.h' files per peripheral前面勾选上。

最后生成代码:

  • 5
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
课程背景Modbus 协议是工业自动化控制系统中常见的通信协议,协议的全面理解是个痛点。本课程主讲老师集10多年在Modbus协议学习、使用中的经验心得,结合当前物联网浪潮下Modbus协议开发的痛点,推出这套面向Modbus 协议初学者的课程。本课程不同于以往市面课程只是协议讲解无实现代码,而是采用讲解与实践并重的方式,结合STM32F103ZET6开发板进行手把手编程实践,十分有利于初学者学习。涵盖了学习者在Modbus协议方面会遇到的方方面面的问题,是目前全网首个对Modbus协议进行全面总结的课程。课程名称   协议讲解及实现>>课程内容1、Modbus 协议的基础。2、Modbus协议栈函数编程实现。3、Modbus协议在串行链路编程实现。4、Modbus协议在以太网链路编程实现。5、常见问题的解决方法。带给您的价值通过学习本课程,您可以做到如下:1、全面彻底的理解Modbus协议。2、理解在串行链路,以太网链路的实现。3、掌握Modbus协议解析的函数编程方法,调试工具的使用。4、掌握多个串口,网口同时运行同一个Modbus协议栈的方法。5、掌握Modbus协议下,负数,浮点数等处理方法。讲师简介许孝刚,山东大学工程硕士,副高职称,技术总监。10多年丰富嵌入式系统开发经验,国家软考“嵌入式系统设计师”。2017年获得“华为开发者社区杰出贡献者”奖励。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值