自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 资源 (5)
  • 收藏
  • 关注

原创 RT-Thread文件系统刨析

本文系统的讲解RT-Thread的文件系统,第二章代码架构从整体把我文件系统的结构,数据自顶向下的处理流程;第三章讲解底层的处理,与传统的直接操作硬件驱动不同,RT-Thread文件系统的底层是通过操作设备实现的;第四章讲解设备虚拟文件系统的注册和匹配,横向加深对dfs层的理解;第五章介绍RT-Thread下文件系统的配置和使用;第六章以一个示例介绍从fal驱动配置到文件系统的挂载的完整流程。

2023-07-22 16:06:51 593

原创 【rt-thread网络】第3篇:mqtt加密通信

【代码】【rt-thread网络】第3篇:mqtt加密通信。

2023-04-06 21:52:57 792 1

原创 【rt-thread网络】第2篇:mosquitto搭建和mqtt网络包分析

mosquitto下载地址:https://mosquitto.org/download/Eclipse Mosquitto是一个开源(EPL/EDL许可)消息代理(broker),它实现了MQTT协议版本5.0、3.1.1和3.1。Mosquito重量轻,适用于从低功耗单板计算机到完整服务器的所有设备。

2023-04-02 20:55:27 360

原创 fr8016 sdk协议栈开发-gatt

通用属性配置文件协议(GATT)是在属性协议(ATT)之上构建的为传输的数据建立共同的操作规范,数据以ATT协议的形式存储。Gatt定义了两个角色:服务器和客户。Gatt角色不一定与特定的角色有关,而是可以通过较高的profile指定。gatt和att不特定用于BR/EDR和LE的传输,但是,因为Gatt和ATT用于发现服务,在LE中是必须的。GATT server存储通过ATT协议传输的数据,以及接受来自的ATT协议的请求、命令和来自client的确认。

2023-03-31 22:09:56 729

原创 fr8016 sdk源码结构和开发方式

下面的代码中,user_task_func是一个任务,需要被其他任务通过事件驱动,当其他任务调用os_msg_post向user_task_func发送os_event_t时,user_task_func得到执行。sdk开发中,任务采用事件驱动,不同任务间通过消息os_event_t *进行通信,当任务A产生的事件可以驱动任务B时,任务A通过os_msg_post向任务B发送消息,任务B接收消息,并从消息中获取事件id和数据,根据事件id做相应的处理。下面按照协议栈处理流程给出接口的说明。

2023-03-30 22:34:13 771

原创 【rt-thread网络】第1篇:通过paho-mqtt软件包入门rt-thread的sal

在rt_wlan_register_event_handler函数注册好RT_WLAN_EVT_READY的回调函数paho_mqtt_start,当wifi准备好后调用mq_start启动mqtt。在mq_start中,初始化MQTTClient结构体,设置mqtt连接的参数:mqtt的uri、mqtt的用户名(username)和密码(password)、mqtt发布和订阅的主题Topic、消息质量等级QoS,最后调用paho_mqtt_start创建处理mqtt的线程paho_mqtt_thread。

2023-01-15 18:47:22 1138

原创 【rt-thread网络】第0篇:使用paho-mqtt软件包连接腾讯云mqtt服务器

MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件。MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。

2023-01-11 23:00:20 1544

原创 【BL808】缘起:M1s开发板的第一个示例-LVGL

BL808 芯片内部包含多个 RISC-V 处理器。D0 是一颗 64-bit RISC-V 超高性能CPU,内核是玄铁的C907,主频480MHz,集成 DVP/CSI/ H264/NPU 等视频处理模块,为BL808提供多媒体能力,包含采用 5级流水线结构,支持RISC-V RV64IMAFCV 指令架构,包含 67 个外部中断源,有 3 个 bits 可以用于配置中断优先级。

2022-12-11 20:42:58 2510 1

原创 【esp32-adf】pipeline源码分析

;

2022-11-29 00:33:14 817 1

原创 【audio】TM8211

