STM32F103与HMI串口屏通讯实战教程及代码分享

版权申诉
0 下载量 58 浏览量 更新于2024-10-16 收藏 6.21MB ZIP 举报
资源摘要信息:"本资源涉及串口屏HMI与stm32f103微控制器之间的通信过程,并提供了相关的代码示例。HMI(人机界面)是工业自动化领域中常见的组件,用于人机交互,而串口屏HMI则是其中的一种类型,通过串口与控制器通信。stm32f103是STMicroelectronics公司生产的一款广泛使用的32位ARM Cortex-M3微控制器。资源中提及的plantgw5和sosnc可能是特定的通信协议或软件工具,但未提供详细信息。STM32 USART指的是STM32微控制器的通用同步/异步接收/发送器(USART),用于串行通信。" 知识点详细说明: 1. 串口屏HMI概念 串口屏HMI(Human-Machine Interface)是工业自动化和电子项目中常见的交互式显示设备。它通常拥有一个触摸屏,用户可以通过触摸屏来输入数据或控制电子设备。串口屏HMI通过串行通信接口(如RS-232、RS-485等)与控制器或其他设备进行数据交换。 2. STM32F103微控制器 STM32F103是STMicroelectronics(意法半导体)出品的基于ARM Cortex-M3内核的高性能微控制器系列中的一员。它具有丰富的外设接口,如GPIO、ADC、DAC、定时器、USART等,广泛应用于嵌入式系统、工业控制、通信设备等领域。该微控制器因性能稳定、成本合理、扩展性强等特点而受到开发者的青睐。 3. 串行通信 串行通信是数据以位为单位按顺序在单个通信信道上发送和接收的过程。相比并行通信,串行通信仅使用一对传输线即可实现全双工通信,因而布线简单、成本较低。在本资源中,通信协议可能是通过STM32F103的USART模块实现的。 4. USART通信协议 USART(Universal Synchronous/Asynchronous Receiver Transmitter)即通用同步/异步接收/发送器,是微控制器常见的串行通信接口,支持全双工模式,能够处理同步或异步的串行数据传输。USART在硬件上具备帧控制功能,包括起始位、停止位、奇偶校验位,以及校验错误检测等机制,保证数据的准确传输。 5. 通信代码实现 资源描述中提到含有代码,这可能意味着提供了实现stm32f103与串口屏HMI通信的具体编程代码。这些代码通常涉及初始化微控制器的USART模块,设置波特率、数据位、停止位等参数,并编写数据发送和接收的处理逻辑。 6. HMI与微控制器通信实例 资源可能提供了一个实例,说明了如何在stm32f103与串口屏HMI之间建立通信。这种实例可能涵盖了整个通信过程,包括初始化通信参数、编写发送和接收数据的函数,以及如何在HMI上显示和处理从控制器接收到的数据。 7. Plantgw5和Sosnc 资源标题和标签提到了plantgw5和sosnc,虽然具体含义不明,但可能是指特定的软件工具或通信协议。plantgw5可能是一个特定的通信网关,sosnc则可能是某个特定的通信协议名称或者为该协议实现的库或框架。由于没有详细信息,这部分内容仅能作为猜测,并在实际应用中需要进一步确认其含义和用法。 8. 文件名称列表解释 列表中的"STM32 USART"指的是与STM32系列微控制器的USART通信相关的文件,这些文件可能包含了与USART通信相关的库函数、示例代码或者配置文件。 总结上述知识点,本资源聚焦于串口屏HMI与STM32F103微控制器之间的通信实现,涉及了串行通信的原理与USART的使用。资源包含代码示例,有助于理解如何在实际项目中应用这些技术。对于希望深入学习STM32通信应用开发的开发者来说,这是一个宝贵的实践参考。

