自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 回调函数的简单用法

【代码】回调函数的简单用法。

2024-03-05 14:43:45 117 1

原创 函数指针与typedef一起使用的用法

C语言

2024-03-05 14:25:12 123 1

原创 C++宽字符

在实际的程序中,宽字符常量和类型通常用于处理多语言和国际化的文本数据。宽字符是指在编程中使用的一种字符类型,通常用于表示非ASCII字符或Unicode字符。处理多语言文本:当需要处理包含非ASCII字符的多语言文本时,例如中文、日文、俄文等,宽字符常常是必需的。这些字符可能需要使用Unicode编码表示,而Unicode字符通常需要用多个字节来存储,因此需要使用宽字符类型来处理。当需要处理非ASCII字符、Unicode字符、多语言文本或特殊符号时,通常需要使用宽字符类型。

2024-01-17 17:22:27 639

原创 Linux互斥锁与读写锁

在Linux系统中,可以使用pthread库中的pthread_mutex_t类型来创建和操作互斥锁。下面是一个详细的教程,介绍如何在Linux系统中使用线程互斥锁和读写锁。在Linux系统中,可以使用pthread库中的pthread_rwlock_t类型来创建和操作读写锁。当使用互斥锁时,需要确保在访问共享资源之前先锁定互斥锁,在访问完毕后再解锁互斥锁。函数中,我们创建了一个读取共享资源的线程和一个写入共享资源的线程,并在最后销毁了读写锁。在上面的例程中,我们首先初始化了一个互斥锁,并在。

2023-12-29 16:25:29 424 1

原创 SQlite3学习笔记

函数是SQLite数据库API中的一个重要函数,用于准备SQL语句以供后续执行。它的作用是将SQL语句编译成一个可执行的SQL语句对象,该对象可以被后续的SQLite API函数使用。在编译过程中,SQLite会对SQL语句进行语法分析、语义分析和查询优化,并将其转换为一个字节码程序,以便后续的执行。函数来准备SQL语句,并使用后续的SQLite API函数执行和处理查询结果。这个函数的作用是非常重要的,它可以帮助我们安全地执行SQL语句,并且可以提高执行效率。语句,该语句将所有用户的ID和姓名查询出来。

2023-12-29 11:32:06 341 1

原创 嵌入式执行程序的过程

CPU通过读取flash存储器中的程序内容,并将其复制到内存中,然后设置程序执行环境并转移控制权,来实现将程序从flash加载到内存并执行的操作。2. 复制程序到内存:CPU根据程序入口地址,从flash存储器中读取程序的指令和数据,并将它们复制到内存中的指定位置。1. CPU:程序首先被加载到内存中,然后CPU通过指令集对程序进行解析和执行。4. 转移控制权:一旦程序被复制到内存中并且执行环境设置完成,CPU会将程序计数器设置为程序入口地址,从而转移控制权到程序的起始位置,开始执行程序。

2023-12-25 09:04:42 464

原创 关于stm32点灯不用配置时钟源的问题

在对STM32C8T6进行LED灯开启时,只需要对GPIO口的外设时钟进行使能,而不需要对时钟源进行使能的原因是因为GPIO口的时钟源通常在复位后就已经默认使能了。在STM32微控制器中,GPIO口通常使用的是主时钟(HCLK)作为时钟源,而主时钟在复位后会自动使能,因此不需要额外的操作来使能主时钟。通过配置时钟控制寄存器,可以选择所需的时钟源,并对其进行使能。总之,对GPIO口的外设时钟进行使能是确保GPIO口正常工作的必要步骤,而不需要额外对时钟源进行使能,因为主时钟通常在复位后就已经默认使能了。

2023-12-13 10:57:34 567 1

原创 stm32远程升级

在实际的远程升级过程中,为了确保原有的程序可以被恢复,通常会采用一种称为“安全启动”(Safe Boot)的机制。在进行远程升级时,新程序代码会首先被写入备份程序存储区域,然后在验证新程序代码无误后,通过特定的机制将新程序代码复制到主程序存储区域。如果在复制过程中发生错误,微控制器可以通过特定的启动模式或引导方式,回滚到备份程序存储区域,并继续运行原有的程序。因此,在进行远程升级时,确保微控制器具有安全启动机制是非常重要的,这可以保证即使升级过程中发生错误,原有的程序代码仍然可以被恢复并继续运行。

2023-12-11 16:23:19 387 1

原创 valgrind错误解析与排查

4. **使用调试器**:结合Valgrind的输出信息,可以使用调试器(如GDB)来在出错的位置设置断点,并逐步执行代码,观察变量的值和内存访问情况,以便更清晰地理解问题所在。7. 最后,Valgrind提供了一些错误汇总信息,建议使用`--track-origins=yes`选项来查看未初始化值的来源,也提供了重新运行Valgrind的选项。总的来说,Valgrind的输出结果指出了程序中的内存错误,包括未初始化值的使用和无效的内存读取,帮助开发人员找出并修复这些问题。

2023-12-05 15:46:23 503

