- 博客(51)
- 资源 (1)
- 收藏
- 关注

原创 一张图+一个Box+一个TextArea带你DIY不一样的数字键盘
1、简介: 这篇文章主要介绍如何使用一个image控件、一个Box控件、一个TextArea控件快速打造高逼格的数字键盘。首先我们来回顾一下数字键盘的制作发展史哈!(其实是菜哥制作数字键盘的发展史哈!)1.1、键盘制作方式的进化论 最开始的时候,我们使用就最简单的思路来快速实现数字键盘,那就是直接“堆控件”,这里使用的时按钮控件,需要制作3*3的数字键盘,那你就堆9个按钮,要是4*4的数字键盘,你就堆16个按键,然后你为每一个数字按键绑定监听事件,并...
2021-03-10 22:28:14
2713
11

原创 ART-PI开发板连接玫瑰科技5寸LCD屏幕
玩转嵌入式GUI,首先你要有一个开发板,其次你的板子要搭配一个LCD屏幕,这样你才能玩的转啊!该文章介绍了如何使用RT-Studio创建TouchGFX工程,其中加入了RT-thread操作系统,以及使用了许多优秀大佬制作的软件包!我采用的LCD屏幕是从某宝购买的玫瑰科技5寸屏,显示分辨率是800*480的。
2021-02-22 00:27:22
3312
5

