自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于互斥锁,信号量,条件变量等在使用时多线程休眠状态的理解

这意味着线程中的其他代码也不会继续运行,直到该线程获得了锁并重新被调度执行。此篇仅在记录实验和结论,关于这部分知识其他博文已很详细,这里不做赘述。尝试获取一个互斥锁(mutex)时,如果锁已经被其他线程持有,那么调用。结论1:当调用pthread_mutex_lock()的线程将会被阻塞,直到它获得该锁为止。结论2:sem_wait会阻塞调用线程,会使调用它的线程进入休眠状态。

2024-05-10 17:29:59 24

原创 编程中遇到的关于变量存活周期引发的段错误

上文线程foo中若不加static修饰变量i,则会段错误,局部变量存放在栈区,而static修饰后存放在data段。

2024-05-09 17:04:58 113

原创 关于Linux多线程调度策略及优先级的设置

如下示例(结合注释)足够说明如何在创建线程时设置调度策略及优先级要使用此功能需检查系统的实时调度是否启用。

2024-05-09 12:10:05 472

原创 linux虚拟机中使用gdb调试工程项目

不过多赘述gdb相关概念,如下为实际用法及示例如图进入项目工程键入 gdb cli_main进入调试界面键入start程序开始运行下面列出gdb基础指令说明如下我键入n(next缩写)进行单步运行,并用p打印结构体变量addr的值上述表格还有诸多命令,如遇相关场景使用即可,掌握以上便可初步调试较小功能模块程序。

2024-05-07 11:55:50 332

原创 初次使用Git使用遇到的问题及解决办法

此时会生成远程仓库的文件夹于新建的文件夹中,cd到此文件夹中,然后键入如下。首先,先建一个新的文件夹,在其下git终端键入如下指令。

2024-05-06 19:40:16 168

原创 偶遇缓冲区刷新相关bug

标准I/O库中的函数,如printf和scanf,通常使用缓冲区来减少系统调用的次数。这意味着当你调用printf时,数据首先被写入到一个内部缓冲区,而不是直接发送到标准输(通常是终端或控制台)。当缓冲区满或者在某些特定条件下(如遇到换行符),数据才会从缓冲区刷新(flush)到标准输出。同样,scanf在读取输入时也会使用缓冲区来存储用户输入的数据,直到遇到空格、换行符或者达到指定的读取量。

2024-05-06 10:58:45 218

原创 linux内核链表的使用

我们在使用前需要先定义一个结构体对象实例,再对其下成员list进行初始化。然后我们把结构体指针p指向的list成员添加到头节点的后面。接下来我们试着遍历头节点,并打印存入sno的信息。我们试着把p指向的成员sno的初始化。补充尾插函数,用法与头插一致。

2024-04-29 16:01:16 87

原创 安卓系统移植

1、获取源码方式有两种,官网:source.android.com,开发板厂商提供。安卓源码结构目录解析abi : 应用程序二进制接口bionic : c/c++运行库build : 编译android源码,建立system.img,ramdisk.img等文件的工具device : 设备相关代码frameworks : 框架层代码hardware : 硬件接口和库libcore : java核心库prebuild : android在各平台编译要使用的工具。

2024-04-29 10:17:09 148

原创 linux驱动设备树的使用

2. 编写内核源码同时也会编译设备树(以arm64为例)如下为编译内核源码shell指令,用于编译或构建特定于ARM64架构的NanoPi 4的映像。要验证是否回调probe函数,在probe函数中用以下方式打印调试信息便可验证。其一,设备树以文本形式,可读性很强。其二,对于不同硬件可移植性和兼容性更好。初始化match_table,用来与设备树节点配对。1、修改.dts文件,利用覆盖的方式。若匹配成功,则调用probe函数。设备树在内存中用sys文件系统映射成目录和文件。

2024-04-22 20:39:55 335

原创 关于linux中断驱动的学习

记录linux内核与驱动相关学习内容留此文以便日后开发时重拾。

2024-04-09 19:44:24 919

原创 2024-03-28-函数使用心得

fgets特点,从fp_r打开的文件中获取一行数据,每次只读一行(以换行符为标记),在插入数据库前通过此结构方便一行一行提取,此结构也可用于例如串口数据转为想要的类型。

2024-03-28 16:12:28 99

原创 近期学习心得

实时操作系统中将单片机轮询的运行方式变更为抢占式任务调度的运行方式,首先对各任务设立不同优先级并不断循环运行,再将所有任务放入就绪队列。对于高优先级的任务,在其中加入vTaskDelay函数(操作系统自带的延时函数),从而让CPU释放出来去运行其他优先级较低的任务,结合相应的任务挂起函数和任务恢复函数,实现对各个任务的调度运行。输出模式是指将输出寄存器的数字信号输出到相应引脚,由此实现CPU对其的电位控制。输入模式是指将GPIO的引脚信息放入输入寄存器,便于CPU提取。

2023-12-20 16:30:29 389

原创 基于MODBUS协议,通过485通信发送指令实现上位机控制继电器(公司项目实践)

endif以上就是今天要讲的内容,本文仅仅介绍了10功能码的程序设计。为保证产品能多次执行相同或不同的上位机指令,主函数中设置了多个闭环,用来保证后来指令不对当前指令造成干扰。

2023-08-25 16:58:40 1411 7

原创 实现呼吸灯功能(不使用中断库函数)

【代码】实现呼吸灯功能(不使用中断库函数)

2023-08-03 15:25:50 146

原创 使用位带操作使LED闪烁

1.1位带区与位带别名区地址转换1、外设位带别名区地址2、SRAM位带别名区地址。

2023-08-03 15:08:51 141

原创 STM32时钟系统

void RCC_HSE_Config(u32 div,u32 pllm) //自定义系统时间(可以修改时钟)RCC_PCLK1Config(RCC_HCLK_Div2);if(RCC_WaitForHSEStartUp()==SUCCESS) //等待HSE起振。

2023-08-03 14:48:24 98

原创 记录在公司嵌入式编程学习--LED的点亮与熄灭

目录1.STM32 GPIO介绍1.1GPIO概念1.2GPIO结构框图1.3GPIO工作模式2.硬件设计3.软件设计3.1.使用寄存器点亮LED3.2.使用库函数点亮LED4.实验现象1.STM32 GPIO介绍1.1 GPIO概念GPIO引脚分类电源引脚晶振引脚复位引脚下载引脚BOOT引脚GPIO引脚1.2GPIO结构框图1.3GPIO工作模式输入模式输入浮空输入上拉输入下拉模拟输入输出模式开漏输出开漏复用功能推挽式输出推挽式复用功能。

2023-08-03 14:27:01 185

空空如也

空空如也

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

TA关注的人

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