原创 关于RTC的理解

RTC是和LSE一起由外部供电的,因此掉电后,LSE能继续给RTC脉冲,使RTC继续工作。

2023-11-28 16:04:25 371

原创 shell和终端的关系

终端(Terminal)是指用户与计算机进行交互的设备或程序。在图形界面环境下,终端通常是一个模拟器,用于模拟字符终端的功能。用户可以通过终端输入命令,然后终端会将命令传递给shell进行解释和执行。终端还负责显示shell输出的结果。Shell是一种命令行解释器,用于解释和执行用户输入的命令。它是用户与操作系统内核之间的接口,负责接收用户输入的命令并将其转化为操作系统能够理解的指令。而终端是用户与计算机进行交互的设备或程序,用于输入命令和显示结果。Linux的shell和终端是两个不同的概念。

2023-10-26 15:16:06 325

原创 Ubuntu链接多个文件

假设我们有两个源文件main.c和func.c,以及一个头文件func.h。我们想要将这两个源文件编译链接成一个可执行文件main。如果编译链接成功,将生成可执行文件main。3. 输入make命令,执行Makefile文件中的编译链接规则和指令。1. 创建一个Makefile文件,该文件包含编译链接的规则和指令。文件包括:main.c fun.c fun.h。4. 如果编译链接成功,将生成可执行文件。这将删除所有生成的目标文件和可执行文件。2. 打开终端,进入代码所在的目录。

2023-10-26 14:26:36 58

原创 枚举和结构体实现C语言面向对象编程

在上述代码中,我们使用了枚举类型 `AnimalType` 来表示不同的动物类型,结构体 `Animal` 表示动物对象,其中包含了类型、名字和年龄等属性。然后,我们定义了一个 `Animal_SayHello` 方法,根据动物对象的类型输出不同的问候语。在 `main` 函数中,我们创建了几个不同类型的动物对象,并调用了 `Animal_SayHello` 方法来展示不同动物的问候语。这个例子展示了如何使用枚举和结构体来实现面向对象的编程思想,通过将数据和方法封装在结构体中,并通过指针传递来调用方法。

2023-10-25 11:20:56 35 1

原创 51单片机的定时器中断

接着编写了Timer0_ISR()函数作为定时器0的中断服务程序,在该函数中重新设置定时器的初值,并将LED引脚取反,实现LED灯的亮灭。总结:定时器和中断是单片机中常用的功能模块,通过合理的使用定时器和中断,可以实现定时功能和响应外部事件的需求。4. 主程序中使用定时器和中断:根据需要,在主程序中设置定时器的启动和停止条件,并处理定时器中断的相关操作。4. 主程序中使用定时器和中断:启动定时器,等待定时器中断触发,执行中断服务程序中的函数。- 定时模式:定时器按照设定的时间间隔进行定时,并触发定时中断。

2023-10-16 14:12:06 1181 1

原创 LCD1602显示预设字符和自定义字符

在上面的代码示例中,我们通过调用lcd_send_cmd(LCD_CMD_SET_CGRAM_ADDR)将CGRAM的地址设置为写入模式,然后通过循环将自定义字符的像素数据写入CGRAM。当我们调用lcd_send_data(65)时,实际上是将ASCII码为65的字符'A'的对应编码(即CGROM中的地址)发送给LCD1602。对于自定义字符,LCD1602的内部控制器并不会直接从CGRAM中读取字符的像素点阵。因此,预设字符的显示是由LCD1602的内部控制器完成的,而不是由我们的代码直接控制的。

2023-10-16 13:42:50 198

原创 LCD1602

当数据口的引脚电平为高电平时,表示逻辑上的1,而当引脚电平为低电平时,表示逻辑上的0。在液晶模块中,高电平和低电平有不同的含义,比如高电平表示液晶模块正在执行指令或者处于忙状态,而低电平表示液晶模块处于空闲状态。这段话的意思是将LCD1602的数据口LCD1602_DB的值设置为0xFF,即将数据口的8个引脚的电平都设置为高电平。因此,在读取状态字之前,我们需要将数据口的引脚电平都设置为高电平,以确保读取到的状态字是准确的。在读取状态字之前,我们需要确保数据口处于高电平状态,以避免读取到错误的状态字。

2023-10-15 21:46:50 60 1

转载 马原学习笔记

层级不同是指 浅程度(层次)和深程度(层级) 比如:感觉动物都有,而思维是人脑的活动,只有人才有。感性认识通过感觉器官获得,理性认识形成的关键是大脑思维。2、含义不同 意识是 客观事物在人脑中的反映(含主动形成和被动接受)4、对应的概念不同 意识与物质对应 认识与实践对应。1、体系不同 意识属于唯物论 认识属于认识论。认识是 人脑对客观事物的反映(主动形成)3、层级不同 意识包括 感觉和思维。认识包括 感性认识和理性认识。......

2022-08-16 21:19:04 306

转载 反三角函数及其导数

反三角函数及其导数

2022-07-26 15:49:02 1553

空空如也

空空如也

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

TA关注的人

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