原创 TouchGFX利用PixelDataWidget绘制曲线(二)
就是菜啊! 在上一篇文章中已经讲过如何利用PixelDataWidget控件绘制简单的函数曲线啦,但是遗留了一个小bug,不知大家是否发现了呢?就是添加PixelDataWidget控件是在ScreenViewBase中添加加的呦,一般情况下,俺们是不动这些viewbase文件的呀!毕竟人家是可读的属性啊!当你在viewbase文件中添加了代码,等你回到Touchgfx designer中运行一下,你就会失了智,想要砸电脑,(毕竟辛辛苦苦写的代码,一键运行,变成了一键清除了...
2020-07-28 01:06:13
2049

原创 Touchgfx利用PixelDataWidget控件制作简易的函数图像
就是菜啊! 该文章主要介绍的是利用touchgfx提供的PixelDataWidget控件来制作简易的函数图像开发环境:touchgfx designer13.0 、visual studio2019 、keil5 -5.27UI界面设计:打开Touchgfx designer,创建一个screen,添加一个box充当背景,添加一张图片,充当坐标系的背景图片,再添加三个按钮,分别是控制显示Sin(x)、SQR(方波)、Cos(x)函数图像,具体配置入下图所示:在...
2020-07-25 14:35:27
2188
原创 stm32F103RCT6+ModBus之RTU
线圈(地址范围0-63):默认全部为0离散输入(地址范围0-63):默认全部为0保持寄存器(地址范围0-31):寄存器0 = 0x1234寄存器1 = 0x5678其余默认为0输入寄存器(地址范围0-31):寄存器0 = 0xABCD寄存器1 = 0xEF01其余默认为0可以根据实际需求在modbus_rtu.c的Modbus_Init函数中修改这些默认值。
2025-03-13 19:52:47
596
原创 FreeRTOS系列---程序正常,但任务无法创建
代码中其他任务使用void *pvParameters,而UART_ReceiveTask使用void *argument。你使用了256字节的栈空间,这可能比其他任务大,当FreeRTOS的堆内存配置不足时,任务创建会失败。如果你的UART_ReceiveTask函数包含较复杂的本地变量或调用较深,256字节的栈可能不够用。configMINIMAL_STACK_SIZE可能设置得较小,而UART接收任务需要更多栈空间。实际创建了四个任务,但是在打印任务列表的时候,第四个任务始终没有出现;
2025-03-04 22:50:29
357
原创 FreeRTOS系列---内存管理详解
理解其底层机制(如heap_4的块合并算法)对于优化嵌入式系统至关重要。(heap_1 ~ heap_5),开发者可根据项目需求选择或自定义。计算实际需要大小: xWantedSize = xSize + heapSTRUCT_SIZE。的深度解析,结合源码、框架图及实际应用示例,帮助理解其底层机制。遍历空闲链表, 寻找首个 >= xWantedSize的块。获取块头地址: puc -= heapSTRUCT_SIZE。计算块头地址puc -= heapSTRUCT_SIZE。调用vPortFree。
2025-02-27 18:27:55
1077
原创 裸机系统与RTOS如何选择
根据项目复杂度、实时性需求、硬件资源综合选择。对于现代物联网设备(如ESP32、STM32F4),RTOS已成为主流选择,因其能有效管理Wi-Fi/BLE协议栈、传感器融合等复杂逻辑。的核心区别、应用场景对比及RTOS使用示例的详细解析。
2025-02-25 20:43:05
676
原创 FreeRTOS系列---事件组详解
四个维度,结合 FreeRTOS v10.4.3 源码及流程图,详细讲解事件组(Event Group)的实现原理和应用。FreeRTOS 事件组通过。在实际项目中,事件组常用于。等需要多条件协作的场景。
2025-02-25 20:34:14
943
原创 FreeRTOS系列---信号量详解
FreeRTOS 的信号量(包括二值信号量、计数信号量、互斥量)均基于队列实现,但在队列基础上做了特化处理。理解信号量的队列本质后,可以灵活选择同步机制,并在资源受限的嵌入式系统中高效管理任务协作。理解 FreeRTOS 的信号量(Semaphore)实现需要从。FreeRTOS 信号量的实现本质是。FreeRTOS 的信号量是通过。(在获取互斥量时触发)
2025-02-25 20:25:18
781
原创 FreeRTOS系列---队列详解
理解 FreeRTOS 的队列(Queue)实现需要从数据结构、操作接口和底层机制三个层面分析。队列是 FreeRTOS 中最重要的通信机制之一,支持任务间、任务与中断间的数据传递。队列的设计体现了 RTOS 的典型特征:高效的数据传递、确定性的阻塞唤醒机制、对中断上下文的特殊处理。理解其源码实现有助于在资源受限的嵌入式系统中合理使用队列,并解决复杂的同步问题。FreeRTOS 的队列实现核心是。
2025-02-25 20:20:15
1127
原创 FreeRTOS系列---任务切换详解
理解 FreeRTOS 的任务切换原理需要深入其调度器(Scheduler)和硬件移植层(Port Layer)的实现。结合源码调试工具(如 OpenOCD 或 J-Link),可以更直观地观察切换过程。PendSV 是低优先级异常,确保所有中断处理完成后再切换任务。需要精确控制寄存器的保存/恢复顺序,且必须与硬件中断机制配合。该全局指针始终指向当前运行任务的 TCB,切换时会更新。:通过 PendSV 异常延迟切换请求,确保原子性。:通过任务栈实现上下文的无缝保存与恢复。FreeRTOS 的任务切换是。
2025-02-24 19:12:31
782
原创 FreeRTOS系列---软件定时器详解
FreeRTOS 的软件定时器(Software Timer)实现基于任务调度和队列机制,其核心设计围绕 守护任务(Timer Daemon Task) 和 命令队列(Timer Command Queue) 展开
2025-02-23 15:19:25
558
原创 函数指针和指针函数,傻傻分不清~
在嵌入式开发中,函数指针是实现动态行为的关键工具(如中断处理、状态机),而指针函数是资源管理的基础手段(如内存分配、硬件访问)。理解二者的差异需要结合具体硬件架构(如哈佛架构与冯诺依曼架构的区别)和编译器的具体实现。
2025-02-21 21:15:19
453
原创 使用RT-Thread Studio时遇到arm-none-eabi-g++: error: CreateProcess: No such file or directory问题,如何解决
首先,可以看看是否是资源文件不存在,检查完确认无误后,发现不是资源文件不存在,而是windows系统对于命令的长度有所限制,当自己项目中链接的文件数目过多时,就会出现命令超长,就会出现下面的问题。解决方法:解除Windows命令行长度的限制,在rt-thread studio中有这个功能选项,如下图所示:点击项目,就能看见解除windows命令行的长度限制,再次编译程序就会通过!...
2022-04-14 13:42:11
2262
原创 TouchGFX软件包下载
4.18版本下载4.18版本http://链接:https://pan.baidu.com/s/1mTHN4ooD201EqFV7iQ7Wsg 提取码:0t7h --来自百度网盘超级会员V6的分享更新内容新增加了视频控件,赶紧上手玩一玩吧!
2021-10-22 09:19:32
904
原创 rust之结构体应用demo
1、结构体的简单应用 应用程序主要用到了rust的结构体、枚举以及函数和match关键字;示例基于计算长方形的面积展开的,分为长方形创建,计算长方形面积,判断面积值是否合理等功能,下面我们就来看看代码实现。2、结构体测试程序 首先我们来看看长方形结构体的定义,具体定义如下图所示:struct Rect { width: i32, //宽 height: i32, //高}枚举类型主要是来表示长方形...
2021-09-01 12:04:00
661
原创 rtthread之UDP方式传输数据超时接收
1、简介UDPUDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。UDP是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成[4]...
2021-08-29 23:09:08
1680
原创 rust之结构体应用
目录1、结构体简介2、rust中的结构体2.1、结构体创建2.2、struct成员的调用2.3、修改rust结构体成员变量值2.4 结构体类型作为函数返回值3、总结1、结构体简介 结构体是一种自定义的数据类型,它允许我们命名多个相关的值并将他们组成一个有机的结合体。学过C语言的小伙伴们应该对结构体很熟悉了吧!当然,要是没学过那也不要紧;学过面向对象的语言也是可以的;在面向对象的语言中;我们可以把“对象”的属性看做成结构体;这样就容易理解啦!2、rus...
2021-08-24 22:48:42
1175
原创 与Rust的第一次见面会
目录1、引言 2、Rust的安装3、使用vscode进行rust开发4、rust的编译与运行4.1 rust的编译命令4.2 rust的运行命令5、demo的运行结果1、引言 大家好!我是菜哥!今天呢,我想记录一下我的Rust学习之旅,首先呢,咱们先来介绍一下Rust;下面的介绍来自《极客时间》的陈天大佬:Rust 集表达力、高性能、内存安全于一身,在 1.0 版本发布后不久,口碑就一路高飞猛进,从 16 年起,连续 6 年成为 St...
2021-08-19 23:27:41
582
原创 stm32在进行调试时;进入 LDR R0, =SystemInit卡死
目录1、硬件环境:2、问题疑惑:3、问题分析1、硬件环境:STM32H750VB板子;仿真器DAP2、问题疑惑: 在项目调试的时候遇到这个问题;就是加了一条语句;结果代码就执行不了;于是开启仿真调试之旅,但是仿真时直接进入下图所示:3、问题分析 记得在上次遇到类似的问题;是在使用H750的串口打印输出时;程序直接卡死;并未运行;解决方案是由于“微库”没有勾选;于是试了一下;然后就这样解决了;有的小伙伴说是由于开启了硬件浮点计算导致的;但是我关闭了...
2021-08-14 14:48:27
10635
7
原创 嵌入式设备上如何构建自己的数据库
大家来看看!这样的执行方案可行不?使用文件系统在嵌入式设备上面构建自己的数据库系统;功能不需要很多,只需要拥有数据库的基本操作即可;即:增删改查;那么下面的设计方案只是暂时性的!后面我会把实际的效果展示出来!...
2021-08-12 15:25:09
262
原创 ART_PI与Touchgfx在原子7寸屏上相会
目录1、实验平台1.1、软件环境1.2、硬件环境2、实验过程2.1、创建ART_PI项目工程2.2、屏幕参数修改2.3、触摸驱动添加3、总结1、实验平台1.1、软件环境RT_thread Studio、Touchgfx Designer5.15、串口调试助手1.2、硬件环境ART_PI开发板、正点原子7寸屏v13(分辨率800*480)2、实验过程2.1、创建ART_PI项目工程 创建项目工程,相必大家都很熟悉吧,就是创建一个R...
2021-07-21 00:50:05
607
1
原创 Touchgfx之如何打开和关闭键盘控件
1、实验环境1.1 软件环境Touchgfx 15.0 visual studio 20191.2 硬件环境无2
2021-06-07 14:13:52
1294
原创 RT-Thread中关于浮点数如何使用rt_kprintf打印输出
1、实验环境1.1 软件环境RT-Thread Studio1.2 硬件环境ART-PI2、实验guo
2021-06-04 23:19:38
3787
2
原创 c语言之零长度数组
今天菜哥在看王利涛老师编写的《嵌入式C语言自我修养--从芯片、编译到操作系统》这本书中提到了“零长度数组”的这个概念,觉得很新奇哇!于是通读了一下该章节,也深入思考了一下,发觉这是个很神奇的东东哇!所以今天我们就来唠唠“零长度数组”的故事吧...
2021-05-27 01:23:29
631
2
原创 stm32H750之配置串口重定向到printf
目录一、实验环境1.1、软件环境1.2、硬件环境二、使用CUBEMX配置串口2.1、配置串口uart42.2、时钟配置2.3、串口输出的重定向,即使能printf函数三、总结一、实验环境1.1、软件环境 MDK5.30、CUBEMX6.1、猫猫串口助手1.2、硬件环境 自制STM32H750VBT开发板(师傅所制)、正点原子的DAP二、使用CUBEMX配置串口2.1、配置串口uart4特别需要注意的地方是:红...
2021-05-26 14:05:40
3074
11
原创 RT-thread 之 你的RAM被写穿了
目录一、引言:二、实验环境2.1、软件环境2.2、硬件环境三、实验内容简介3.1 H750内存分布3.2 问题实操四、总结一、引言: 今天菜哥在搞项目的时候遇到了一个很神奇的问题,东问西问也没找到好的解决方案(实则是自己太菜了),后面听说是“内存被写穿了”?菜哥觉得这很神奇哇,内存还能被写穿了呢?进过一番折腾,项目也跑起来了,不过菜哥想在这里为大家提提“内存被写穿了”是怎么一会事情!(其实,最终还是由于自己的失误,造成了内存被写穿了)二、实验环境2...
2021-05-24 18:51:02
1006
2
原创 c语言中如何实现字符串转整形
目录1、字符串分割2、字符串转整型3、实际应用4、总结1、字符串分割 在工作中不知大家是否遇到过需要将字符串转换成整型呢?当然这里的字符串是这样的哦,“12,23,34,45,32,12,3,43,43,54,65,65”;这时候你可能就需要想,我是不是要自己造轮子写函数哇,嘻嘻,才哥在这里告诉你,不用自己造轮子哦,在标准库中是有提供的;首先我们来说一下具体的操作思路,我们先将这个字符串以逗号座位分隔符进行切,然后使用字符串转整型函数进行转换;这里的字符串...
2021-05-04 16:16:46
6710
2
原创 touchgfx自制英文输入键盘+数字键盘
好久没有写文章了哇!最近比较忙,没时间写啦,这周末菜哥给你们更新一下关于上一篇博文中一些细节的东东;最近也有用到一个box + 一张背景就能做出来一个高大上的keyboard!敬请期待吧!附上一张实验效果图;仔细看看效果还是蛮不错的哇!下面我们再看看下载到开发板上面的效果图哇!嘻嘻,感觉还是可以的哈!(不喜勿喷哈!菜哥是一个又菜又爱玩的博主,加油!)...
2021-04-06 22:23:25
1516
3
原创 Error: Could not load file ‘..\OBJ\Template.axf‘. Debugger aborted !
将该选项勾选上,即可使用调试器调试程序
2021-03-22 14:30:51
7773
5
原创 函数指针与单链表的爱恨情仇(一)
1、单链表的构造 这里呢,主要是简单的实现一下单链表的基本操作方法,创建与遍历,其目的是想和函数指针一起使用,看看会有什么不同的地方!我们简单的看一下单链表节点的定义吧!typedef int DataType; //数据类型typedef struct Node{ DataType data; //数据域 struct Node *next; //指针域}Node;typedef struct Node *Li...
2021-03-04 02:54:40
227
3
原创 单链表之面试常考的几道题
文章目录1、题目详解2、暴力解法3、快慢指针法4、总结1、题目详解 该题目在leetcode上面有,题号是链表的19题,(题目链接)题目的描述我就用leetcode上面的来说啦!大家请看下面这张图2、暴力解法 其实解决这道题目呢,你可以来个暴力法哈!首先,你可以先遍历一遍链表,求得链表的长度啦!既然链表的长度你都知道了,那么接下来那不就是和玩没啥两样嘛!至于实现过程这里我就不写了,借鉴leetcode官方的解题答案,我们一起看看哈!int ge...
2021-02-28 10:45:58
144
原创 C语言之双链表的基本操作
本文主要介绍一下用c语言如何实现双向链表的一些基本操作,主要涉及到双向链表的创建、在指定位置插入一个数据节点、在指定位置删除一个数据节点、在链表中查找某一特定元素、以及遍历整个双向链表,最后也有makefile文件供大家学习和参考
2021-02-28 05:38:58
1600
原创 git的学习使用之旅
目录1、安装git环境2、测试git3、git的基本使用总结1、安装git环境电脑配置:mac osgit的官网网址:https://git-scm.com选择合适自己机器的选项,我这里选择Mac OS版本的,下载下来之后,一路next即可2、测试git测试Git的版本:控制台中输入以下命令git --version创建用户git config --global user.name "username"git config -...
2021-02-26 01:04:26
135
1
原创 C语言之实现单链表的基本操作
目录1、链表节点的定义2、链表基操Function的声明3、链表基操Function的定义与实现3.1 单链表的创建(头插法)3.2单链表的创建(尾插法)咱们再来看看尾插法是怎么操作的呢?尾插法啊!就是将新节点插入到单链表的尾巴处,那么?我们如何得知哪里是单链表的尾巴处呢?这里我们放置一个“小兵”,这个小兵啥都不干,就是帮咱们记录“单链表的尾巴”在哪里,找到尾巴了,把新节点插入到尾巴后面,此时咱们的小兵指向的不在是单链表的尾巴了,我们需要让小兵往后挪一个节点(更新小兵的指向...
2021-02-24 00:36:45
1832
2
原创 touchgfx之Data_Graph控件
就是菜啊!前言 既然您点进来了,想必对touchgfx或多或少都有一定的了解!在实际应用中可能会有将数据显示在LCD上面的需求,不单是显示这么简单,而是要求显示的更加直观、简洁明了;让大家一目了然数据的变化趋势,这时候数据表图必然是您的不二选择。数据表图可以将数据用折线图直观的显示出来,能够清晰明了...
2021-01-20 17:23:39
2729
7
Road Anomaly Detection Through Deep Learning Approaches
2023-12-15
VID_20200723_235152.mp4
2020-07-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人