自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言内存分配

堆的内存释放由应用程序去控制,通常一个new()就要对应一个delete(),如果程序员没有释放,那么在程序结束后操作系统会自动回收。的全局变量也储存在常量区,const修饰的局部变量依然在栈上。等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张)等函数释放内存时,被释放的内存从堆中被剔除(堆被压缩)保存全局的和静态的未初始化变量,比如 int a;用来保存全局的和静态的已初始化变量,比如。用来存储程序运行时分配的变量。储存在常量区的只读不可写。如函数调用所传递的参数。malloc注意事项。

2024-10-12 20:14:09 465

原创 RT-Thread实时操作系统 动态线程的创立

void th1_printf(void* parameter)中的程序也在一直运行,而引起这个现象的就是我们的多线程,我们借助实时操作系统RT-thread,来完成了多线程的操作。如下 这个函数就是我们创建的线程函数,我们可以理解为这个函数就是一个除了主函数之外的 int main,有了rt-thread之后我们可以理解为 我们就有了多个int main。我们可以通俗的理解为,我们以前用的单片机只有一个脑子,但有了rt_thread后,我们的单片机就有了两个脑子,可以同时处理多个任务。

2024-10-08 01:57:35 729

原创 链表的基础知识

链表是一种常见的数据结构,它通过节点之间的连接关系实现数据的存储和访问。链表的特点是物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。插入操作允许在链表的任意位置添加新节点,而删除操作则可以从链表中移除指定的节点。链表的优点包括灵活的内存管理、允许在链表任意位置上插入和删除节点。链表在计算机科学中具有广泛的应用,如动态内存分配、文件系统管理、队列和栈的实现等。但在真正的数据结构中,数据的存储是不连续的,那为了使这些不连续的数据之间有连续,我们加入了。

2024-10-01 00:20:29 224

原创 ESP8266wifi模块的使用

ESP8266简介ESP8266是一款由乐鑫公司开发的低成本Wi-Fi模块,广泛应用于物联网和家庭自动化项目中。Wi-Fi连接:ESP8266能够连接到Wi-Fi网络,支持多种加密方式,包括WPA/WPA2和WEP等。内置TCP/IP协议栈:模块内置了完整的TCP/IP协议栈,支持通过串行通信与外部设备进行交互。多种工作模式:ESP8266支持三种工作模式:STA(站点模式)、AP(接入点模式)和STA+AP(混合模式)。在STA模式下,模块可以连接到路由器,实现远程控制;

2024-09-28 00:12:54 902

原创 DHT11温湿度模块协议编写

1.简介DHT11模块是一款常用的数字温湿度传感器,广泛应用于各种嵌入式系统、智能家居和气象站等领域,相比于 DS18B20 只能测量温度,DHT11 既能检测温度又能检测湿度,不过 DHT11 的精度和测量范围都要低于 DS18B20,其温度测量范围为 0~50℃,误差在±2℃;湿度的测量范围为 20%~90%RH(Relative Humidity 相对湿度—指空气中水汽压与饱和水汽压的百分比),误差在±5%RH2.与MCU的通信方式DHT11采用单总线通信1.电路讲解。

2024-08-23 23:06:46 600

原创 结构体对齐

还是上面同样的代码,这个时候如果我们使用了结构体对齐,在使用了结构体对齐之后下面这段代码在内存中所占空间就是12个字节(4+4+4=12),这个时候大家就会有疑问了,为什么在我们使用结构体对齐之后内存空间的占有比没有使用结构体对齐之前多了三个字节的存储,这又是为什么呢?在嵌入式的学生中,我们常会遇见结构体这样一个我们熟悉的老朋友,结构体中可以存储不同类型的数据,在一定程度上节省内存空间,方便数据的管理,而在结构体中我们又有一种数据存储的方式结构体对齐,而结构体对齐有以下优点。

2024-08-18 15:49:35 720

原创 HAL库串口重定向函数的编写和原理

在HAL库中我们想实现串口发送数据的功能时常用HAL_UART_Transmit() sprintf()这两个函数实现串口发送数据的功能,但在C语言中我们学习过printf这个函数,可以直接将所需要打印的数据打印在显示端,但由于在HAL库中是没有printf这个函数的,所以我们计划用重定向功能实现在HAL库中实现printf的功能。

2024-08-05 00:19:10 552

原创 STM32串口通信基本知识

在stm32中的多种通信方式中 我们最常用的就是串口通信,那为什么最常用的设备间通信的是串口通信呢,因为串口通信有以下优点:串口通信技术非常普及,几乎所有的PC电脑都配备了串口接口。此外,许多工业设备也普遍使用串口接口,这使得串口成为一种通用且易于实现的通信方式。:串口通信操作简单,只需要三根线(地线、发送线和接收线)即可完成数据传输。这种简洁性使得串口通信在实际应用中非常方便。:由于串口通信所需的硬件设备较少,通常只需要一个串行接口板,因此其成本相对较低。这使得串口通信在对成本敏感的应用中具有明显优势。

2024-08-01 15:02:21 693

原创 stm32常见通讯方式 和通讯方式之间的区别 串行并行 同步异步

在stm32的学习中,我们会用到很多种通讯方式,每一种通讯方式有其独特的方式和优点,那么我们今天就来讲讲通讯方式之间的区别,我们分为三个方向 1.同步和异步 2.串行和并行 3.方向与时间。

2024-07-28 15:28:41 466

原创 stm32HAL_GPIO_TogglePin电平反转函数 彻底读懂参考器手册 读懂寄存器

在hal库中我们经常会用到HAL_GPIO_TogglePin这个翻转电平的函数,对IO口的输出电平进行反转,但大部分初学者也只止步于会用 对底层函数和如何结合参考手册来配置寄存器并没有深入的了解,所以本人今天尝试用一篇文章进行讲解。

