<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[hsjdixk的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/hsjdixk</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hsjdixk]]></copyright><item><title><![CDATA[数据结构（一）]]></title><link>https://blog.youkuaiyun.com/hsjdixk/article/details/151155538</link><guid>https://blog.youkuaiyun.com/hsjdixk/article/details/151155538</guid><author>hsjdixk</author><pubDate>Wed, 03 Sep 2025 20:00:34 +0800</pubDate><description><![CDATA[它的核心特点是 “操作受限”—— 仅允许在栈顶进行数据的增删，这种限制让栈在特定场景中效率极高，比如函数调用栈（存储函数执行上下文，确保函数返回后能回到上一层调用）、表达式求值（处理括号匹配、运算符优先级）、undo/redo 操作（记录操作历史，反向恢复）等场景，都依赖栈的 LIFO 特性实现。元素的插入（称为 “入队” 或 “Enqueue”）只能在队尾进行，元素的删除（称为 “出队” 或 “Dequeue”）只能在队头进行，其他位置的元素无法直接操作。），表示链表的结束。链表的最后一个节点指向。]]></description><category></category></item><item><title><![CDATA[备赛蓝桥杯-嵌入式开发个人赛---01 STM32G431R8T6板配置]]></title><link>https://blog.youkuaiyun.com/hsjdixk/article/details/145558216</link><guid>https://blog.youkuaiyun.com/hsjdixk/article/details/145558216</guid><author>hsjdixk</author><pubDate>Mon, 10 Feb 2025 22:04:39 +0800</pubDate><description><![CDATA[这款芯片是基于Arm Cortex-M4内核，支持FPU，主频可达170MHz，具有丰富的定时器、ADC、DAC和通信接口。软件配置通常包括开发环境、库、驱动、时钟配置、外设初始化等。是一家提供嵌入式软件开发工具的公司，其产品主要用于开发基于ARM Cortex-M内核的微控制器（如STM32、NXP、TI等）。点击install安装，没有注册登录的需要自行使用邮箱登录，如果登录不上可以多尝试几次，第一次登录普遍耗时较长（安装成功之后显示为绿色），它是一个集成开发环境（IDE），广泛用于嵌入式系统的开发。]]></description><category></category></item><item><title><![CDATA[IMX6ULL 操作分享 ------ I2C篇]]></title><link>https://blog.youkuaiyun.com/hsjdixk/article/details/145481380</link><guid>https://blog.youkuaiyun.com/hsjdixk/article/details/145481380</guid><author>hsjdixk</author><pubDate>Fri, 07 Feb 2025 10:10:15 +0800</pubDate><description><![CDATA[传输数据的设备间是简单的主/从关系，每个器件都可以作为主机也可以作为从机（但同一时刻只能有一个主机），总线上的器件增加和删除不影响其他器件正常工作；- 应答机制：数据传输时，每发送完一个字节数据，接收方需在第9个时钟周期将SDA线拉低，向发送方发送应答信号，表示已成功接收数据。第4步和第5步用的是发送器和接收器，不是主机和从机，这是由第一个字节的最后一位决定主给从发，还是从给主发。- 支持多主多从：总线上可连接多个主设备和从设备，主设备能发起和控制数据传输，从设备根据主设备指令进行数据收发。]]></description><category></category></item><item><title><![CDATA[arm的相关知识A（kile5）]]></title><link>https://blog.youkuaiyun.com/hsjdixk/article/details/142862617</link><guid>https://blog.youkuaiyun.com/hsjdixk/article/details/142862617</guid><author>hsjdixk</author><pubDate>Fri, 18 Oct 2024 17:53:24 +0800</pubDate><description><![CDATA[寄存器是中央处理器内的组成部分。在中央处理器的控制部件中，包含的寄存器有指令寄存器(IR)mul R0,R0,R1 这种写法是错的,因为mul规定操作数1不可以和目标寄存器相同。MSR cpsr/spsr，Rn 将通用寄存器的值写到状态寄存器中。data &~（7<<13)//将目标位的第十三位到十五位清零。后索引 str R0,[r1] #4 // *R1=R0 &&R1=R1+4。data &~（1<<13)//将目标位的第十三位清零。前索引 str R0,[r1,#4] //*(R1+4)=R0。]]></description><category></category></item><item><title><![CDATA[阻塞型IO和非阻塞型IO]]></title><link>https://blog.youkuaiyun.com/hsjdixk/article/details/142662235</link><guid>https://blog.youkuaiyun.com/hsjdixk/article/details/142662235</guid><author>hsjdixk</author><pubDate>Mon, 30 Sep 2024 19:17:56 +0800</pubDate><description><![CDATA[IO的本质是基于操作系统接口来控制底层的硬件之间的数据传输，并且在操作系统中实现了多种不同的IO方式模型，比较常见有下列三种。select / poll 底层使用轮询的方式检测文件描述符是否就绪，文件描述符越多，则效率越低。epoll底层使用红黑树，没有文件描述符数量的限制，并且可以动态增加与删除节点，不用重复拷贝。将请求与就绪文件描述符存储在同一个集合中，导致每次都需要进行重新赋值才能进行下一。多路复用原理类似，但有很多地方不同，下面是具体的对比。机制，没有采用遍历所有描述符的方式，效率较高。]]></description><category></category></item><item><title><![CDATA[线程的概念]]></title><link>https://blog.youkuaiyun.com/hsjdixk/article/details/142613068</link><guid>https://blog.youkuaiyun.com/hsjdixk/article/details/142613068</guid><author>hsjdixk</author><pubDate>Mon, 30 Sep 2024 18:30:48 +0800</pubDate><description><![CDATA[在被其他线程回收之前，它的存储器资源 （如栈）是不释放的。线程创建的默认状态为可结合的，可以由其他线程调用。一个线程，一个进程中是可以有很多的线程。//多个线程共享一个进程的资源，每个线程参与操作系统的统一调度         进程 = 进程资源 + 主线程 + 子线程 + ......线程是进程中的一个执行单元，负责当前进程中程序的执行，一个进程中至少有。允许一个线程就某个共享变量的状态变化通知其他线程，并让其他线程等待这一通知。创建多个线程时，一般由主线程统一创建，并等待释放资源或者分离线程,]]></description><category></category></item><item><title><![CDATA[多进程的简介]]></title><link>https://blog.youkuaiyun.com/hsjdixk/article/details/142465446</link><guid>https://blog.youkuaiyun.com/hsjdixk/article/details/142465446</guid><author>hsjdixk</author><pubDate>Thu, 26 Sep 2024 23:22:55 +0800</pubDate><description><![CDATA[由于初始时信号量为 0，A 会被阻塞。1.由于Linux系统中管理进程的方式是树型管理，所以每一个进程都需要与其对应的进程建立父子关系，同时，Linux系统中会为每一个进程分配id，这个id只会作为当前进程的唯一标志，进程结束后会被回收。并发执行（操作系统调度算法实现）：多个任务在同一时间内执行（加入了时间片轮的概念，每一个时间片都非常的短，由操作系统调度算法决定每一个时间片的执行任务），一旦一个任务的时间片消耗完，操作系统会调度下一个任务进入cpu中执行，没有执行结束的任务会等待下一次的分配）]]></description><category></category></item><item><title><![CDATA[6.30数组指针]]></title><link>https://blog.youkuaiyun.com/hsjdixk/article/details/140220024</link><guid>https://blog.youkuaiyun.com/hsjdixk/article/details/140220024</guid><author>hsjdixk</author><pubDate>Fri, 05 Jul 2024 23:50:04 +0800</pubDate><description><![CDATA[一维数组：int arr[6]={1,2,3,4,5,6}//p是一个变量，所以会在内存中开辟空间，因此也会有地址。arr数组名：是数组中的首元素地址//]]></description><category></category></item><item><title><![CDATA[6.23 指针]]></title><link>https://blog.youkuaiyun.com/hsjdixk/article/details/140219748</link><guid>https://blog.youkuaiyun.com/hsjdixk/article/details/140219748</guid><author>hsjdixk</author><pubDate>Fri, 05 Jul 2024 23:08:23 +0800</pubDate><description><![CDATA[那么可以定义一个指向  num  的指针  int *ptr = #  ，这里的  ptr  就是一个指针变量，它存储了  num  的内存地址。在 C 语言中，指针是一种用于存储变量地址的变量类型。通过解引用操作符(*)可以获取地址中内容的操作符.//printf("*&scores=%.2f"*&scores);地址:每块内存单元的编号"&变量名"取地址，printf("&scores=%p" ,&scores);二维数组的地址在内存中的方式是连续存储//float scores= 25.6;]]></description><category></category></item><item><title><![CDATA[6.16函数的初始认识]]></title><link>https://blog.youkuaiyun.com/hsjdixk/article/details/139899580</link><guid>https://blog.youkuaiyun.com/hsjdixk/article/details/139899580</guid><author>hsjdixk</author><pubDate>Fri, 05 Jul 2024 22:48:00 +0800</pubDate><description><![CDATA[静态局部变量：static --->修饰局部变量//当定义超出函数的调用结束后，不会回收他的空间，当int main 主函数结束后草会被回收。在C语言开发过程中，讲究的是模块开发，类似于拼装，将一个个具有不同功能的模块组合成为一个完善的模型。全局变量：在int main上方，头文件下方；局部变量：目标在int main下方，int number未初始化为随机值。一个函数只可以返回一种类型数据，一个函数仅仅进行一个功能。函数功能：复制字符串：赋值时会把字符串‘\0’也算进去。函数：实现功能的一个模块。]]></description><category></category></item><item><title><![CDATA[函数的初始认识]]></title><link>https://blog.youkuaiyun.com/hsjdixk/article/details/140076554</link><guid>https://blog.youkuaiyun.com/hsjdixk/article/details/140076554</guid><author>hsjdixk</author><pubDate>Sun, 30 Jun 2024 09:48:18 +0800</pubDate><description><![CDATA[在C语言的开发过程中，讲究的就是模块开发，类似于万代拼装，将具有不同功能的models组合成一个完整的模型。库函数的使用必须包含头文件   //#include <stdio.h>函数可以当作一个可以实现某个功能的积木工具（模块）...子程序。//scanf(" 格式串"，格式串占位符)；函数返回值return;函数名“scanf”]]></description><category></category></item><item><title><![CDATA[函数的初识]]></title><link>https://blog.youkuaiyun.com/hsjdixk/article/details/139896420</link><guid>https://blog.youkuaiyun.com/hsjdixk/article/details/139896420</guid><author>hsjdixk</author><pubDate>Sun, 23 Jun 2024 10:07:20 +0800</pubDate><description><![CDATA[以下是两个常用的函数查询网站

