自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 收藏
  • 关注

原创 嵌入式Linux基于IMX6ULL tslib学习总结

tslib开源库地址是:http://www.tslib.org/tslib是一个开源的触摸屏校准和事件处理库,广泛用于嵌入式系统和 Linux 系统中。它提供了一套工具和库函数,用于校准触摸屏、处理触摸事件,并将原始触摸数据转换为可用于应用程序的标准化事件。

2024-11-24 11:32:48 1215

原创 嵌入式Linux输入系统应用编程学习总结

嵌入式Linux输入系统是处理来自各种输入设备(如键盘、鼠标、触摸屏等)事件的核心组件。在嵌入式系统中,输入子系统的设计需要特别考虑资源限制、实时性要求等因素。从应用层到硬件最底层分为:用户空间(应用层)、内核空间(输入系统事件层、输入系统核心层、输入系统驱动层)、硬件(如键盘、鼠标、触摸屏等):APP 发起读操作,若无数据则休眠用户操作设备,硬件上产生中断。

2024-11-13 23:34:08 1097

原创 freetype学习总结

基于韦东山IMX6ULL开发板和配套资料中LCD屏幕学习,资料包括:​ 5、simsun.ttc文件,freetype可以直接使用freetype 依赖于 libpng, libpng 又依赖于 zlib,所以我们应该:先编译安装 zlib,再编译安装 libpng,最后编译安装 freetype。但是,有些工具链里有 zlib, 那就不用编译安装 zlib。

2024-11-03 16:36:50 887

原创 基于IMX6ULL开发板LCD点阵显示字符学习

点阵显示字符,也称为点阵字体或位图字体,是一种将字符以点阵形式进行表示的方法。在这种表示方法中,每个字符都被划分为一个固定大小的点阵,点阵中的每个点(像素)可以独立控制其是否显示,从而构成字符的轮廓和形状。常见的点阵字体大小有8x8、8x16、16x16、24x24等,这些数字分别表示字符在水平和垂直方向上所占的像素点数。

2024-10-27 16:53:57 801

原创 基于STM32F103C8T6的双区bootloader学习总结