TM8211是两路16位数模转换集成电路,可广泛应用于数字音频、多媒体系统。芯片采用CMOS工艺设计,内部电路结构基于R-2R电阻网络结构设计,并在全电源电压范围内实现16bit的动态范围。TM8211可通过采用数字串行总线数据输入,采用快速R-2R网络结构来支持8X的过采样音频信号处理。TM8211 支持较宽范围的采样频率,兼容PT8211、TDA1311芯片,输入采用LSBJ (Least。

2022-11-18 11:44:14 1986

原创 【esp32-adf】按键服务源码分析

esp-adf的按键服务源码分析。

2022-10-31 12:36:34 790

原创 tlsf算法-概念、原理、内存碎片问题分析

tlsf(全称Two-Level Segregated Fit,内存两级分割策略算法),第一级(first level,简称fl)将内存大小按2的幂次方划分一个粗粒度的范围,如一个72字节的空闲内存的fl是6(72介于26和27之间),第二级(second level,简称sl)在第一级的基础上做线性化的细粒度划分,分为多少等份由可配置的SLI参数确定,在32bit的系统中,最优的SLI是4或者5,若为4,则等分为24。

2022-10-02 18:23:45 4342

原创 RT-Thread底层汇编及在arm与riscv上的差异

一、内核寄存器SCB_VTOR 0xE000ED08 向量表偏移寄存器ICSR 0xE000ED04 中断控制状态寄存器PENDSVSET_BIT 0x10000000 值来触发PendSV异常SHPR3 0xE000ED20 系统优先级寄存器PENDSV_PRI_LOWEST 0xFFFF0000 PendSV和SysTick优先级值二、三个中断2.1 全局中断/* * rt_base_t rt_hw_interrupt_disable(); */ .global rt_hw

2022-05-21 16:10:04 1387

原创 【AUTOSAR】基于RT-Thread内核的AUTOSAR在n32g上的实现

一、项目介绍  随着小米宣布造车,当下“软件定义汽车”的趋势如火如荼,autosar的全称Automotive Open System Architecture,即汽车开放软件架构,这正如TCP/IP对网络进行统一,autosar是对汽车软件技术的统一,TCP/IP制定的初衷是为统一网络标准从而诞生了今天的互联网,而AUTOSAR的制定是为实现汽车电子软件的统一从而实现汽车电子软件的复用。本项目是基于autosar3.1的开源代码arctic core,在此基础上,完成在n32g45x上的mcal驱动,适

2022-03-23 12:12:09 3500 1

原创 【autosar】NXP HS12(X) AUTOSAR MCAL软件包安装和使用

文章目录一、mcal在autosar架构中的位置和功能二、环境搭建:CodeWarrior、EB tresos、SWS12-MCAL302-RTMC-1.0.4第一步:安装软件第二步:配置和编译sample工程三、我在搭建环境中遇到的问题和解决3.1 安装code warrior后打开失败:提示需要运行regservers.bat3.2 编译的时候遇到找不到piper.exe和burner.exe五、链接汇总一、mcal在autosar架构中的位置和功能mcal位于autosar架构的最底层,主要由M

2022-01-23 12:23:33 2775 5

原创 【can总线】stm32的can控制器

一、can介绍二、can控制器功能介绍2.1 传输处理为了传输消息,应用程序必须选择一个空的传输邮箱,通过在CAN_TIxR寄存器中设置相应的TXRQ位,设置标识符、数据长度码(DLC)和数据。一旦邮箱处于空状态,软件就不再对邮箱寄存器具有写访问权限。设置TXRQ位后,邮箱立即进入挂起状态并等待成为最高优先级的邮箱,请参阅传输优先级。一旦邮箱具有最高优先级,就将调度其进行传输。当CAN总线成为空闲时,计划邮箱的邮件传输将启动(输入传输状态)。一旦成功传输了该邮箱,该邮箱将再次变为空。硬件通过在CAN_

2022-01-14 15:34:18 1423

原创 【can总线】can总线博客计划

第一篇:初识can总线一、can总线的发展二、can总线的分层模型三、can总线的帧结构四、can总线的位填充五、can总线的帧间空间六、can总线的非破坏性按位仲裁第二篇:从iso8802和can协议认识can总线第三篇:消息帧分析第四篇:can的同步第五篇:can总线的crc校验原理第六篇:can总线的出错帧和超载帧第七篇:can总线的远程帧第八篇:can总线的故障界定第九篇:基于时间触发的TTCAN...

2022-01-11 18:14:17 200

原创 【linux】嵌入式应用开发过程:从头文件到main函数

文章目录一、Linux应用开发介绍二、嵌入式Linux应用开发示例2.1 头文件2.2 main函数三、补充知识3.1 main函数的入参argc、argv一、Linux应用开发介绍Linux 学习的三大方向:运维应用开发底层开发对于应用开发的工程师,需要掌握的技能有Linux 平台的 API ,包括 IO 操作,进程间通讯, Linux 环境,网络通讯脚本语言,包括 Shell, Python ,数据库,比如 MySQL,Sqlite。二、嵌入式Linux应用开发示例源码取自正

2021-11-24 19:00:00 483

原创 【linux】嵌入式linux的组成

一、bootloader1.1 bootloader介绍Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装载到内存中然后跳转到操作系统所在的空间。常见的bootloader有Redhat公司的Redboot、ARM平台的ARMboot、由开源项目PPCBoot发展起来的U-Boot。1.2 uboot源码官网地址:http://www.denx.de/wiki/U-Boot/,nxp在此基础上,针对自己的芯片有自

2021-11-23 23:12:31 1285

原创 【esp32】blufi源码分析

一、blufi介绍blufi是乐鑫推出的ble配网协议。二、blufi源码分析2.1 nvs初始化2.2 初始化wifi2.3 释放蓝牙控制器内存2.4 蓝牙控制器初始化2.5 使能蓝牙控制器2.6 blufi host初始化2.7 注册blufi回调2.8 执行gap回调...

2021-11-22 11:42:51 1555

原创 【esp32】esp-ali-smartliving源码分析

一、esp-ali-smartliving介绍esp-ali-smartliving是乐鑫基于阿里提供的C LINK SDK rel_1.6.0开发的连接阿里云生活物联网平台、天猫精灵平台的SDK。二、esp-ali-smartliving执行流程

2021-11-20 22:14:57 4045

原创 【ESP32】ESP-IDF构建系统

参考https://docs.espressif.com/projects/esp-idf/zh_CN/v4.2/esp32/api-guides/build-system.html概述ESP-IDF 可以显式地指定和配置每个组件。在构建项目的时候,构建系统会前往 ESP-IDF 目录、项目目录和用户自定义目录(可选)中查找所有组件,允许用户通过文本菜单系统配置 ESP-IDF 项目中用到的每个组件。在所有组件配置结束后,构建系统开始编译整个项目。构建需要知道的概念项目:包含构建可执行应用程序所需的

2021-11-19 21:45:00 766

原创 【ESP32】使用vscode的espressif idf插件开发

文章目录一、概述1.1 esp32介绍1.2 esp32的官方文档二、开发环境搭建、编译和烧写2.1 下载vscode2.2 安装espressif idf插件2.3 新建工程、编译、烧写2.3.1 新建工程2.3.2 编译2.3.3 烧写三、注意事项一、概述1.1 esp32介绍1.2 esp32的官方文档二、开发环境搭建、编译和烧写2.1 下载vscode下载地址2.2 安装espressif idf插件按下install按钮后等待些时间,首先安装好的是esp-idf框架,在准

2021-11-15 22:18:52 2294

原创 【CO2二氧化碳传感器】senseair S8 LP

文章目录一、Senseair S8 LP介绍1.1 Senseair介绍1.2 二氧化碳传感器S8介绍1.3 S8结构和引脚二、使用Senseair官方的软件读取CO2浓度2.1 下载上位机软件2.2 硬件接线(usb转串口模块与传感器连接)2.3 上位机连接传感器后开始显示一、Senseair S8 LP介绍1.1 Senseair介绍  在红外气体传感领域超过25年的研究和开发经验,现在为我们带来了世界上最小的CO2传感器,具有NDIRtechnique, senseair S8 5%。该传感器具

2021-10-29 17:28:21 4972 1

原创 【stm32】自定义log组件

一、概述自定义log组件可以将头信息打印出来,方便调试定位。二、代码新建一个driver_dbg.h文件,复制下面的代码并保存。#ifndef __DRIVER_DBG_H_#define __DRIVER_DBG_H_#include "main.h"/* 自定义printf函数的开关 */#define LOG_ENABLE 1#if LOG_ENABLE#ifndef DBG_SECTION#define DBG_SECTION "[dbg_defa

2021-07-28 17:48:06 627

原创 【stm32】G0系列串口低功耗模式介绍和应用(地址匹配模式)

一、串口低功耗模式介绍1.1 介绍stm32可以通过串口来从stop模式唤醒,如果基于hal库,只要进行一些配置就能使用,这种通过串口唤醒的低功耗模式可以用在带电池的设备上,在需要设备工作的时候才将其唤醒处理事务,处理完后进入stop模式降低功耗。1.2 三种模式和相关的寄存器1.2.1 寄存器1.2.1.1 CR3[21:20] WUS[1:0]功能:选择从低功耗模式中断唤醒的标志配置说明:00:地址匹配模式01:保留10:检测起始位11:RXNE/RXFNE中断1.2.1.2 C

2021-07-21 17:07:56 1690

原创 【lwip】第二篇:使用lwip的netconn接口编写TCP服务器

一、netconn介绍  参考链接:https://lwip.fandom.com/wiki/Netconn_API  netconn API 是一个顺序API,旨在使lwip协议栈更易于使用(与事件驱动的原始 API 相比),同时仍保留零拷贝功能。  要使用netconnAPI,需要一个操作系统,因为这个API需要使用线程。协议栈核心中的所有数据包处理(输入和输出)都是在一个专用线程内完成的-Tcpip线程)。应用程序线程使用邮箱和信号量与此专用线程通信。二、netconn API/*创建ne

2021-07-15 22:13:17 2340 1

原创 【lwip】第一篇:使用cubemx配置使能lwip

一、lwip介绍  LwIP是Light Weight (轻型)IP协议,有无操作系统的支持都可以运行。LwIP实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用,它只需十几KB的RAM和40K左右的ROM就可以运行,这使LwIP协议栈适合在低端的嵌入式系统中使用。  lwIP协议栈主要关注的是怎么样减少内存的使用和代码的大小,这样就可以让lwIP适用于资源有限的小型平台例如嵌入式系统。为了简化处理过程和内存要求,lwIP对API进行了裁减,可以不需要复制一些数据。  lwip项目地址:

2021-07-14 22:41:10 4012 2

原创 我的踩坑记录

2021.5.28 sizeof测量结构体大小struct a{ float a; float b;};typedef struct a* a_t;printf("sizeof(a) = %d\r\n",sizeof(a_t));//出错的情况,sizeof的结果为4printf("sizeof(a) = %d\r\n",sizeof(struct a));//对的情况,sizeof达到了测量结构体的目的错误描述:使用sizeof测量结构体时测量的结果为4错误分析:sizeof里的参

2021-05-28 17:18:46 189

原创 【FPGA】inter cyclone 10第一个工程

文章目录一、小脚丫step cyc10介绍二、安装开发环境三、新建工程3.1 新建工程3.2 添加verilog文件(.v文件)并分析综合3.3 管脚约束3.4 管脚分配3.5 编译3.6 下载四、测试一、小脚丫step cyc10介绍小脚丫STEP-CYC10 是一款基于Intel Cyclone10设计的FPGA开发板。板卡尺寸只有72mm×40mm。核心FPGA芯片选用了Intel公司Cyclone 10 LP系列的10CL016YU256C8G,相比于前一代的Cyclone IV系列的FPGA,

2021-05-26 22:18:16 1354 1

原创 【rtthread番外】第三篇:套接字抽象层SAL

一、SAL概念SAL是rtthread提供的socket组件,将底层不同协议栈统一为上层提供标准的BSD Socket api。二、SAL api//创建套接字/*domain:协议簇类型type:协议类型protocol:运输层协议返回:套件字描述符*/int socket(int domain, int type, int protocol);//绑定套接字,将端口号和IP绑定到套接字上/*s:套接字描述符name:要绑定的地址,依赖netdev组件namelen: s

2021-05-21 22:20:11 1278

原创 【rtthread番外】第二篇:AT组件

文章目录一、AT组件概念1.1 AT命令概念1.2 rtthread AT组件资源占用1.3 AT组件功能AT Server:AT Client:二、AT组件api2.1 server api2.1.1 api2.1.2 server api示例2.2 client api2.2.1 client 处理响应数据api2.2.2 client 处理响应数据api示例2.2.3 client URC数据处理api2.2.4 client URC数据处理api示例2.2.5 client 其它api一、AT组件

2021-05-20 21:39:55 1892 2

原创 【rtthread番外】第一篇:文件系统dfs

文章目录一、文件系统概念二、文件系统api2.1 文件系统挂载api2.2 文件管理api2.3 目录管理api三、文件系统示例一、文件系统概念文件系统是一套实现了数据的存储、分级组织、访问和获取等操作的抽象数据类型 (Abstract datatype),是一种用于向用户提供底层数据访问的机制。在 RT-Thread DFS 中,文件系统有统一的根目录,使用 / 来表示。而在根目录下的 f1.bin 文件则使用 /f1.bin 来表示, 2018 目录下的 f1.bin 目录则使用 /data/20

2021-05-20 21:38:11 767

原创 【rtthread番外】第零篇:wlan框架

一、rtthread wlan框架wlan框架是rtthread用于管理wifi的中间件,对下连接硬件,控制连接、扫描, 对上承载不同的应用,为应用提供 WIFI 控制,事件,数据导流等操作。二、wlan api2.1 初始化相关api//设置wlan模式/*dev_name:wlan设备名称mode:工作模式,可取 RT_WLAN_NONE, /* 停 止 工 作 模 式 */ RT_WLAN_STATION, /* 无 线 终 端 模 式 */ RT_WLAN_AP

2021-05-20 21:36:33 951

原创 【rtthread设备】补充篇:结合源码认识rtthread设备的三层框架

一、rtthread设备三层框架绝大部分的嵌入式系统都包括一些 I/O(Input/Output,输入 / 输出)设备,例如仪器上的数据显示屏、工业设备上的串口通信、数据采集设备上用于保存数据的 Flash 或 SD 卡,以及网络设备的以太网接口等,都是嵌入式系统中容易找到的 I/O 设备例子。RT-Thread 提供了一套简单的 I/O 设备模型框架,如下图所示,它位于硬件和应用程序之间,共分成三层,从上到下分别是 I/O 设备管理层、设备驱动框架层、设备驱动层。其中,设备管理层和设备驱动框架层rtt

2021-05-15 19:07:05 1580

原创 【rtthread设备】第八篇:看门狗设备

一、watchdog设备概念看门狗启动后,可以在空闲线程或者关键任务喂狗,在产品化的嵌入式系统保证在系统异常时能够自动复位。二、watchdog设备api//查找设备/*name:设备名称,一般为wdt*/rt_device_t rt_device_find(const char* name);//初始化看门狗/*看门狗句柄*/rt_err_t rt_device_init(rt_device_t dev)//控制看门狗/*dev:看门狗句柄cmd:控制命令,可取

2021-05-15 11:41:25 1445

原创 【rtthread设备】第七篇:spi设备

一、spi设备概念rtthread将spi设备抽象成rt_spi_device。1.1 spi配置结构体struct rt_spi_configuration{ rt_uint8_t mode; /* 模 式 */ rt_uint8_t data_width; /* 数 据 宽 度, 可 取8位、 16位、 32位 */ rt_uint16_t reserved; /* 保 留 */ rt_uint32_t max_hz; /* 最 大 频 率 */};mode

2021-05-15 11:40:32 2666 1

原创 【rtthread设备】第六篇:i2c设备

一、i2c设备驱动框架在i2c通信中,mcu一般作为主机与外围的i2c芯片通信,rttread将i2c主机虚拟成i2c总线设备,通过i2c设备接口与从机通信。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ypoQJS0h-1621013981993)(en-resource://database/1939:1)]二、i2c驱动api2.1 常用api//获得设备句柄/*name:i2c总线设备名称*/rt_device_t rt_device_find(co

2021-05-15 01:40:19 1282

原创 【rtthread设备】第五篇:hwtimer设备

一、hwtimer概念二、hwtimer api查找设备获得定时器句柄,根据句柄打开定时器,设置定时器超时回调函数、设置定时器模式、设置定时器超时值后定时器启动,可以读取定时器经过的时间。//查找设备/*name:设备名称*/rt_device_t rt_device_find(const char* name)//打开定时器设备/*dev:定时器设备句柄oflags:打开模式,一般取RT_DEVICE_OFLAG_RDWR*/rt_err_t rt_device_open(rt

2021-05-15 01:39:09 1300

原创 【rtthread设备】第四篇:pwm设备

一、pwm设备概念rtthread将pwm设备抽象成rt_device_pwm二、pwm api设置pwm的周期和脉冲宽度时间后可以使/失能pwm设备。//查找pwm设备/*name:pwm设备名称*/rt_device_t rt_device_find(const char* name);//设置pwm设备的周期和占空比/*device:pwm设备句柄channel:pwm通道period:周期pulse:脉冲宽度时间*/rt_err_t rt_pwm_set(struc

2021-05-15 01:38:01 946

二氧化碳传感器scd30驱动

sensiri二氧化碳传感器scd30驱动,doc文件为芯片手册,驱动在hwdriver里。 硬件平台:stm32g030ct6、scd30 cuebmx版本:6.1.2 硬件接线: //////////////////////////////////////////// // stm32g030c8t6 scd30 // // PB8 -------------------------- SCL // // PB9 -------------------------- SDA // // 3.3V -------------------------- VIN // // GND -------------------------- GND // ////////////////////////////////////////////

2021-07-28

test_gd32_htu21d.rar

芯片型号:gd32f350k8u6;温湿度芯片:htu21d。使用gd32标准库开发的i2c通信的htu21d温湿度应用,doc文件夹为芯片手册,tool文件夹为ISP下载软件,用stlink下载也可以。如果使用keil开发,需到官网下载离线DFP包。

2021-04-01

test_data_eeprom.rar

片上eeprom的读写操作。

2021-03-16

test_iic_oled_f103.rar

使用rtthread的i2c驱动框架做的小练习,供各位下载学习,不用积分,行的给我点个赞。

2021-02-12

test_uart_f103c8t6.rar

参考《rtthread编程指南》的uart章节,供下载学习,特意设置了不用积分。

2021-02-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除