<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[小白橘颂的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Jokerblank</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Jokerblank]]></copyright><item><title><![CDATA[【C语言】基础概念梳理（一）]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/159089094</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/159089094</guid><author>Jokerblank</author><pubDate>Sun, 22 Mar 2026 18:28:34 +0800</pubDate><description><![CDATA[摘要 本文从实践角度重新探讨C语言编程，将C语言项目比作古代皇朝治理，强调代码编写如同圣旨般需要精确简洁。文章详细介绍了C语言开发环境（编辑工具与编译器）、程序运行机制（内存分配与执行流程）以及变量和常量的关键概念。特别指出变量管理的三要素（类型、命名、值）和常量的重要性（提高可读性与维护性），并提供了标识符命名规范和常量分类示例。作者结合工作经验，强调理论联系实际的重要性，为C语言学习提供了独特的实践视角。]]></description><category></category></item><item><title><![CDATA[Linux驱动（六）：Linux2.6驱动编写之平台设备总线]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/141935022</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/141935022</guid><author>Jokerblank</author><pubDate>Tue, 10 Sep 2024 16:57:11 +0800</pubDate><description><![CDATA[本文主要介绍了一下两种驱动编写方法：1.比较原始的设备端+驱动端编写方法。2.效率较高的设备树+驱动端编写方法。最后，使用LED闪烁实战验证了一下。]]></description><category></category></item><item><title><![CDATA[Linux驱动（五）：Linux2.6驱动编写之设备树]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/141899828</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/141899828</guid><author>Jokerblank</author><pubDate>Wed, 04 Sep 2024 19:59:56 +0800</pubDate><description><![CDATA[本文主要讲解了一下设备树的概念，编写语法规则，API函数和使用流程，最后使用LED灯闪烁，实战验证了一下。]]></description><category></category></item><item><title><![CDATA[Linux驱动（四）：Linux2.6字符设备驱动及GPIO子系统]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/141867100</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/141867100</guid><author>Jokerblank</author><pubDate>Tue, 03 Sep 2024 20:05:07 +0800</pubDate><description><![CDATA[主要内容就是搞了个Linux2.6字符设备驱动的编码框架，然后简单使用驱动代码编写了GPIO子系统，配置了一下两个LED灯io口，最后使用应用程编写代码调用底层驱动的API接口，使两个LED灯闪烁。]]></description><category></category></item><item><title><![CDATA[Linux驱动（三）：字符设备驱动之杂项]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/141824320</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/141824320</guid><author>Jokerblank</author><pubDate>Mon, 02 Sep 2024 19:53:47 +0800</pubDate><description><![CDATA[内核和网络设备驱动程序间的通信，完全不同于内核和字符以及块驱动程序之间的通信，内核调用一套和数据包相关的函数socket，也叫套接字。，除了块设备和网络设备，其他设备基本都是字符设备，我们常常写的驱动代码，也往往是字符设备。用于处理与内核不直接相关的设备或功能的驱动程序，适用于各种简单或虚拟设备的实现，并为开发者提供了一种简便的方式来处理字符设备。中都会被抽象成文件，所有对硬件设备的操作到应用层中，也都会被抽象成文件的操作，设备文件通常会被放在/dev目录下。每一个字符设备在应用层的抽象文件也被叫做。]]></description><category></category></item><item><title><![CDATA[Linux驱动（二）：模块化编程的基本操作]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/141775994</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/141775994</guid><author>Jokerblank</author><pubDate>Sun, 01 Sep 2024 12:08:35 +0800</pubDate><description><![CDATA[没多少东西，就是最基础的一些Linux驱动编写操作。]]></description><category></category></item><item><title><![CDATA[Linux驱动（一）：环境搭建及介绍]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/141604383</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/141604383</guid><author>Jokerblank</author><pubDate>Fri, 30 Aug 2024 17:56:08 +0800</pubDate><description><![CDATA[自用自用自用，晚上睡觉前复盘用。当然，也欢迎大家参考指正。积极认错，坚决不该（bushi）。uboot 版本 — 2017.09  kernel 版本 —  linux 5.10.110。]]></description><category></category></item><item><title><![CDATA[STM32第二十四课：IAP离线系统升级]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/140910188</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/140910188</guid><author>Jokerblank</author><pubDate>Mon, 26 Aug 2024 19:46:37 +0800</pubDate><description><![CDATA[写入标志位4.IAP和OTA的区别原理是一样的，无非是升级文件的。]]></description><category></category></item><item><title><![CDATA[LCD屏8080接口和FSMC详解]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/141434486</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/141434486</guid><author>Jokerblank</author><pubDate>Fri, 23 Aug 2024 12:32:08 +0800</pubDate><description><![CDATA[自用：暂时我的理解就这么多，以后经验多了再补充。]]></description><category></category></item><item><title><![CDATA[STM32CubeMX创建新工程]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/141415905</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/141415905</guid><author>Jokerblank</author><pubDate>Thu, 22 Aug 2024 17:35:39 +0800</pubDate><description><![CDATA[自用：如何使用STM32CubeMX创建一个新工程，防止忘记。]]></description><category></category></item><item><title><![CDATA[6自由度智能识别机械臂项目总结]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/141354277</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/141354277</guid><author>Jokerblank</author><pubDate>Wed, 21 Aug 2024 10:50:52 +0800</pubDate><description><![CDATA[最近做了一个机械臂的项目，主要是给学校教学使用的。本文主要记录一下本次项目的大致历程希望对后来者有所帮助。]]></description><category></category></item><item><title><![CDATA[喵喵蓝牙热敏打印机（下）]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/141110700</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/141110700</guid><author>Jokerblank</author><pubDate>Mon, 12 Aug 2024 10:40:11 +0800</pubDate><description><![CDATA[1.能够模拟作业帮旗下喵喵机的通信协议，通过手机app喵喵机（V6.2.80）进行蓝牙连接打印。
2.能够通过图片取模打印图片。
3.打印机进行打印时，LED灯快闪提示用户。打印完LED灯1s闪一次，提示用户打印机进入待机状态。
4.能够进行缺纸检测，缺纸时会进行电机微动提示用户。
5.能够进行电量检测并将结果发送给app端，能进行打印头温度检测，过热时自动停止加热并闪灯+电机微动。
6.能够进行按键出纸，按下按键打印机能够自动出纸。]]></description><category></category></item><item><title><![CDATA[喵喵蓝牙热敏打印机（上）]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/141060629</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/141060629</guid><author>Jokerblank</author><pubDate>Sun, 11 Aug 2024 19:59:23 +0800</pubDate><description><![CDATA[3.配置引脚模式，引脚5连接按键（BUTTON），为了能够检测该引脚的高低电平，将该引脚配置为输入模式。引脚18连接LED灯，为了能够输出高电平控制LED灯的亮灭，将该引脚配置为输出模式。2.定义LED_ON()为digitalWrite(LED, LOW)，代表此时灯亮，定义LED_OFF()为digitalWrite(LED, HIGH)，代表此时灯灭，方便后续操作。SPI 时钟引脚 (SCK)、SPI 从输入引脚 (MISO)、SPI 主输出引脚 (MOSI)、和 SPI 片选引脚 (SS)。]]></description><category></category></item><item><title><![CDATA[STM32第二十三课：GUI-Guider安装使用及项目移植(7.11版本)]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/140750596</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/140750596</guid><author>Jokerblank</author><pubDate>Sun, 28 Jul 2024 17:21:25 +0800</pubDate><description><![CDATA[GUI-Guider就是一个LVGL界面辅助设计工具，通过GUI-Guider我们可以快速创建多个屏幕，导入多个字体，图片，图标等。]]></description><category></category></item><item><title><![CDATA[STM32第二十二课：LVGL的移植和屏幕创建(7.11版本)]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/140720643</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/140720643</guid><author>Jokerblank</author><pubDate>Sun, 28 Jul 2024 11:51:45 +0800</pubDate><description><![CDATA[基于STM32和FreeRTOS系统的LVGL的移植，LVGL任务的创建和初始化，按键控制屏幕切换。]]></description><category></category></item><item><title><![CDATA[STM32第二十一课：FreeRTOS事件组&软件定时器]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/140445532</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/140445532</guid><author>Jokerblank</author><pubDate>Tue, 16 Jul 2024 19:07:00 +0800</pubDate><description><![CDATA[如果 configTICK_TYPE_WIDTH_IN_BITS 设置为 TICK_TYPE_WIDTH_16_BITS，则事件组内实现的位数（或标志数）为 8；如果 configTICK_TYPE_WIDTH_IN_BITS 设置为 TICK_TYPE_WIDTH_32_BITS，则为 24；如果 configTICK_TYPE_WIDTH_IN_BITS 设置为 TICK_TYPE_WIDTH_64_BITS，则为 56。如果 configUSE_16_BIT_TICKS 设置为 0，则为 24。]]></description><category></category></item><item><title><![CDATA[STM32第二十课：FreeRTOS任务管理和信号量]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/140418120</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/140418120</guid><author>Jokerblank</author><pubDate>Mon, 15 Jul 2024 10:26:04 +0800</pubDate><description><![CDATA[2.任务被执行时就会变为运行态时，该任务就会从就绪链表删除，若此时执行到任务中的vTaskDelay等函数时，该任务就会被挪到阻塞链表中。调度器此时会去执行其他任务。若解除任务的优先级很高，那么此时该任务会直接打断cpu正在执行的任务，抢占位置去执行自己。本质上就是一个钩子函数，在任务上下文切换的时候做检测，具有一定的滞后性，需要在任务发生上下文切换时才会进行，任务堆栈溢出时并不能马上检测到问题。二值信号量也一样，谁拥有谁执行，比如任务B需要获得信号量才能执行，那么他就要等待A给他一个信号量然后再去执行。]]></description><category></category></item><item><title><![CDATA[STM32第十九课：FreeRTOS移植和使用]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/140360095</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/140360095</guid><author>Jokerblank</author><pubDate>Sun, 14 Jul 2024 15:19:11 +0800</pubDate><description><![CDATA[其中，FreeRTOSConfig.h 是直接从 demo 文件夹下面拷贝过来的，该头文件对裁剪整个FreeRTOS 所需的功能的宏均做了定义，有些宏定义被使能，有些宏定义被失能，一开始我们只需要配置最简单的功能即可。如果用户想要实现多个任务并行的效果，可以通过加入FreeRtos（嵌入式实时操作系统），操作系统可以让STM32实现任务的快速切换，从而给人一种。和裸机操作不同，操作系统中执行的是一个一个任务块，通过任务调度器（使用相关的调度算法）来决定当前时刻要执行哪个任务。]]></description><category></category></item><item><title><![CDATA[STM32第十八课：SPI&Flash]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/140332554</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/140332554</guid><author>Jokerblank</author><pubDate>Thu, 11 Jul 2024 18:15:06 +0800</pubDate><description><![CDATA[一般能够支持SPI模式0的设备也支持SPI模式3，支持模式1的设备也支持模式2。一般的传输数据时候采用的就是8位进行，高位先传还是低位先传，传输的速度。3.循环往FLash发送数据（无所谓什么数据，只是为了置换出FLash状态寄存器的值），判断寄存器的第0位BUSY是否为0，为0时就代表Flash为空闲状态，可以执行其他操作。：判断接收缓冲器非空(RXNE)是否为0，为0表示接受缓冲区为空，没数据，此时持续等待数据到来。CPHA：时钟相位，	CPHA=0时，在时钟的第一个边沿进行采样，第二个边沿进行输出。]]></description><category></category></item><item><title><![CDATA[STM32第十七课：连接云平台进行数据传输]]></title><link>https://blog.youkuaiyun.com/Jokerblank/article/details/140211726</link><guid>https://blog.youkuaiyun.com/Jokerblank/article/details/140211726</guid><author>Jokerblank</author><pubDate>Sun, 07 Jul 2024 10:51:21 +0800</pubDate><description><![CDATA[1.当代码将报文发送给串口3时，由于串口3连接的是wifi模块，此时就相当于将报文通过wifi模块传送到云端。2.将数据传输到串口1时，由于串口1连接的是电脑上，所以相当于将数据打印。]]></description><category></category></item></channel></rss>