Bootloader是微控制器启动时运行的第一个程序,它位于存储器的特定位置,通常是Flash存储器的开始部分。Bootloader的设计目的是在没有操作系统的情况下,独立完成一系列关键任务,为系统的进一步启动做好准备。Bootloader的作用硬件初始化初始化微控制器的硬件资源,包括但不限于时钟设置、复位外设、配置中断控制器等,以确保系统处于一个稳定且可预测的状态。加载和执行应用程序将应用程序从非易失性存储器(如Flash)加载到RAM中,并跳转到应用程序的入口点(通常是main()

2024-10-27 11:12:18 1419

原创 在Keil调试内存中的程序

最近在使用STM32F103C8T6学习bootloader时遇到这样一个问题:实现bootloader程序把flash上app程序copy到RAM中,然后跳转到RAM执行app程序时,bootloader运行完后无法正常执行app的工程,想要单步调试分析问题,由于是在内存中运行,所以在Keil中就需要相应配置,实现在内存中调试的功能。

2024-10-26 20:02:31 1080

原创 找不到msys-2.0.dll解决方法

解决Windows环境下运行软件时出现“由于找不到 msys-2.0.dll,无法继续执行代码。重新安装程序可能会解决此问题”报错

2024-10-21 17:19:16 648

原创 Framebuffer学习

Frame是帧的意思,buffer是缓冲的意思,这意味着Framebuffer就是一块内存,里面保存着一帧图像。Framebuffer中保存着一帧图像的每一个像素颜色值,假设LCD的分辨率是1024x768,每一个像素的颜色用32位来表示,那么Framebuffer的大小就是:1024x768x32/8=3145728字节。假设需要设置LCD中坐标(x,y)处像素的颜色,首要要找到这个像素对应的内存,然后根据它的BPP值设置颜色。文件中,Framebuffer主要定义了2类参数:可变的参数。

2024-10-03 10:40:50 1033

原创 Makefile学习总结

Makefile是一种用于自动化构建过程的脚本文件,广泛应用于软件开发中。它定义了如何从源代码构建目标文件(如可执行文件或库文件)的一系列规则和依赖关系。Makefile通常与make工具一起使用,make是一个命令行工具,它可以解析Makefile中的指令并执行相应的构建任务。目标(Target):Makefile 中的一个目标通常是一个文件,它是由一系列依赖文件通过一个或多个命令生成的。最终的目标文件通常是可执行文件或库文件。依赖(Dependencies)

2024-09-10 14:29:12 1328

原创 GCC学习总结

GCC(GNU Compiler Collection,GNU编译器套件)是GNU项目的一部分,是一个广泛使用的开源编译器套件,支持多种编程语言和处理器架构。GCC最初是为了编译C语言而开发的,但现在已经成为一个多语言编译器,支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada、Go、D等多种语言。GCC包含以下主要组件:前端(Frontend):负责处理源代码,将源代码转换为中间表示(Intermediate Representation,IR)。不同的编程语言有不同的前端。

2024-09-08 10:52:56 2980

原创 交叉编译概念

交叉编译是指在一个平台上编译代码,使其能够在另一个不同的平台上运行的过程。这种编译方式通常用于开发嵌入式系统、移动设备和其他受限环境中的应用程序。交叉编译是使用一种编译器(称为交叉编译器),该编译器在宿主机(host)上运行,但生成的目标代码却可以在目标机(target)上运行。宿主机和目标机通常有不同的硬件架构和操作系统环境。()嵌入式系统:如物联网设备、路由器、工业控制器等。移动设备:如智能手机、平板电脑等。特定架构的服务器:如ARM服务器。操作系统开发:如为不同架构编译Linux内核。

2024-09-04 22:30:13 2913

原创 MQTT Client源码分析

之前基于和,仅仅是对着韦老师的教程移植和使用杰杰的mqttclient代码,简单的将mqttclient\platform\FreeRTOS\platform_net_socket.c文件中的接口绑定到ESP8266的TCP AT命令,使用ESP8266的Socket,对于杰杰的mqttclient代码并没有深入分析和理解。

2024-09-04 10:11:04 2263

原创 Python编写BC260Y TCP数据收发压力测试脚本

使用BC260Y的TCP AT命令发送数据时,能够在数据中带有’\r\n’(回车换行),而其他模组会将’\r\n’当做AT命令处理的结束符,例如EC800E,为了验证TCP数据中带有’\r\n’时数据发收的稳定性,决定进行压力测试。

2024-08-27 18:02:55 716

原创 C中字符串处理学习笔记

C语言的标准库 包含了一系列用于字符串操作的函数,这些函数在处理文本数据时非常有用。

2024-07-23 19:49:23 1177

原创 Linux_fileio实现copy文件

参考韦东山老师教程:https://www.bilibili.com/video/BV1kk4y117Tu?p=12。

2024-07-02 22:30:41 1123 1

原创 Linux_fileio学习

参考韦东山老师教程:https://www.bilibili.com/video/BV1kk4y117Tu?p=12。

2024-07-02 20:52:20 986

原创 Keil5如何生成反汇编文件

【代码】Keil5如何生成反汇编文件。

2024-01-14 22:19:52 1952

原创 STM32F103_ESP8266基于RTOS移植MQTT

基于STM32F103C8T6单片机FreeRTOS系统ESP8266 WIFI模组移植MQTTClient,成功连接MQTT服务器,实现订阅和发布消息!

2024-01-14 21:58:55 2294 1

原创 环形缓冲区优点及实现

使用环形缓冲区时存放sensor的x和y位置时,读与写互不干扰:读数据根据读指针读取,只有TaskReadPosition任务能够修改读指针位置;写数据使用写指针写数据,只有TaskWritePosition任务能够修改写指针的位置。环形缓冲区所有的push和pop操作都是在一个固定的存储空间内进行,相比队列方式,少掉了对于缓冲区元素所用存储空间的分配、释放。这是环形缓冲区的一个主要优势。环形缓冲区是一种特殊的缓冲区,其读指针和写指针都指向同一个缓冲区,通过移动指针来实现数据的读取和写入。

2024-01-07 00:12:18 2578

原创 keil移植MQTT时GNU语法报错

背景描述:STM32F103C8T6+ESP8266 WIFI模块,使用CubeMX生成简单的FreeRTOS代码,调通UART1和UART3,UART3与WIFI模块连接,UART1作为调试串口。

2024-01-06 16:35:47 1181 1

原创 FreeRTOS互斥量解决优先级反转问题

从测试结果来看:Task1运行后获取信号量,未来得及释放信号量时更高优先级的Task2开始运行,之后Task1没有机会释放信号量,Task3再运行时由于无法获取信号量一直处于阻塞状态,而优先级低于Task3的Task2一直处于运行状态,实现了优先级反转。创建3个Task(Task1、Task2、Task3)、1个互斥量、3个全局变量(cnt1、cnt2、cnt3)初始值为0。3、Task3运行,获取信号量时发现获取不到,使获取了互斥量的Task1继承自己的优先级(高于Task2)1、Task1获取互斥量。

2023-12-25 18:58:53 1579

原创 FreeRTOS学习——同步互斥

正确使用互斥与同步,FreeRTOS提供的方法是安全可靠的,比如队列、信号量、互斥量、任务通知等等,就像“三、优化有缺陷的同步”一样,使用FreeRTOS提供的方法同样可以优化有缺陷的互斥。

2023-12-16 16:02:24 457

原创 内存学习——堆(heap)

/自定义1024字节内存的数组,模拟堆//指向堆数组可用空间的首地址void *my_malloc(int size) //自定义malloc函数//记录开辟空间的首地址//malloc的空间大小//返回开辟空间的首地址void my_free(void *buf) //可用自定义malloc函数,但是无法自定义free函数,后面分析原因/* err */int i;//使用自定义的malloc函数在自定义堆数组中开辟100字节空间for (i = 0;i < 26;i++)

2023-12-09 20:49:25 1924

原创 .bss、.data、.text、.rodata简记

是嵌入式系统和程序设计中常用的内存段名。它们在程序执行时的位置取决于存储器和系统的配置。主要与 RAM 相关。但具体的配置可能会根据系统和编译器的特定设置有所不同。通常位于 Flash 或 ROM 中,而。

2023-12-09 11:42:14 1157

原创 Win10搭建VisualSvn Server

1、服务端:有集成了Subversion和Apache、安装使用非常简单且免费的VisualSvn Server和Subversion。Windows环境使用VisualSvn Server搭建SVN服务器简单好用。2、客户端:有收费的VisualSVN和免费的TortoiseSVN,一般使用TortoiseSVN。

2023-09-02 14:35:18 2591 1

原创 UART中RTS和CTS流控学习总结

流控:数据在两个串口之间进行通讯,常常会出现丢失数据的现象,比如当接收端数据缓冲区满了,而发送端还有数据发送过来,本质原因是速度不匹配,处理能力不匹配。流控就是为了解决这个速度匹配的问题,它的含义非常简单,当接收端处理数据处理不过来时,就向发送端发送不在接收信息,当发送端接收到这个信号之后,就会停止发送,直到收到可以继续发送信号在继续发送。流控的方式有两种,一种是硬件流控,一种是软件流控,一般UART只有RX、TX两个信号,要流控的话只能是软流控;

2023-07-26 19:30:56 6937 4

原创 Ubuntu GitLab服务器git-data中tmp_pack_xxx文件占满磁盘

此服务器上搭建了SVN和GitLab服务器。使用SVN上传文件时报错“SVN Couldn’t perform atomic initialization”,网上很多人说是由于Linux系统的磁盘空间满了所导致的,因此登录到服务器查看磁盘情况。没想到是GitLab导致磁盘撑爆的!使用发现根目录1.1T的空间全部占满(下图是解决问题后的截图,将git-data迁移到了/home目录下)再使用查找根目录下哪个目录占的空间大,发现/var占1.1T逐级查找,最终确定是/var/opt/gitlab中git-dat

2023-05-23 09:37:43 1224 3

原创 ubuntu16.04搭建gitlab

工作中遇到需要在远端服务器搭建gitlab,耗时4天,踩坑无数,特此开个虚拟机再次搭建一次gitlab并记录供以后参考!背景:为保证服务器安全,远端服务器在内网,本地只能通过指定外网IP和端口去访问远端服务器。

2023-03-16 09:57:27 3564

原创 按键及简易跑马灯设计框架

按键及简易跑马灯设计框架

2023-01-13 10:04:34 536

原创 STM32F103在CubeIDE运行FreeRTOS

创建两个TASK,TASK1中实现500ms周期闪烁LED1,TASK2中实现1000ms周期闪烁LED2

2022-11-11 15:48:41 1715

原创 解决CubeIDE调试时函数找不到源

背景:STM32F103C8T6单片机使用esp8266模块连接阿里云,需要先在工程中移植MQTT后才能使用esp8266连接阿里云,程序中用到MQTT库中的很多接口,调试到这些接口的时候发现无法进入这些函数并提示”找不到源“。然后一路点击确定,再次编译调试,此时就可以进入MQTTPacket_read()函数了。可以看到此函数的定义是在”MQTTPacket.c“文件中,也就是MQTT的库中。调试到MQTTPacket_read()函数时,想要进入此函数。发现无法进入此函数,显示”找不到此函数的源“

2022-11-10 19:00:04 809

原创 STM32实现将printf重定向到串口的3种方法

STM32实现将printf重定向到串口的3种方法

2022-10-18 14:59:22 16347 7

原创 VScode多个C文件联合编译配置

VScode配置好C环境后,无法进行多个C文件的联合编译,需要另外对VScode进行配置才能够对多个C文件联合编译

2022-10-14 16:10:15 5728 10

原创 C语言实现秒与时间的互相转换

秒数值与具体时间日期的互相转换,在网上找的例程跑起来总是各种各样的小错误,浪费了大量的时间,因此这次工作之后写了一个秒和时间互相转换的模板,在以后工作中可以简单修改变量直接使用!

2022-10-13 16:49:50 4072 1

原创 头文件及#ifdef踩坑总结

#include"xxx.h"用法,#ifdef用法,以及头文件中#ifdef用法

2022-10-11 19:29:38 2092

原创 S32K3xx低功耗获取唤醒源

在中知道S32K3xx只有两种运行模式:RUN和Standby模式,从Standby模式唤醒后从启动程序开始运行,直接复位了。因此MCU需要知道复位原因,若是唤醒复位需要再判断唤醒源。我参考后,回过头去芯片手册找寻例程为何这样写的原因?学习提升看芯片手册的能力!

2022-10-10 16:27:10 2676 6

原创 S32K3xx电源管理(低功耗)学习

S32K3xx电源管理(低功耗)学习总结

2022-09-20 17:23:34 5164 4

原创 SPI接收数据异常问题总结

SPI接收数据左移一位问题总结

2022-08-31 19:34:13 20293 6

原创 ubuntu学习-shell命令和PATH环境变量简单学习

ubuntu中shell简单学习

2022-08-28 15:36:47 1028

原创 SPI主从模式的学习总结

SPI主从模式学习及经验总结

2022-08-23 13:13:19 6558

开源的字体引擎库 freetype 和字体文件 simsun.ttc

freetype 依赖于 libpng, libpng 又依赖于 zlib,所以我们应该:先编译安装 zlib,再编译安装 libpng,最后编译安装 freetype。 但是,有些工具链里有 zlib, 那就不用编译安装 zlib。资料包内容: 1、freetype-2.10.2.tar.xz 2、freetype-doc-2.10.2.tar.xz 3、libpng-1.6.37.tar.xz 4、zlib-1.2.11.tar.gz 5、simsun.ttc文件,freetype可以直接使用

2024-10-29

基于STM32F103C8T6的双区bootloader代码示例

在微控制器(MCU)中,Bootloader(引导加载程序)是一个非常重要的组成部分,它负责在系统启动时执行一系列初始化操作,并为后续的应用程序提供一个合适的运行环境。 硬件环境:STM32F103C8T6 (Flash 64K RAM 20K) 教程参考:韦东山老师“基于单片机从零写BootLoader” 参考对应配套文章:https://blog.youkuaiyun.com/studyingdda/article/details/143265494?spm=1001.2014.3001.5501

2024-10-27

Keil调试内存中的程序参考源码

基于STM32F103C8T6在Keil调试内存中的程序参考源码,同一个测试程序在Flash上运行时调试和在RAM中运行调试。

2024-10-26

msys-2.0.dll文件

msys-2.0_x86-64版本,解决Windows环境下运行软件时出现“由于找不到 msys-2.0.dll,无法继续执行代码。重新安装程序可能会解决此问题”报错,将msys-2.0.dll文件拷贝到C:\Windows\System32目录下即可

2024-10-21

Typoral小工具免费版

Typoral小工具免费版

2024-09-13

多级目录Makefile示例

本程序的Makefile分为3类: 1. 顶层目录的Makefile 2. 顶层目录的Makefile.build 3. 各级子目录的Makefile 分别介绍每个Makefile和Makefile.build文件,以及说明怎么使用这套Makefile

2024-09-09

《跟我一起学Makefile》

包括: 1、makefile 介绍 2、书写命令 3、使用变量 4、使用条件判断 5、使用函数 6、make 的运行 7、隐含规则 8、使用make更新函数库文件

2024-09-08

Python编写BC260Y TCP数据收发压力测试脚本

验证BC260Y TCP收发数据中带有'\r\n'时的运行稳定性

2024-08-27

该文档(中文版)介绍了MQTT协议的基本组件,组件的作用,以及协议开发的流程等

该文档(中文版)介绍了MQTT协议的基本组件,组件的作用,以及协议开发的流程等

2024-07-18

基于STM32F103C8T6 FreeRTOS ESP8266移植kawaii mqttclient示例程序

基于STM32F103C8T6 FreeRTOS ESP8266移植kwaii mqttclient示例程序 UART1作为调试打印串口,UART3与ESP8266连接用于发送AT命令控制ESP8266模块 使用CubeMX初始化UART1、UART3和FreeRTOS,基于此工程移植杰杰的kawaii mqttclient源码,该代码是移植完毕后能够正常连接MQTT服务器订阅主题并周期向订阅的主题发送消息,MCU能够收到自己发送的消息,并接收到其他客户端向此主题发送的消息。 注:使用时需要修改WIFI名和密码、修改MQTT服务器端口号和地址。

2024-01-14

专业的Windows软件卸载小工具geek免安装版

geek全称“ Geek Uninstaller”,是一款专业的 Windows 软件卸载工具,只有 6M 大小,非常轻巧方便。它可以卸载程序并查找以前卸载的应用程序在注册表中留下的点点滴滴,彻底地卸载干净,还用户一个干净整洁的电脑。Geek有免费绿色版和专业版,免费版实现基础的功能,专业版实现更多更强大的功能。

2024-01-08

Everything工具直装版

Everything是一款基于名称快速定位文件和文件夹的搜索工具 Everything是澳大利亚人David Carpenter开发的免费文件检索工具,从问世以来,因其占用内存小,搜索迅捷,获得了太多用户的追捧,是办公职场打工人必备的效率利器。 它通过直接访问NTFS磁盘MTF表的方式给我们提供了极快的搜索速度,文件搜索效率很高。 一个刚安装完的Windows XP SP2系统(约20,000份文件),只需要一秒钟,索引一百万份文件只需要一分钟。

2024-01-08

DUmeter7.24免费版

DUmeter7.24免费版,无需破解!

2023-12-25

可以运行Lua脚本的串口工具“llcom”

llcom支持运行Lua脚本、在线编写Lua脚本、加载Lua脚本、串口流控制(DTR、CTS、RTS、DCD)等,功能非常强大

2023-07-21

gitlab包(2021-06-01)

在ubuntu16.04部署gitlab时,因为ubuntu版本最好能和gitlab版本对应,对应ubuntu16.04的gitlab包(2021-06-01)

2023-03-16

STM32C8T6基于keil5,实现printf重定向到串口1的3种方法示例

基于STM32F103C8T6在keil5上,实现将printf重定向到串口的3种方法。编译后连接USART1即可直接使用!

2022-10-18

C语言实现秒与时间的互相转换

一个秒和时间互相转换的模板,可以简单修改变量直接使用! 文件中包含VScode配置C环境文件,需根据自己电脑进行更改。更改方法参考:https://blog.youkuaiyun.com/studyingdda/article/details/126184241?spm=1001.2014.3001.5502

2022-10-13

《S32K3xx Reference Manual》和《S32K3xx Data Sheet》

《S32K3xx Reference Manual》 NXP Semiconductors Document identifier: S32K3XXRM Reference Manual Rev. 3, 10/2021 《S32K3xx Data Sheet》 Rev. 3 — 10/2021 Data Sheet: Technical Data

2022-10-10

S32K344_FastWakeup_RTD200(低功耗电源管理demo)

软件平台:S32 Design Studio for S32 Platform Version:3.4 SDK Version:PlatformSDK_S32K3_2022_03 S32K344的电源管理(FastWakeup)例程,主要内容:不同条件进入低功耗(Standby模式)、通过不同唤醒源(包含内部唤醒源和外部唤醒源)退出低功耗(Standby模式)、获取唤醒源信息

2022-10-10

S32K344-FastWakeup-RTD200(低功耗电源管理demo)

软件平台:S32 Design Studio for S32 Platform Version:3.4 SDK Version:PlatformSDK_S32K3_2022_03 S32K344的电源管理(FastWakeup)例程,主要内容:不同条件进入低功耗(Standby模式)、通过不同唤醒源(包含内部唤醒源和外部唤醒源)退出低功耗(Standby模式)、获取唤醒源信息

2022-10-10

VScode安装包(含C/C++环境配置文件)

VScode安装包(含C/C++环境配置文件)

2022-09-09

STM32F103C8T6 SPI2主从模式例程代码

开发平台:Cube IDE 1.8.0 芯片型号:STM32F103C8T6 环境搭建要求:2块STM32F103C8T6单片机、2个串口转USB模块、4跟杜邦线 描述:将1号单片机下载SPI主模式程序,2号单片机下载SPI从模式程序,将两块单片机的串口1分别连接串口转USB连接电脑,用4根杜邦线将两块单片机的SPI2四根线连接。1号2号单片机通过SPI传输数据,再通过各自串口1将数据打印出来。 特点:配置单片机作为SPI主机是很常用的,但是将单片机作为SPI从机的配置以及数据收发就不容易了。

2022-09-09

空空如也

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

TA关注的人

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