• STM32F103C8T6、FreeModbus从站的设计与测试(4)——定时器、中断初始化(CubeMX配置)


    关键词:Modbus FreeModbus STM32F103C8T6 CubeMX

    1.串口参数设置

    我们选择UART2来做RS485接口,UART1作为备用,用来做调试中的串口打印用。串口的参数配置比较简单,不再赘述。注意要启用串口中断,FreeModbus采用中断的方式接受和发送串口数据。

    2.定时器参数设置

    采用TIM2来作为FreeModbus的定时器,孔丙火(微信公众号:孔丙火)这里主要实现工业控制中常用的Modbus-RTU功能,RTU协议中是靠时间间隔来判断一个数据帧是否结束的,所以需要用到定时器。

    先上一张时钟配置图,如图1.

    图1

    晶振是12M的,APB1和APB2的定时器频率都是72M。

    图2

    图2是TIM2的参数配置界面,时钟分频是3599+1=3600,即:72÷3600=0.02MHz,一个时钟周期为:1÷0.02M=50us,之所以这样设置,是基于Freemodbus协议的需要。熟悉Freemodbus协议的朋友是知道的,在通信速率≥19200pbs时,帧间隔识别时间为固定的35×50us=1750us,在通信速率<19200pbs时,按照实际的11个bit时间计算。孔丙火(微信公众号:孔丙火)在这里暂且把Counter Period设为35,其实在程序代码中是根据实际通信速率来赋值的,这个在后面的文章中会详细介绍。这个地方也是本系列文章与网上大多数文章的不同支出,其他文章多数把这个参数设为固定值,每次更改通信速率都要手动改这个参数,孔丙火(微信公众号:孔丙火)感觉不是很方便。

    3.中断说明

    图3

    如图3所示,中断部分的配置至少要使能TIM2和USART2的中断。在程序中,实际用到的是TIM2的定时溢出中断,UART2的接收完成中断和发送非空中断。

    把这些设置完后,就可以去生成代码了,这一步比较简单,不再赘述,不太清楚的朋友,也可以参考孔丙火(微信公众号:孔丙火)之前的文章。下一节开始详细介绍代码的编写。


    单片机、ARM、现场总线、PLC、嵌入式软硬件的设计经验分享,秉承“点点滴滴皆智慧”的理念,一起分享,共同交流。

  • 相关阅读:
    free online Twitter video downloader All In One
    Game Development Essential Terms All In One
    Offscreen Canvas All In One
    前端性能优化系列之 Service Workers 实战教程 All In One
    前端性能优化系列之 Web Workers 实战教程 All In One
    河南美食阿利茄汁面 All In One
    free online Youtube video downloader All In One
    Leetcode 2264. 字符串中最大的 3 位相同数字(可以,已解决)
    多分类任务中不同隐藏层层数对实验结果的影响(使用GPU)
    Pytorch 损失函数总结
  • 原文地址:https://www.cnblogs.com/kongbh/p/14103191.html
Copyright © 2020-2023  润新知