单片机
文章平均质量分 81
从单片机到PLC
从单片机到PLC,还有嵌入式
展开
-
用keil进行debug时,如何让时间准确起来?
只要运用正确,在keil的debug模式,测得的运行时间比用示波器测得的要准确,并且使用方便。按照孔丙火(微信公众号:孔丙火)的测试与理解,keil在debug时,应该是对运行时间进行的计算,应该是比较准的。原创 2023-01-28 20:16:10 · 2014 阅读 · 0 评论 -
Modbus的通信参数存在flash中,如果改乱了,该怎么办--FreeModbus从站设计(12)
将Modbus的通信参数存储在单片机STM32F103C8T6的flash中,可以简化硬件电路设计,功能扩展也更加灵活。这种方法也有副作用,因为是用通信的方法修改参数,如果用户把上次修改的参数忘记了,岂不是无法建立串口连接了?要么一个一个参数地试,费时费力,要么重新刷单片机的程序,但这需要开发工程师的参与。公众号之前有一篇文章,是讲PLC的上电停止功能的,这里可以做一个借鉴,来解决这个问题。大体的意思,就是为用户保留一个数据命令,当单片机上电的时候,收到这个命令,就采用默认的通信参数运行。原创 2021-07-09 20:54:05 · 392 阅读 · 1 评论 -
如何把Modbus的通信参数存在单片机的flash中-FreeModbus从站设计(11)
作为从站,Modbus-RTU通信的参数主要包括从站地址和串口参数,串口参数又包括波特率、校验位、停止位等,把这些参数存储在单片机的flash里,孔丙火(微信公众号:孔丙火)认为,可以简化电路设计,应用更加灵活。通用串口参数中数据位,在Modbus-RTU通信中是不需要设置的,因为Modbus协议规范规定,Modbus-RTU的数据位必须为8位。介绍了STM32F103C8T6的flash的组织结构,进一步分析了通信参数在flash中的存储位置,阐述了基于HAL库写flash的方法和通信参数修改的基本流程。原创 2021-07-08 11:40:12 · 762 阅读 · 3 评论 -
单片机程序中,Modbus功能码的回调函数如何编写--FreeModbus从站设计(10)
FreeModbus从站设计(10)-Modbus功能码的回调函数如何编写关键词:FreeModbus CubeMX HAL库 串口 功能码此系列的前面几篇文章,主要是阐述了用HAL库生成keil工程、如何将FreeModbus的代码加入keil工程、协议栈的初始化、串口和定时器接口函数的修改等内容,并整理了FreeModbus协议栈调与HAL库函数的调用关系,通过以上这些工作,Modbus的通路(串口和定时器)已经通了,下面就是数据的处理部分了。数据处理部分主要是对各个功能码的回调函数的编写.原创 2021-06-19 22:05:02 · 1380 阅读 · 4 评论 -
当RS485隔离遇见Freemodbus,你碰到问题了吗?
基于RS485物理接口的Modbus总线在工业控制中广泛应用。Freemodbus是一个免费的实用的协议栈,孔丙火(微信公众号:孔丙火)用它实现了一个从站。串口收发信号和RS485芯片的收发使能信号采用光耦进行了隔离,在测试过程发现了偶尔出现TimeOut的问题,经过查找及分析,发现是光耦信号延时导致的,给出了解决方案,并对问题进行了详细分析。原创 2021-04-20 12:49:52 · 1809 阅读 · 2 评论 -
用两张图,详解FreeModbus在单片机串口上的数据收发过程-FreeModbus从站设计(9)
用两张图把FreeModbus在单片机串口上数据收发流程进行了梳理,脉络更加清晰。有了这样一个思路,可以更好地理解,移植FreeModbus的时候,为什么需要修改portserial.c和porttimer.c中的函数,和为什么需要修改串口中断的回调函数。从这篇文章中,也可以看出,采用HAL库是比较简单的,像是中断处理这些内容库函数都已经处理好了,很方便,可以提高开发效率。原创 2021-04-17 17:48:35 · 1484 阅读 · 0 评论 -
STM32F103、FreeModbus从站设计(5)-如何将FreeModbus代码加入keil工程
STM32F103、FreeModbus从站设计(5)-如何将FreeModbus代码加入keil。详细阐述如何获取freemodbus代码,代码的大体结构,如何将freemodbus加入keil工程。讲解了注意事项,全实战演示,实际可用。原创 2020-12-26 13:44:46 · 646 阅读 · 0 评论 -
STM32F103C8T6、FreeModbus从站的设计与测试(4)——定时器、中断初始化(CubeMX配置)
关键词:Modbus FreeModbus STM32F103C8T6 CubeMX1.串口参数设置我们选择UART2来做RS485接口,UART1作为备用,用来做调试中的串口打印用。串口的参数配置比较简单,不再赘述。注意要启用串口中断,FreeModbus采用中断的方式接受和发送串口数据。2.定时器参数设置采用TIM2来作为FreeModbus的定时器,孔丙火(微信公众号:孔丙火)这里主要实现工业控制中常用的Modbus-RTU功能,RTU协议中是靠时间间隔来判断一个数据帧是否结束的,所以原创 2020-12-08 15:58:21 · 1473 阅读 · 0 评论 -
STM32F103C8T6、FreeModbus从站的设计与测试(2)——硬件设计
单片机采用STM32F103C8T6,从孔丙火(微信公众号:孔丙火)的认知来看,这款单片机是当前比较常用的型号之一。UART1用过ISP下载和串口打印,UART2用于RS485通信,整块板子采用DC5V供电,通过AMIS1117转换成3.3V给单片机供电,RS485采用隔离设计,隔离电源采用IB0505S-W75R3,隔离电压是1500VDC,485信号转换及隔离采用ADM2483BRWZ。原创 2020-11-07 08:56:13 · 1078 阅读 · 0 评论 -
STM32F103C8T6-CubeMx串口收发程序详细设计与测试(2)——程序规划、代码编写及测试
STM32F103C8T6-CubeMx串口收发程序详细设计与测试。演示程序的功能:通过中断接收串口数据,在1750us时间内没有收到新的字节的话,将收到的数据原封不动地发送出去,以测试串口的完整收发流程。对使用到的函数进行了说明,阐述了各个函数的调用顺序和调用关系,在目标板上对代码进行了测试,结果表明,可以实现预期功能。原创 2020-10-07 16:44:30 · 3004 阅读 · 0 评论 -
STM32F103C8T6-CubeMx串口收发程序详细设计与测试(1)——CubeMx生成初始代码
STM32F103C8T6-CubeMx串口收发程序详细设计与测试(1)——CubeMx生成初始代码关键词:STM32F103C8T6 STM32CubeMX UART 详细程序设计原创 2020-08-19 22:09:11 · 3180 阅读 · 0 评论 -
CubeMx生成代码第一次下载后,SWD就找不到目标板了,就不能再次下载和调试了,原因查找,CubeMx,download,debug,HAL_MspInit()
用CubeMx建了一个过程,芯片为STM23F103C8T6,生成了代码,都没有问题,连接目标板,用孔丙火(微信公众号:孔丙火)新买的ST-link下载,没有问题,但第二次下载的时候,却显示找不到目标板了,于是怀疑新买的ST-link有问题,换了J-link,同样是找不到目标板,然后各种重新上电,还是没有解决,无意中发现按住reset按钮,让单片机处于复位状态,是可以下载的,于是又把以前正在使用的程序下载其中,没有发现类似的问题,然后开始怀疑是代码的问题。CubeMx,download,debug,HAL_原创 2019-06-17 15:48:26 · 2463 阅读 · 4 评论