void SetPACLKADT() { uint8_t carmode = CTripComputerProxy::intance().Get_Signals_VehModMngtGlbSafe1CarModSts1(); uint8_t usagemode = CTripComputerProxy::intance().Get_Signals_VehModMngtGlbSafe1UsgModSts(); mNowTime.m_Year = CTripComputerProxy::intance().Get_Signals_TiAndDateIndcnYr1(); mNowTime.m_Month = CTripComputerProxy::intance().Get_Signals_TiAndDateIndcnMth1(); mNowTime.m_Day = CTripComputerProxy::intance().Get_Signals_TiAndDateIndcnDay(); mNowTime.m_Hour = CTripComputerProxy::intance().Get_Signals_TiAndDateIndcnHr1(); mNowTime.m_Min = CTripComputerProxy::intance().Get_Signals_TiAndDateIndcnMins1(); mNowTime.m_Sec = CTripComputerProxy::intance().Get_Signals_TiAndDateIndcnSec1(); uint8_t mValid = CTripComputerProxy::intance().Get_Signals_TiAndDateIndcnDataValid(); if (((carmode == Time_Normal) || (carmode == Time_Crash) || (carmode == Time_Dynamometer)) && \ ((usagemode == Time_InActv) || (usagemode == Time_Cnvinc) || (usagemode == Time_Actv) || (usagemode == Time_Drvg))) { tmp.mAvailability = Active; } else { tmp.mAvailability = NotActive; } if (0 != hmi_CompareObj(tmp, mCLKADT)) { mCLKADT = tmp; hmi_info("mCLKADT.mFormat : %d ,mCLKADT.mAvailability : %d", mCLKADT.mFormat, mCLKADT.mAvailability); CDbusConnect::intance().sendSignal(XE_interface_Digital, XE_member_Clock_Date, mCLKADT); if (mValid == 1u) { if(0 != hmi_CompareObj(mNowTime, mNowTime_Pre)) { SetSystemTime(mNowTime.m_Year + 2000u, mNowTime.m_Month, mNowTime.m_Day, mNowTime.m_Hour, mNowTime.m_Min, mNowTime.m_Sec); HMI_MEMCPY(&mNowTime_Pre, &mNowTime, sizeof(mNowTime)); } } else { //user the time of internal } } else { if(mValid == 1u) { if(0 != hmi_CompareObj(mNowTime, mNowTime_Pre)) { Compare_signal_time_and_local_time(); HMI_MEMCPY(&mNowTime_Pre, &mNowTime, sizeof(mNowTime)); } } else { } } }

2023-07-11 上传

'Script to check configured options in order to display correct objects on screen If SmartTags("Show Layer 2") Then If SmartTags("HMI- Machine Config.Option_Folder") And Not SmartTags("Bathcer or Hi Fold") Then 'If SmartTags("HMI- Machine Config.Option_Folder") Then SetBit SmartTags("Show Layer 2 w/Folder") End If If SmartTags("Bathcer or Hi Fold") Then SetBit SmartTags("Show Layer 2 w/RTO Folder Options") End If If SmartTags("HMI- Machine Config.Option_Batcher") Then SetBit SmartTags("Show Layer 2 w/Batcher") End If Else ResetBit SmartTags("Show Layer 2 w/Folder") ResetBit SmartTags("Show Layer 2 w/RTO Folder Options") ResetBit SmartTags("Show Layer 2 w/Batcher") End If If SmartTags("Show Layer 3") Then If SmartTags("HMI- Machine Config.Option_Folder") And Not SmartTags("Bathcer or Hi Fold") Then 'If SmartTags("HMI- Machine Config.Option_Folder") Then SetBit SmartTags("Show Layer 3 w/Folder") End If If SmartTags("Bathcer or Hi Fold") Then SetBit SmartTags("Show Layer 3 w/RTO Folder Options") End If If SmartTags("HMI- Machine Config.Option_Batcher") Then SetBit SmartTags("Show Layer 3 w/Batcher") End If Else ResetBit SmartTags("Show Layer 3 w/Folder") ResetBit SmartTags("Show Layer 3 w/Batcher") ResetBit SmartTags("Show Layer 3 w/RTO Folder Options") End If If SmartTags("Show Layer 4") Then If SmartTags("HMI- Machine Config.Option_Folder") And Not SmartTags("Bathcer or Hi Fold") Then 'If SmartTags("HMI- Machine Config.Option_Folder") Then SetBit SmartTags("Show Layer 4 w/Folder") End If If SmartTags("Bathcer or Hi Fold") Then SetBit SmartTags("Show Layer 4 w/RTO Folder Options") End If If SmartTags("HMI- Machine Config.Option_Batcher") Then SetBit SmartTags("Show Layer 4 w/Batcher") End If If SmartTags("HMI- Machine Config.Option_Take_Out_Roll") Then SetBit SmartTags("Show Layer 4 w/Takeout") End If Else ResetBit SmartTags("Show Layer 4 w/Folder") ResetBit SmartTags("Show Layer 4 w/Batcher") ResetBit SmartTags("Show Layer 4 w/Takeout") ResetBit SmartTags("Show Layer 4 w/RTO Folder Options") End If If SmartTags("Show Layer 5") Then If SmartTags("HMI- Machine Config.Option_Folder") And Not SmartTags("Bathcer or Hi Fold") Then 'If SmartTags("HMI- Machine Config.Option_Folder") Then SetBit SmartTags("Show Layer 5 w/Folder") End If If SmartTags("Bathcer or Hi Fold") Then SetBit SmartTags("Show Layer 5 w/RTO Folder Options") End If If SmartTags("HMI- Machine Config.Option_Batcher") Then SetBit SmartTags("Show Layer 5 w/Batcher") End If Else ResetBit SmartTags("Show Layer 5 w/Folder") ResetBit SmartTags("Show Layer 5 w/Batcher") ResetBit SmartTags("Show Layer 5 w/RTO Folder Options") End If If SmartTags("Show Layer 7") Then If SmartTags("HMI- Machine Config.Option_Folder") And Not SmartTags("Bathcer or Hi Fold") Then 'If SmartTags("HMI- Machine Config.Option_Folder") Then SetBit SmartTags("Show Layer 7 w/Folder") End If If SmartTags("Bathcer or Hi Fold") Then SetBit SmartTags("Show Layer 7 w/RTO Folder Options") End If If SmartTags("HMI- Machine Config.Option_Batcher") Then SetBit SmartTags("Show Layer 7 w/Batcher") End If If SmartTags("HMI- Machine Config.Option_Take_Out_Roll") Then SetBit SmartTags("Show Layer 7 w/Takeout") End If Else ResetBit SmartTags("Show Layer 7 w/Folder") ResetBit SmartTags("Show Layer 7 w/RTO Folder Options") ResetBit SmartTags("Show Layer 7 w/Batcher") ResetBit SmartTags("Show Layer 7 w/Takeout") End If

2023-07-14 上传