2.6k words
一、网络分层体系 1、OSI参考模型 2、TCP/IP的分层 二、数据的封装和分用 三、以太网帧数据的传输 1、局域网间通讯 2、跨网络通讯 一、网络分层体系1、OSI参考模型OSI 参考模型(Open Systems Interconnection Reference Model)是由国际标准化组织(ISO)制定的网络通信框架标准,通过定义七层标准化通信体系,为不同厂商设备互联提供统一规范: 目的:解决早期网络设备兼容性问题,实现跨厂商、跨平台的互联互通; 核心思想:分层解耦,每层专注特定功能,下层为上层提供服务; 意义:虽实际网络中TCP/IP协议栈更常用,但OSI模型仍是网络协议设计的理论基础和教学工具。 2、TCP/IP的分层网络协议通常分不同层次进行开发,每一层分别负责不同的通信功能。TCP/IP分层模型是互联网协议套件的基础,它简化了OSI模型,将网络通信过程划分为四个层次。TCP/IP模型的主要目的是提供一个实际可行的网络通信架构,它是互联网和许多其他网络的基础。TCP /IP,...
3.9k words
一、邮箱API函数 1、邮箱的创建 2、邮箱的发送 3、消息的接收 4、邮箱的脱离/删除 二、创建邮箱示例 1、创建邮箱 2、接收与发送消息 邮箱(Mailbox)是RT-Thread中高效的线程间通信机制,其核心特点是: 传输固定尺寸数据:每条消息为4字节(32位系统),可传递整型或指针 轻量级通信:比消息队列更节省内存,适用于小数据量场景 优先级传递:支持紧急消息优先处理 典型应用场景: 在硬件中断服务中,通过rt_mb_send快速传递传感器状态字,消费线程解析后触发相应动作,避免中断长时间占用CPU资源。 一、邮箱API函数1、邮箱的创建 动态创建邮箱(推荐灵活场景) 1rt_mailbox_t rt_mb_create(const char *name, rt_size_t size, rt_uint8_t flag) 静态创建邮箱 12345rt_err_t rt_mb_init(rt_mailbox_t mb, const char *name, ...
3.9k words
一、消息队列API函数 1、消息队列的创建 2、消息的发送 3、消息的接收 4、消息队列的脱离/删除 二、创建消息队列示例 1、创建消息队列 2、完整示例 消息队列(Message Queue)是一种异步通信机制,其核心功能是: 解耦生产者和消费者:发送方和接收方无需同时在线 缓冲与流量整形:应对瞬时流量过载 优先级处理:支持紧急消息插队 典型案例: 在RT-Thread中,中断服务程序(ISR)通过rt_mq_send非阻塞发送传感器数据,消费者线程按需从队列读取数据,避免ISR因等待导致实时性下降。 一、消息队列API函数1、消息队列的创建 动态创建消息队列 1234rt_mq_t rt_mq_create(const char *name, rt_size_t msg_size, rt_size_t max_msgs, rt_uint8_t flag) 静态创建消息队列 123456rt_err_t r...
2.5k words
一、rt_thread_delay_until()函数 二、rt_thread_delay()函数 三、rt_thread_mdelay()函数 四、rt_hw_us_delay()函数 在RT-Thread实时操作系统中,延时函数是实现任务调度的关键工具。它们允许任务在指定的时间间隔内挂起,释放CPU资源供其他任务运行,从而提高系统响应性和资源利用率。RT-Thread提供了四种主要的延时函数: 绝对延时(精准延时) 1rt_err_t rt_thread_delay_until(rt_tick_t *tick, rt_tick_t inc_tick) 相对延时(基于当前时间) 1rt_err_t rt_thread_delay(rt_tick_t tick) 毫秒级延时 1rt_err_t rt_thread_mdelay(rt_int32_t ms) 微秒级硬件延时(可基于基于DWT或定时器) 1RT_WEAK void rt_hw_us_delay(rt_uint32_t us) 注意:前三个函数受系统tick影响,tick =...
13k words
概述 附录-使用STM32H750驱动程序 1、外设初始化文件 2、驱动文件 概述STT-MRAM PM004MNIA 是一种具有 随机存取(Random Access) 特性的非易失性存储器,无需擦除操作,可进行 任意地址的读写操作。它的核心基于 自旋转移扭矩(Spin Transfer Torque, STT) 技术,通过控制电流方向来改变磁性存储单元的状态,从而实现数据的存储与读取。支持写无延迟(Write No Delay) 的特性,显著提高了存储效率。 广泛应用于需要 高速读写、低功耗和长期数据保存 的场景,例如 IoT 设备、工业控制模块、可穿戴设备、传感器系统 等。 特性 描述 存储容量 4Mbit 存储技术 自旋转移扭矩磁随机存取存储器(STT-MRAM) 随机存取能力 支持任意地址的读写操作,无需擦除,写入延迟低 接口支持 SPI 和 QPI(四线并行) 最大 SPI 频率 50MHz 低功耗 Sleep 模式下仅需 2μA 数据保留时间 可达 20 年(在 85°C 环境下) 写入耐久性 支持高达 10⁸...
7.4k words
一、静态线程创建 1、thread_task.c文件 2、thread_task.h文件 二、静态创建线程(自定义实现调度) 1、thread_task.c文件 2、thread_task.h文件 2、修改board.c中的SysTick_Handler()函数 三、动态创建线程 1、thread_task.c文件 2、thread_task.h文件 一、静态线程创建1、thread_task.c文件123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293#include "thread_task.h"#include "main.h"#include <stdio.h> #include "...
1.8k words
WT 是一个调试外设,它的核心功能之一是 CYCCNT(Cycle Count),这是一个32位递增计数器,用于记录 CPU 执行的时钟周期数量。我们可以通过对这个计数器的变化来实现高精度延时。 在使用 DWT 延时之前,需要完成以下操作: 使能 DWT 使能 CYCCNT 清零 CYCCNT 基于 CYCCNT 实现延时逻辑 源码如下: dwt.delay.h文件 12345678910111213141516171819#ifndef __DWT_DELAY_H#define __DWT_DELAY_H#include "stm32g4xx.h"/* 获取内核时钟频率 */#define GET_CPU_ClkFreq() HAL_RCC_GetSysClockFreq()uint32_t CPU_TS_TmrRd(void);HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority);//最大延时值为8秒void dwt_delay_us(uint32_t us);#define HAL_...
6.5k words
一、效果展示 1、在文本中的效果: 2、上位机界面效果: 二、操作 1、直接使用exe文件 2、使用源码编译方法(源码见附录) 三、附录: 1、源码 在写代码时有时要在代码中插入表格,手写太麻烦,所以使用 Python 的 Tkinter 开发了一个功能齐全、可自定义的 ASCII 表格生成器上位机工具。 一、效果展示1、在文本中的效果:12345678┌────────────────────────────────────────────┐│ DW3000 寄存器映射表 │├────────────────────────────────────────────┤│ addr │ name │ width │├──────────┼─────────────────┼───────────────┤│ 0x00 │ DEV_ID │ 32-bit ││ 0x12 │ RX_BUFFER_0 │ 10...
5k words
一、了解源码 1、bsp文件夹 2、components文件夹 3、docs文件夹 4、include文件夹 5、libcpu文件夹 6、src文件夹 二、官方移植 1、修改board.c文件 2、修改rtconfig.h文件 一、了解源码从官方下载到RT-Thread Nano源码目录如下图所示 ![RT源码文件夹](D:\个人文档\blog\RT-Thread Nano源码浅析\RT源码文件夹.png) 1、bsp文件夹bsp文件夹里面存放的是板级支持包(board support package),用于存放RT-Thread为各种半导体厂商的评估板写好的驱动程序,其中重要的主要是两个文件 board.c:RT-Thread用来初始化开发板硬件的相关函数; rtconfig.h:RT-Thread功能的配置头文件,可以裁剪RT-Thread的功能; 2、components文件夹其它第三方加进来的组件,比如gui、fatfs、lwip和finsh等。nano版本只放了finsh,是RT- Thread组件里面最具特色的,它通过串口打印的方式来输出各种信...
1.7k words
一、示例代码 二、GPIO_InitStruct参数配置 1、GPIO_InitStruct.Pin 2、 GPIO_InitStruct.Mode 3、GPIO_InitStruct.Pull 4、GPIO_InitStruct.Speed 在 STM32 的开发中,GPIO(通用输入/输出)是一种极其重要且常用的外设资源。无论是用于控制 LED、按键、电机驱动,还是与其他外设之间通信,GPIO 都是实现这些功能的核心接口。 一、示例代码这是一个在 STM32 HAL 库中非常常见的初始化函数,用于配置 GPIO 引脚为输出模式,并设置相应的参数。 12345678910111213141516171819202122232425/** * @brief 初始化GPIO引脚(用于LED控制) * @param 无 * @retval 无 */void GPIO_Init(void){ /* 初始化GPIO结构体,所有成员默认为0 */ GPIO_InitTypeDef GPIO_InitStruct = &...