- 博客(99)
- 资源 (24)
- 收藏
- 关注
原创 STM32F103的LED流水灯(跑马灯)实现的完整代码
本文提供了STM32F103实现LED流水灯的完整代码,包含三种实现方式:1)标准库实现(推荐学习用),包含LED初始化、顺序流水灯、累积流水灯和呼吸灯效果;2)硬件连接使用PB0-PB7连接8个LED;3)代码详细注释了GPIO配置、延时函数实现和各种流水灯模式切换。文中还提供了delay.c延时函数的实现细节,使用SysTick实现精确延时,支持微秒和毫秒级延时控制。
2025-12-30 08:23:31
748
原创 【 STM32 ADC电压采集与串口显示系统】
本文介绍了一个基于STM32F103的ADC电压采集系统,实现了外部模拟电压信号的实时采集与串口显示。系统包含完整的硬件初始化和数据处理流程,采用12位ADC(0-3.3V范围)进行信号采集,通过USART以115200波特率传输数据到上位机。核心代码模块包括主程序框架、时钟配置、ADC配置、串口配置和GPIO配置,提供了电压转换公式和printf重定向方法。该系统结构简单、实时性强,但存在软件延时不够精确、未加入数字滤波等局限性。文章最后给出了增加数字滤波和使用定时器精确控制采样间隔的优化建议。
2025-12-25 19:00:00
745
原创 【STM32F103按键外部中断检测实现】
本文介绍了STM32F103系列MCU按键外部中断检测的实现方法。项目包含公共头文件(key_common.h)定义按键检测的通用数据类型和宏,以及两种实现方式:简单中断方式(key_exit_simple)和状态机方式(key_exit_state_machine)。公共头文件定义了按键硬件配置结构体、时间参数配置、状态枚举和回调函数类型等。简单中断方式在中断服务函数中直接处理消抖,实现简单但实时性稍差。代码结构清晰,包含完整的硬件配置参数和状态管理机制,适用于嵌入式系统开发中的按键检测需求。
2025-12-25 11:28:12
308
原创 BACnet RTC时钟设置
本文分享了一个完整的STM32 RTC驱动程序实现,包含RTC基础功能操作、中断处理以及与BACnet协议栈的集成。驱动代码基于标准HAL库开发,提供了详细注释,主要功能包括:RTC后备寄存器读写、时间日期设置与获取、星期计算、自动时钟源检测等核心功能。该驱动特别针对嵌入式应用场景设计,可直接用于项目开发,同时支持与BACnet协议栈的集成,为楼宇自动化等领域的开发提供了可靠的时间基准解决方案。
2025-12-24 17:40:34
324
原创 【SecureCRT串口连接及中文显示设置】
本文详细介绍了使用SecureCRT进行串口连接的完整步骤:1)新建连接时选择Serial协议并配置端口、波特率等参数;2)重点说明了中文显示设置方法,包括终端字符编码(推荐UTF-8/GBK)和字体选择;3)提供了中文乱码解决方案和编码切换技巧;4)补充了自动换行、日志记录等高级功能。文章还包含连接示例和使用技巧,强调编码设置需与设备输出一致,建议尝试GB18030、GBK等常见编码解决乱码问题。全文图文并茂,适合开发人员快速上手串口调试。
2025-12-20 08:26:42
1710
原创 # STM32F103 SD卡读写程序
下面是一个基于STM32F103系列微控制器的SD卡读写完整程序,使用标准外设库(StdPeriph)和FatFs文件系统。
2025-06-07 22:11:54
1026
2
原创 #STM32 HAL库实现的STM32F407时钟配置程序以及和STM32F103配置对比
8000000U# define HSE_VALUE 8000000U /* 8MHz外部晶振 */
2025-06-02 10:27:52
1017
原创 【STM32F407 PWM配置和应用指南 】
PWM(脉冲宽度调制)是一种通过快速开关数字信号来控制模拟电路的技术,通过改变脉冲的占空比来控制平均电压。STM32F407的定时器外设可以生成PWM信号。通过以上步骤和示例,您可以在STM32F407上成功配置和应用PWM功能。
2025-06-01 11:18:32
1138
原创 # STM32F103 串口打印配置(HAL库)
以上配置适用于STM32F103系列大多数型号,根据具体硬件可能需要进行微调。生成代码(选择工具链为MDK-ARM/IAR/其他)打开STM32CubeMX,新建工程选择对应型号。
2025-05-31 14:57:58
920
原创 # STM32F103 PA0到PA4多路ADC采集配置和采集程序
以下是在STM32F103上配置PA0到PA4作为多路ADC输入并进行采集的完整指南。
2025-05-31 13:01:23
925
原创 【STM32F103微控制器上进行CAN总线回环测试】
CAN总线(Controller Area Network)是一种常用的串行通信协议,最初由德国公司Bosch开发,用于汽车电子系统中的通信和控制。它在汽车行业得到了广泛的应用,后来也在其他领域如工业控制、航空航天和医疗设备等方面得到了采用。CAN总线的设计目标是满足汽车电子系统中的高可靠性和实时性要求。它采用差分信号传输和多主机的通信结构,具有抗干扰、抗噪声和高带宽利用率的特点。CAN总线支持多个节点之间的数据交换,允许节点实时地发送和接收消息。它还具有消息优先级机制,可以保证关键数据的及时传输。
2024-03-16 13:22:51
2547
原创 STM32按键状态机短按、长按和连击操作
按键的不同状态对应于不同的按键操作,通过状态转换和计数器的判断,可以准确地识别和处理短按、长按和连击操作。在空闲状态(BUTTON_STATE_IDLE)下,检测到按键按下后,将按钮按下状态设置为1,重置释放状态和计数器,并将状态转换为按下状态(BUTTON_STATE_PRESSED)。当使用状态机来处理按键操作时,我们将按键的不同状态抽象为状态机中的各个状态,并根据按键的状态转换进行相应的处理。在函数的最后,我们检查定时器溢出标志,并根据当前的按键状态和按键的按下和释放状态进行相应的处理。
2024-03-16 13:01:05
2231
原创 【BACnet ip网络参数设置和读取】
3这个结构体定义了一个名为bacnet_ipv4_port的数据结构,用于表示BACnet IP设备的网络配置信息。下面是对结构体成员的解释:IP_Address:一个长度为4的无符号整数数组,表示设备的IPv4地址。每个元素表示一个字节,共计4个字节。例如,IP地址为192.168.0.1,则数组的值为{192, 168, 0, 1}。IP_Subnet_Prefix:一个长度为4的无符号整数数组,表示设备的子网掩码。用于确定设备所在的子网范围。与IP_Address类似,每个元素表示一个字节。
2024-03-15 13:39:28
2390
原创 BACnet device对象详解以及协议栈相关代码
BACnet(Building Automation and Control Networks)是一种用于建筑自动化和控制系统的通信协议。BACnet设备对象是BACnet协议中的一个重要概念,用于表示建筑自动化系统中的设备。BACnet设备对象(Device Object)是BACnet网络中的主要实体,代表了一个物理设备或网络上的虚拟设备。每个BACnet设备对象都有一个唯一的标识符,称为设备实例号(Device Instance)。
2024-03-13 13:49:46
2321
1
原创 单片机c语言编程规范
代码中的initialize函数用于初始化单片机的硬件配置,包括设置LED引脚为输出和启用按钮引脚的上拉电阻。main函数是程序的入口,它在一个无限循环中检测按钮是否被按下,如果按钮被按下,则调用toggleLED函数切换LED的状态,并通过延迟函数__delay_cycles延迟一段时间。请注意,这只是一个简单的范例,实际的代码规范可能会根据项目的要求和团队的约定而有所不同。使用一致的缩进风格,例如使用制表符或空格进行缩进,以提高代码的可读性。使用有意义的变量、函数和宏的名称,避免使用缩写和简写。
2024-03-12 13:49:09
924
原创 【ARM linux mqtt协议连接服务器】
如果您需要获取MQTTClient库的源代码或更详细的API函数说明,请参考MQTTClient库的官方网站或开发者社区。此示例代码演示了一个简单的发布者(Publisher)应用程序,它连接到本地的MQTT服务器,等待用户输入要发布的消息,并将消息发布到指定的话题。在给出的代码中,包含了MQTTClient库的头文件MQTTClient.h,并且使用了该库提供的函数来创建、连接和操作MQTT客户端。MQTTClient库的具体实现代码通常包含在一个或多个源文件中,并且通常以静态库或动态库的形式提供。
2024-03-12 13:37:17
669
2
原创 【基于arm linux c语言编程MODBUS rs485 RTU模式】
创建modbus_t结构体对象并使用modbus_new_rtu()函数初始化,指定串口设备文件和其他通信参数,例如波特率和从机地址。读取Modbus数据:使用modbus_read_registers()等函数来读取Modbus设备的数据。关闭Modbus连接和串口设备:使用modbus_close()函数关闭Modbus连接,使用close()函数关闭串口设备。根据Modbus协议的规定,解析数据的格式和含义。建立Modbus连接:使用modbus_connect()函数连接到Modbus设备。
2024-03-11 11:16:43
1720
2
原创 cJSON C语言库解析和生成JSON数据
cJSON是一个轻量级的C语言库,用于解析和生成JSON数据。它提供了简洁而高效的API,使得在C语言中处理JSON数据变得简单和方便。以下是一些cJSON库的主要特点和用法:解析JSON数据:使用cJSON_Parse函数可以将JSON字符串解析为cJSON对象。该函数会返回一个指向根节点的指针。如果解析失败,返回NULL。生成JSON数据:使用cJSON_CreateObject和cJSON_CreateArray等函数可以创建cJSON对象。
2024-03-11 09:23:25
2065
原创 交流24v供电和直流24v供电的优势和劣势以及设计成本的差异
在一个建筑物的自动化控制系统中,存在多个需要供电的设备,如传感器、执行器、控制器等。如果使用交流24V供电,可以利用建筑物内的交流电源系统,通过电源线路和变压器进行电压转换和供电。这样可以方便地从电网中获取电能,并在建筑物范围内保持电压稳定性。但是,由于一些设备需要直流供电,需要添加额外的电源转换器来将交流电转换为直流电。
2024-03-10 16:31:25
4904
原创 蓝牙和wifi各有什么优劣势
大规模连接:Wi-Fi网络可以支持多个设备同时连接,适用于大规模设备之间的通信,如家庭、办公室等场景。较高的传输速率:Wi-Fi通信速率较高,适用于大规模数据传输和高速传输,如视频流、大文件传输等。较高的功耗:Wi-Fi通信相对于蓝牙通信来说功耗较高,适用于功耗要求不那么严格的设备。远距离通信:Wi-Fi通信距离较蓝牙更远,适用于在较大范围内进行设备间的无线通信。低功耗:蓝牙通信通常使用较低的功率,适用于低功耗设备,如耳机、智能手表等。连接限制:蓝牙通信通常限制连接的设备数量,不适合大规模设备之间的通信。
2024-03-10 16:19:26
4804
原创 bacnet cov机制详细介绍
BACnet(Building Automation and Control Networks)的COV(Change of Value)机制是一种用于监测和传输对象的变化信息的机制。COV机制允许BACnet设备在对象的值发生变化时主动发送通知,以便其他设备能够实时获取最新的数据。COV机制涉及以下几个重要的对象:COV源(COV Source):COV源是一个BACnet对象,它被监控以检测其值的变化。当COV源的值发生变化时,它将触发COV通知。
2024-03-10 14:40:28
1535
原创 【STM32F103 BACnet MSTP通信RS485驱动代码】
在实际项目应用中,如果想利用低成本的mcu来实现BACnet IO模块,可以采用STM32 RS485队列FIFO实现
2024-01-10 16:08:57
1438
2
原创 STM32 FOC算法调节电机
FOC(Field-Oriented Control,磁场定向控制)是一种先进的电机控制算法,可以实现高效、精确的电机控制
2024-01-06 15:59:50
1290
原创 RN8209 RN8302 spi驱动和校表程序STM32
RN8209是一款单相电能表专用的集成电路芯片。它是基于CMOS工艺的智能电能计量专用芯片,具有高精度、低功耗和强抗干扰能力等特点。RN8209集成了电流、电压、功率、功率因数、频率等计量功能,支持RS485通信接口和SPI接口,可以与微处理器或微控制器进行通信,实现电能计量和数据传输。RN8209芯片具有以下主要特性:电能计量功能:支持电流、电压、功率、功率因数、频率等计量功能,可高精度地测量电能数据。通信接口:支持RS485通信接口和SPI接口,可方便地与上位机或其他设备进行数据通信和控制。
2024-01-06 15:06:57
2997
原创 STM32的串口FIFO发送和接收使用FreeRTOS实时操作系统
以上是一个带有串口接收中断的串口FIFO发送和接收程序的示例代码。请注意,该示例中的错误处理部分需要根据具体的应用场景进行适当的修改。在USART1_IRQHandler函数中,我们处理串口接收中断。当接收到数据时,我们将数据发送到接收队列中。在UART_SendByte函数中,我们将要发送的数据发送到发送队列中。在UART_ReceiveByte函数中,我们从接收队列中接收数据。接下来,我们创建了串口发送任务(vUartTxTask)和串口接收任务(vUartRxTask)。
2023-12-29 08:26:14
3040
3
原创 stm32采用队列方式接收和发送RS485串口数据
rs485_init函数中的rs485_baud_rate_set函数用于配置USART2的波特率。可以使用rs485_baud_rate_set函数来设置所需的波特率。需要注意的是,调用rs485_bytes_send函数时,确保提供的缓冲区大小足够存储要发送的数据,并且nbytes参数的值与要发送的数据字节数相匹配,以避免访问越界和发送不完整的数据。在调用rs485_bytes_send函数时,需要将要发送的数据存储在buffer指向的缓冲区中,并将要发送的数据字节数作为nbytes参数传递给函数。
2023-12-28 09:58:50
2325
原创 Bacnet—IP业务逻辑协议Yabe软件
Bacnet有专门配置IP参数的类,设备连接之前,需要配置端口号和ip地址,图示是用yabe的BACnet参数设置功能。Bacnet 有个专门的类可以配置和读取出厂参数信息,软件版本信息,日期,系统时间信息等,可自定义。表示输出电压值,范围 0~1000对应0到10v输出, 只写,名称可设,默认AO X。表示输入电压值,范围 0~10000,对应0到10v,只读。BINARY OUTPUT类表示开关量DO输出,值为0/1,1表示开。BINARY INPUT类表示开关量DI输入,值为0/1,1表示开。
2023-12-26 09:36:23
2435
原创 NBIOT BC28驱动程序
if ( ( reply1 == 0 ) && ( reply2 == 0 ) ) //不需要接收数据。// printf(“信号级别:%d\n”, NBIOT_MODULE_INFO.signalCSQ);if(USART1_RX_STA&0X8000)//接收到期待的应答结果。//// printf(“数据上传:\n”);
2023-12-19 08:35:11
325
原创 AT32F403如何扩大SRAM
(0x10000/1024=64kb,0x38000/1024=224kb)(4)打开keil5魔术棒图标 ,将Target中的IRAM1第二个选项从0x10000改为0x3800。(0x10000/1024=64kb,0x38000/1024=224kb)雅特力官方的做法是放在了.S文件里,也就是相当于先执行extend_sram()函数,后执行SystemInit(),其实效果是一样的,以下是雅特力官方的做法。#define EXTEND_SRAM 0xFE //使用224K。
2023-12-19 08:22:26
1121
原创 bacnet ddc控制器如何通过485口转发Modbus协议控制modbus执行设备
需要注意的是,BACnet DDC控制器和Modbus执行设备之间的通信协议和寄存器映射需要保持一致,以确保正确的数据传输和控制操作。在BACnet DDC控制器上配置Modbus通信模块:BACnet DDC控制器通常具有可扩展的通信模块,可以通过添加Modbus通信模块来实现与Modbus执行设备的通信。在BACnet DDC控制器上编写逻辑程序:根据需要控制的Modbus执行设备的功能和操作,编写逻辑程序来实现与Modbus执行设备的通信和控制。
2023-08-02 20:20:13
1313
原创 如何硬件上判断单路电流过载
需要注意的是,电路的具体设计取决于所使用的电流传感器类型、电路工作电压、比较器的精度和其他因素。要在硬件上判断单路电流过载,需要使用一个合适的电流传感器和一个电路来检测电流值并进行比较。可以将比较器的输出信号连接到一个告警灯或其他设备上,以进行警示或控制其他操作。如果电流超过了设定的最大电流值,比较器将输出一个高电平信号,表示电流过载。设置比较器的阈值,使其能够检测电流是否超过了设定的最大电流值。将电流传感器的输出连接到一个运算放大器中,以放大电流信号。使用电流传感器来测量电路中的电流。
2023-07-29 22:37:58
735
原创 Linux常用的终端工具有哪些?
gnome-terminal:gnome-terminal是GNOME桌面环境下的终端模拟器,支持多标签和透明度等功能。screen:screen也是一个终端复用器,与tmux类似,可以在一个终端窗口中同时运行多个终端会话。terminator:terminator是一个支持多标签的终端模拟器,可以方便地管理多个终端会话。Zsh:Zsh是一个强大的Shell,支持自动补全和语法高亮等功能,是Bash的替代品。tmux:tmux是一个终端复用器,可以在一个终端窗口中同时运行多个终端会话。
2023-06-23 17:20:35
3700
原创 BACnet协议栈Target_object_instanse和Target_object_index有什么区别和联系
使用Target_object_index,需要指定Object_type为二进制输入对象(Object_type = 1),并指定实例号为1(Target_object_index = 1)。联系:Target_object_instanse和Target_object_index都使用实例号来标识BACnet对象,但Target_object_instanse还包括对象类型。Target_object_instanse相当于Target_object_index和Object_type的组合。
2023-06-20 23:57:35
294
原创 ARM Linux 双网口可以同一个网段吗?怎么配置
在这里,我们将第二个网口的IP地址设置为192.168.1.11,子网掩码设置为255.255.255.0,网关设置为192.168.1.1。在ARM Linux 双网口中,可以将两个网口配置在同一个网段中,以实现更高的网络可靠性和带宽。在配置过程中,需要确保两个网口的IP地址、子网掩码和网关地址都设置正确,以便正确地路由数据包。在这里,我们将第一个网口的IP地址设置为192.168.1.10,子网掩码设置为255.255.255.0,网关设置为192.168.1.1。请确保这些地址与您的网络配置相匹配。
2023-06-16 23:53:19
3158
原创 BACnet协议栈apdu_set_confirmed_handler函数中的确认型回调函数是如何传参的
参数表示请求的APDU数据单元,它是一个指向字节数组的指针。APDU是BACnet协议中用于传输数据的数据单元,它包含了请求的具体内容,比如读取属性操作的对象ID、属性ID等信息。参数表示请求的APDU数据单元的长度,它是一个无符号16位整数。通过这个参数,我们可以知道APDU数据单元的长度,从而正确解析请求的内容。该结构体包含了请求的源地址信息,比如发送方的网络号、MAC地址等。的回调函数,用于处理读取属性操作的请求。参数表示请求的源地址,它是一个指向。在函数的实现中,我们首先通过。
2023-06-13 21:37:35
558
1
原创 BACnet多态对象详细介绍和应用场景
BACnet多态对象是一种特殊的BACnet对象,它可以用于表示具有相似属性和行为但不同类型的设备。多态对象能够将不同类型的设备组合成一个通用的对象类型,这样可以在BACnet系统中更方便地管理和控制这些设备。对象类型定义了对象的属性和行为,而对象实例号则用于区分不同的对象实例。总之,多态对象提供了一种灵活且可扩展的方法,用于表示具有相似属性和行为但不同类型的设备。多个设备具有相似的属性和行为,但是它们的类型不同,例如,多个不同型号的传感器可以使用多态对象来表示。
2023-06-08 23:05:22
581
原创 BACnet command对象介绍和应用场景
实现报警和安全控制:通过Command对象结合其他BACnet对象,例如报警对象、安全对象等,实现报警和安全控制,例如在一定时间内检测设备的状态并执行相应的操作,或者在一定时间内检测传感器的数值是否超过阈值并触发报警等。实现自动化控制:通过Command对象结合其他BACnet对象,例如时间表对象、设备对象等,实现自动化控制,如定时执行某些操作、根据温度传感器的数值自动调节设备温度等。它通常是一个整数值。控制设备的开关、调节温度等操作:通过Command对象发送控制命令,实现对设备的控制和监控。
2023-06-07 00:28:07
663
原创 BACNET定时器对象介绍和应用场景
定时器对象可以与其他BACnet对象一起使用,例如时间表对象、设备对象等,以实现更复杂的控制和调度功能。也可以将定时器对象与设备对象结合使用,以控制设备的开关、调节温度等操作。定时器对象还可以用于报警和安全控制等应用场景,例如在一定时间内检测设备的状态并执行相应的操作,或者在一定时间内检测传感器的数值是否超过阈值并触发报警等。Time Interval属性:表示定时器执行操作的时间间隔,即定时器执行操作后等待的时间。Time Delay属性:表示定时器的延迟时间,即定时器开始执行操作前等待的时间。
2023-06-05 21:49:08
293
AT32 串口IAP升级程序以及操作步骤说明
2022-05-30
lpc1751.lpc1752.lpc1754.lpc1756.lpc1758系列单片机说明书
2022-05-26
st电机库无感调速,采用OLED显示
2022-05-22
SetupSTM32CubeMX-5.2.0.rar
2021-06-03
基于STM32F103单片机的modbus协议进行数据采集和显示的程序
2022-05-22
新型国产单片机雅特力AT32F403A数据手册和选型表
2022-05-22
网络运维SecureCRT终端 - SSH/Telnet/串口连接管理工具 系统管理SecureCRT客户端 - 多协议远程终端解决方案软件
2025-12-25
STM32电机库电机调速程序,带按键调速和软件表盘实时显示,可调节高速电机
2024-01-06
基于STM32的W5500硬件TCP/IP协议栈实现,采用标准库,适合stm32f407系列单片机
2025-12-25
BACnet常用的开发工具,包括点位扫描工具,主站模拟工具以及抓包分析工具
2024-01-06
stm32f103RE CAN总线收发例程以及CAN总线协议完整资料
2024-01-06
stm32f103re modbus主站和从站例程
2024-01-06
使用单片机STM32F103C8T6 采用wifi芯片 ESP8266实现和机智云正常对接,用户可以实现自己的逻辑
2024-01-06
常用的串口和网络调试工具
2024-01-06
STM32f103 wifi ESP8266 云平台控制例程,带按键控制,有操作说明文档
2024-01-06
AGS01DB 基于STM32f103的开发例程,采用IIC通讯
2023-05-19
ESP8266 WIFI模块程序,基于STM32F103C8单片机,采用串口通讯和HAL库实现,带按键控制,程序模块化很好
2023-05-19
vscode是一个轻量且强大的跨平台开源代码编辑器,支持Windows,OSX和Linux 内置JavaScript、TypeS
2023-03-05
从 STM32F10x 移植到 GD32E103 的移植说明
2022-06-04
这篇应用笔记描述了如何在AT32 MCU上使用FPU功能
2022-06-04
AT32F403A AT32F407通过USB口进行IAP升级的keil程序和说明文档
2022-05-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