https://legacy.cplusplus.com/reference/cstdio/printf/?kw=printf

https://www.dotcpp.com/course/lib/
]]></description><category></category></item><item><title><![CDATA[6.8代码的初步展示与解析03]]></title><link>https://blog.youkuaiyun.com/hsjdixk/article/details/139706747</link><guid>https://blog.youkuaiyun.com/hsjdixk/article/details/139706747</guid><author>hsjdixk</author><pubDate>Sat, 15 Jun 2024 19:24:46 +0800</pubDate><description><![CDATA[2,缩进：在代码的行数量增多之后我们会使用多种结构例如顺序结构，循环结构以及选择结构，以后的代码我们也是由这三种结构复合而成，所以代码的缩进将会变得非常的重要，这样有益于我们检查代码错误以及以后工作后方便同事可以迅速掌握我们的逻辑思路！3,注释：同样在书写多行数代码中，为了方便老师和同事们快速理解我们的思路以及优化自己的代码，我们务必要附加上注释。注释不仅仅可以帮助我们说明我们代码的意义，并且也可以在我们检查程序错误时巧妙使用注释符号来检测代码错误的地方；算术运算符>关系运算符>逻辑运算符>赋值运算符。]]></description><category></category></item><item><title><![CDATA[6.2C程序的代码介绍02]]></title><link>https://blog.youkuaiyun.com/hsjdixk/article/details/139706391</link><guid>https://blog.youkuaiyun.com/hsjdixk/article/details/139706391</guid><author>hsjdixk</author><pubDate>Sat, 15 Jun 2024 18:58:39 +0800</pubDate><description><![CDATA[2,在每一行代码的注释之后我们可以观察出C程序在计算这些十六进制时会将其自动转换为二进制进行计算，在通过printf函数显示出对应的进制，如图中使用的就是%#x十六进制输出。0x是代表十六进制的前缀。1,在设计一些实际生活中的案例时，我们如果不想加入判断是否为正数或者一些参数不可以为正数时比如（公里数，时间，GDP）。本次代码的核心要点就是C语言中对正误判断的%d结果，以及多样的单目运算符的恰当应用。上方的代码是对键入的两个字符应用单目运算符分别进行大于，等于，小于的比较！]]></description><category></category></item><item><title><![CDATA[5.26 代码的初步展示与解析01]]></title><link>https://blog.youkuaiyun.com/hsjdixk/article/details/139381042</link><guid>https://blog.youkuaiyun.com/hsjdixk/article/details/139381042</guid><author>hsjdixk</author><pubDate>Sat, 01 Jun 2024 23:45:50 +0800</pubDate><description><![CDATA[三，scanf("",&name);键入函数，通过键盘输入对局内变量进行定义，"后方需要加入对应变量的地址：&name,补充：char name []={0};可加入%d，%s，%f等，但是其"后面需要加入对应的变量名！4.计算个位：对num进行除10取余，由于取余运算符只会输出整数，所以他的结果便位数字的个位。]]></description><category></category></item><item><title><![CDATA[5.8-001 在vm虚拟机下操作的c程序基础01]]></title><link>https://blog.youkuaiyun.com/hsjdixk/article/details/138586465</link><guid>https://blog.youkuaiyun.com/hsjdixk/article/details/138586465</guid><author>hsjdixk</author><pubDate>Wed, 08 May 2024 22:04:48 +0800</pubDate><description><![CDATA[/打印"  **  "的内容。注：操作c程序需要安装gcc编译器（监察代码）和vim编辑器(类似于记事本)补充：可以使用gcc 文件名.c -o 文件名（up to you！//由于输出使用int，所以需要返回整数！4.点击i继续编辑，输入汉字需要点击Shift（提前下载）清平终端：输出clear/Ctrl+l。放大终端：Ctrl+Shift+ +int main()//调用主函数。新建终端：Ctri+Shift+T。6.在终端输入：gcc 文件名.c。全屏终端：Ctrl+Alt+回车。]]></description><category></category></item></channel></rss>