2024-07-27 11:41:17 2623

原创 stm32光敏传感器的使用 软硬件讲解

上图就是我们今天要讲解的光敏传感器,打开淘宝搜索光敏传感器就可以找到相关硬件和硬件所匹配的相关参数,我们平常使用光敏传感器来测量环境的明暗程度,在编程时,我们会使用单片机的IO引脚读取光敏传感器DO口返回的数字信号,并根据此数字信号进行相关编程,比如模拟一个路灯的工作环境:即当周围环境变黑时路灯亮起,或者就是我们初学嵌入式时经常写的简易版的循迹小车也是用该模块实现的。

2024-07-24 21:18:17 871

原创 STM32如何彻底读懂参考器手册和底层函数以GPIO_SetBits为例

在学习stm32标准库的时候,参考手册是我们学习的主要工具,但由于参考手册的复杂程度,和底层函数的抽象,导致很多初学者很难真正读懂参考手册,不知道参考了个啥,看完更是一头雾水,还有函数底层函数的驱动也很难理解,所以今天本人斗胆要最基础的一个函数GPIO_SetBits来讲解如何对应参考手册和底层函数来理解。

2024-07-23 20:10:13 543

原创 STM32外部中断的配置(NVIC)

我们可以根据中断名称找到我们所需要配置的中断,然后就是中断号,我们可以根据中断号在我们的驱动文件中找到此种中断对应的函数值,我们用实际例子加深理解(图片来源于铁头山羊)我们看这个参数旁边的详解,解释到这个参数可以是IRQn_中的某个参数,我们继续跳转IRQn_根据37这个数字,我们继续回到底层驱动文件(这个文件就是我们刚才跳转的IRQn_),我们看图中的37 就是我们需要的函数参数。想要找到串口中断所需要的函数值,就要借助我们的中断向量表,我们打开参考手册翻到翻到9.1.2节。USART1的外部中断。

2024-07-21 09:10:07 1061 1

原创 stm32中AFIO重映射功能及如何在标准库中配置AFIO

这句话来自stm32参考手册,我们可以从中大概知道的是AFIO的作用就是把一些功能重映射到其他引脚上来解决复用冲突的情况(如何区分不清楚 通用 复用 重映射的区别的可以看我另一篇文章)在上图中我们可以知道的是,我们要用stm32定时器TIM1的四个通道来控制两个个电机,用stm32的USART1的TX和RX来与外部通信,但这个时候就出问题了,如果你读过stm32的引脚定义表,你会发现当 PA9 引脚被复用时定时器TIM1_CH2会和串口USART1_TX冲突(PA10同理),1.为什么要配置AFIO。

2024-07-17 23:58:11 1832 1

原创 STM32中断优先级 抢断优先级 子优先级 总优先级

所谓中断嵌套就是:已经发生了一个中断后又发生了一个中断,后发生的这个中断优先级较高,然后就先停止第一个中断,来完成第二个中断。

2024-07-17 16:37:29 406

原创 STM32开漏输出推挽输出 和默认情况

比如现在有一个外部电路提供了我们这个硬件所需要的电压 0~3.3v(这个范围内的一个值),我们就可以使用开漏输出,输出低电平来驱动硬件,你可以粗俗的理解为,在开漏模式下 我们输出低电平,这个低电平提供了“GND”。而PC13灯正好可以通过低电平驱动(下面的原理图有),这样我们就又学到了一个点 在标准库编程的前提下,我们不使用任何输出函数时,我们的开漏输出默认输出低电平。再开漏输出模式下输出高电平时电路处于高组态,无法输出3.3v高电平。外部电路(可以理解为外部电路提供电压)的情况下我们多选开漏输出,

2024-07-11 23:12:51 1959

原创 问题与工作总结

这段话在我的51学习中也起了很重要的引导,在初学51的时候手册看不懂,视频看不懂,很多硬件层面的知识看的人头疼 那种模糊感和不确定性让我难受,但只要成下心来慢慢看一遍不懂看第二遍直到看懂为止,总会有看懂的那一刻,而那一刻大脑给自身的反馈时极强的有一种柳暗花明又一村的感觉,这种感觉让我着迷,也支撑着我去面对那些模糊和不确定。在自己遇到全新的问题和烦恼时,能够忍住烦躁,直面问题,拆解问题,找到症结所在,最终化解问题,是一种美妙的感觉。这个坎过不去,就像肌肉受伤一样,恢复需要很长时间,甚至陷入忧郁症和畏难症。

2023-10-19 21:08:48 57

原创 关于新技术的学习

这周又是忙碌的一周暂时放慢了对c语言的学习,大概学习到结构体之后,剩下的内容准备在寒假的时候继续学习 加上前面学的那些东西让我消化都要好些日子 还有上篇博客总结的经验就是不要眼高手低 所以接下来的三个月对c语言学习的计划改为以输出为主 暂时减少输入 并将其任务主线度列为长期任务 列为长期任务后其重要度会相应下降 但其持续性会提高 保证每天能练一两道c语言的题 还有去看一下较为复杂的代码 尤其是那些语句嵌套的多的代码 然后下一步的主线任务就是51单片机的学习 为什么从51开始学习呢?

2023-10-13 17:48:06 56

原创 第一阶段关于c学习的一些总结

跟着B站的鹏哥学习c语言已经接近一个月左右,刚上大学感觉还是一时无法融入大学的环境与氛围中去 希望以后能有所改善吧。需要积累的东西 所以接下来的一个月我应该会调整方向 减少输入增加输出。

2023-10-11 09:51:56 65

空空如也

空空如也

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

TA关注的人

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