- 博客(95)
 - 收藏
 - 关注
 
原创 FreeRTOS——信号量,互斥锁,临界区,延时
通过刚才的学习,已经知道FreeRTOS实时操作系统中设置的Sysytick嘀嗒定时器的tick的时钟节拍(嘀嗒中断的频率)设置的频率为1000HZ,也就是说不管相对延时函数还是绝对延时函数,延时时间都是以毫秒为单位,并且FreeRTOS并没有提供以微秒为单位的延时函数,所以用户就可以自行优化之前的delay_us()和delay_ms()函数。之前设计的延时函数是直接控制Systick定时器的寄存器实现的,但是现在Systick必须交给FreeRTOS,所以用户需要修改自己的延时函数。
          2025-09-20 23:14:40
          
772
        
原创 FreeRTOS——任务管理
FreeRTOS是一个支持多任务的实时操作系统,如之前裸机开发时采用的轮询系统而言,主程序是一个死循环,CPU按照死循环中的流程执行代码,而在多任务系统中,用户可以把整个系统分割为多个独立的且不能返回(死循环)的函数,这些函数就被称为任务。应用程序中的任务都是由FreeRTOS的调度器进行调度,每个任务具有独立的栈空间,栈空间其实就是单片机中RAM的一段空间,通常可以提前定义一个全局数组,或者在创建任务的时候对任务的栈空间进行动态的分配,可以参考FreeRTOS的官方资料。
          2025-09-19 23:11:45
          
371
        
原创 FreeRTOS——介绍及移植过程
其实RTOS就是一段嵌入在程序中的代码,在系统上电复位后首先被执行,可以理解为用户的主程序,只不过用户把产品的其他功能(子程序)都建立在RTOS之上,在RTOS中可以调用API函数为每个子程序都创建一个任务(也可以叫做线程),用户只需要调用RTOS内核中的相关的API函数接口就可以控制子程序,而且可以为每个任务设置不同的优先级,通过RTOS的调度器进行调度,这样就可以合理的使用CPU。中断会终止后台程序的运行,然后跳转到对应的中断服务函数中去处理,处理完成后,在继续执行后台的程序。
          2025-09-19 23:11:05
          
791
        
原创 stm32——I2C,0.96寸oled屏
基本概念内部集成电路(Inter Integrated Circuit)的简称叫做IIC或者I2C,是一种简单的、半双工同步通信的串行通信接口,IIC总线是上世纪80年代(1982年)由飞利浦公司设计出来,当时的目的是为了给MCU和外围芯片提供更简单的交互方式。引脚说明IIC总线只需要两根引脚就可以实现通信,一根是数据线(SDA Serial Data),另一根是时钟线(SCL Serial Clock),所有通过IIC接口通信的外围器件都挂载在IIC总线上,通过这种机制就可以实现多机通信。
          2025-09-10 09:48:50
          
666
        
原创 stm32——模拟SPI,RFID
RFID通过无线射频信号获取物体的相关数据,并对物体加以识别,RFID技术不需要和被识别物体进行直接接触就可以完成物体信息的处理,也不需要人工干预,可以实现无接触式信息传递,能应用在各种较为恶劣的环境中。电子标签的种类有很多,比如低频标签、高频标签等,并且电子标签的样式也有多种,比如条型、卡片型、环型、纽扣型等。随着计算机和互联网的发展,物联网的概念也被提出,而物联网想要实现的是“万物互联”物联网的核心思想是为全球每一个物品提供唯一的电子标签,而RFID可以实现无接触式的信息传递达到识别物体的目的。
          2025-09-09 10:54:00
          
333
        
原创 stm32——spi,flash
基本概念串行外设接口(Serial Peripheral Interface)的简称也叫做SPI,是一种高速的、全双工同步通信的一种接口,串行外设接口一般是需要4根线来进行通信(NSS、MISO、MOSI、SCK),但是如果打算实现单向通信(最少3根线),就可以利用这种机制实现一对多或者一对一的通信。引脚定义SPI总线采用的环形结构,利用的是主从模式(主机---->从机)进行数据的传输,由于是同步通信,所以在主机发送数据的同时也会收到从机发送的数据。工作模式。
          2025-09-09 10:53:53
          
607
        
原创 stm32——单总线,DHT11
单总线协议指的是只采用一根信道来进行数据传输,通信指的是双方(MCU与传感器)通过一根信道进行数据交互,所以按照数据的传输方向,只能采用半双工通信方式,比较典型的传感器就是温度传感器(DS18B20、DHT11…一、单总线协议的原理和应用。
          2025-09-08 10:09:17
          
256
          
1
        
原创 stm32——独立看门狗,RTC
然而处于同一电力系统中的各种电气设备通过电或磁的联系彼此紧密相连,相互影响,由于运行方式的改变、故障、开关操作等引起的电磁振荡会波及很多电气设备。由于单片机在运行的过程经常会受到外部电磁场的干扰,就可能会出现程序“跑飞”,比如出现数据的缺失、导致寄存器中的数据发生变化、程序指针PC指向非法地址…,为了提高程序的可靠性,就提供了看门狗外设,在程序出现由软件或者硬件导致的未知问题,利用看门狗外设对芯片进行复位,相当于重新运行程序。使用看门狗的目的:为了提供程序的可靠性,防止由软件或者硬件造成的问题的出现。
          2025-09-08 09:57:49
          
473
        
原创 stm32——ADC,光敏传感器
一般在电子线路中,信号分为两种:模拟信号 + 数字信号,大多数传感器采集的都是模拟信号,比如温度、湿度、压力…,采集的模拟信号再转交给计算机进行处理,计算机处理的是数字信号,其中涉及到模拟量和数字量的转换,会使用模数转换器,也被称为ADC。
          2025-09-07 09:37:33
          
209
        
原创 stm32——usart串口通信,蓝牙模块
可以选择手机APP对蓝牙模块进行连接,比如安卓手机APP(蓝牙调试器)或者使用微信小程序(蓝牙串口)
          2025-09-07 09:35:39
          
1184
        
原创 stm32——通用定时器,pwm
因为占空比控制的电路接通率是建立在恒定工作周期上的,如果电子控制模块控制电路的周期不能保证恒定,那么所谓的占空比控制是毫无意义的。输出比较:可以把定时器的某个通道连接到GPIO引脚上,主动从引脚输出一个固定的脉冲, 原理很简单,其实就是计数器(TIM_CNT)如果超过比较寄存器中的值,就可以 输出一个电平信号(高电平或者低电平)。PWM技术的原理其实很简单,就是利用STM32定时器中的某个通道的输出比较功能来输出周期性的脉冲信号,然后调节脉冲的宽度(调节占空比)达到控制外设的目的。
          2025-09-06 09:06:26
          
879
        
原创 stm32——时钟树,定时器
如果打算利用Systick定时器进行定时,则必须清楚Systick定时器的时钟频率,而定时器是挂载在总线下,而不同的总线的频率是不同的,而总线的频率是由时钟提供,而时钟的提供者又各不相同,所以必须要提前了解时钟源的区别。一般情况下一款MCU有多种时钟源(用于提供时钟信号),时钟源一般可以分为两类:内部时钟源、外部时钟源,每一种时钟源的频率都是各不相同的。可以知道,Systick定时器的内部时钟的频率是168MHZ,外部时钟的频率是168MHZ/8 = 21MHZ。(1)HSE高速外部时钟。
          2025-09-06 09:05:33
          
823
        
原创 stm32——NVIC,EXIT
1.中断的概念中断指的是CPU来处理和响应外部发生的异常,中断也就意味着打断,比如打断正在做的事,然后去处理一个紧急的事,处理完成后在继续做刚才没做完的事。比如打游戏,女朋友来电话。注意:中断是允许嵌套的!2.中断源分析中断源指的是中断发生的源头,中断源在内核中已经定义好了,中断源也称为向量表,向量表在STM32F4中文参考手册参考。
          2025-09-05 21:10:29
          
966
        
原创 stm32——寄存器操作,蜂鸣器原理
ST公司把每个外设的寄存器的配置都封装成若干个函数,并且把这些函数接口集成到了外设的源文件中,一个外设是有自己的独立的源文件和头文件,ST公司对文件的命名是有规律的,外设源文件命名: stm32f4xx_gpio.c and 外设头文件命名: stm32f4xx_gpio.h。利用寄存器对硬件进行控制,需要计算出每个寄存器的物理地址,并把寄存器的地址转换为指针,然后对指针进行操作,流程是比较复杂,所以可以利用ST提供的寄存器指针来对硬件进行控制。对GPIO引脚进行复位操作(输出低电平)
          2025-09-05 09:29:44
          
710
        
原创 stm32——GPIO
1.GPIO的概念GPIO(General Purpose Input/Output)外设是微控制器中最基本且最通用的接口,用于与外部设备进行交互。GPIO引脚的核心功能是作为通用的数字输入或输出,可以通过软件配置为多种工作模式,以满足不同的应用需求,GPIO引脚需要和外设连接在一起的,就可以和外设实现通信以及采集数据等功能。2.GPIO的定义指的是对芯片的某个引脚进行高低电平的输出,以及可以去检测某个引脚的电平状态。
          2025-08-19 21:27:34
          
1485
        
原创 网络编程——JSON解析
F.如果键值对的类型不是基本类型,而是对象或者数组,则需要继续解析,此时分为两种情况,第一种是情况:键值对的值的类型是数组,此时可以选择调用cJSON_GetArraySize()函数,该函数的作用是获取数组中的元素的数量。B.可以选择继续调用cJSON_CreateObject()来创建新的小对象,此时可以选择向小对象中添加键值对,添加键值对的前提是构造键值对,需要先把键值对的值添加到创建的对象中,再把小对象添加到其他对象中,具有嵌套关系。根据键值对的值的类型,可以选择调用。键值对之间用逗号,分隔。
          2025-08-17 10:38:02
          
1069
        
原创 shell编程——Makefile
需要注意的是,尽管在GNU make中没有对变量的命名有其它的限制,但定义一个包含除字母、数字和下划线以外的变量的做法也是不可取的,因为除字母、数字和下划线以外的其它字符可能会在以后的make版本中被赋予特殊含义,并且这样命名的变量对于一些Shell来说不能作为环境变量使用。、#等等,这些特殊的变量之所以称为自动化变量,是因为它们的值会“自动地”发生变化,可以类比普通变量,只要你不给它重新赋值,那么它的值是永久不变的,比如上面的系统预定义CC变量,只要不对它重新赋值,CC永远都等于gcc。
          2025-08-17 10:32:03
          
1111
        
原创 网络编程——HTTP协议
可以知道,HTTP协议的版本是由主版本号+次版本号组成的,最初的版本是HTTP/0.9,后期逐渐发展出其他版本,比如HTTP/1.0和目前最为主流的HTTP/1.1,但是还存在更高版本的HTTP协议。要注意,HTTP 并非一种强制协议,HTTP 有很高的拓展性,因此在实际应用中,客户端发起请求时所使用的的请求方法是由当时具体提供服务的服务端决定的,并不一定遵循上述约定。由于HTTP协议是基于请求-响应的协议,所以客户端向服务器发起请求之后,服务器会把相应的返回给客户端,服务器返回的是固定格式的响应报文。
          2025-08-16 08:45:36
          
601
        
原创 网络编程——Tcp协议
一般把接收端称为被动连接端,实际情况中经常作为服务器,服务器首先需要创建TCP套接字,然后调用bind()函数绑定本地地址和端口号到套接字,然后调用listen()函数把TCP套接字设置为监听模式,如果处于监听模式下有客户端发送连接请求,如果打算接受连接请求,则调用accept()进行连接,连接成功后双方就可以调用recv()或者send()函数进行通信。所以发起连接的一方需要调用connect()函数进行连接,但是注意:调用connect()函数连接可能会失败,因为只有对方接收连接请求,才可以建立连接。
          2025-08-15 08:55:25
          
753
        
原创 网络编程——UDP协议,广播和组播
包长度指的是UDP报首长度 + 数据内容长度之和,而包长度占16bit,也就是包长度的最大值是65535字节,可以看到UDP数据报报首的长度是8字节,而UDP协议接收到的网络层转发过来的数据包中还存在IP协议的报首,而IP协议的报首固定为20字节(不使用可选选项的情况下),所以UDP携带的数据内容的最大值是65507字节。但是由于UDP的特性,当某一片数据传送中丢失时,接收方无法重组数据报,将导致丢弃整个UDP数据报,所以通常建议UDP的数据包不要超过MTU的大小。
          2025-08-15 08:53:24
          
1124
        
原创 网络编程——IP协议和OSI模型
Linux系统的思想是“一切皆文件”,所以Linux系统把文件的类型分为七种,分别是普通文件、目录文件、管道文件、链接文件、字符设备文件、块设备文件、套接字文件。其中管道文件(pipe)的作用是为了实现同一台主机中不同进程间通信的,而套接字文件(socket)的作用则是用于实现不同主机中的进程间通信的。socket在Linux系统中指的是一种特殊接口,该接口可以实现互联网中不同主机上的应用进程之间进行双向通信。
          2025-08-14 08:53:36
          
1011
        
原创 系统编程——线程池
线程池指的是将线程放入一个类似缓冲区的池子中,对于生命周期很短的任务而言什么时候需要线程就从池子中捞出来干活,干完活就放回池子且让线程保持整装待命,并通过精巧的设计使得池子中的线程数量可以动态地发生变化,让线程既可以应对并发性需求,又不会浪费系统资源,这种设计思路就是线程池。从上图可以看到,线程被创建出来之后,都处于睡眠态,它们实际上是进入了条件量的等待队列中。任务实质上是用户需要交给线程池执行的函数,为了方便线程们执行,一般做法是将函数(即函数指针)及其参数存入一个任务节点,并将节点链成一个链表。
          2025-08-14 08:52:12
          
399
        
原创 系统编程——调度策略
这就是所谓的“完全公平”。第一个参数:attr指的是线程的属性对象,用户在创建线程之前可以先设置线程的属性,其中线程的属性就包含线程的调度属性,线程的属性对象attr在调用pthread_attr_init()函数初始化之后,默认是继承创建该线程的线程的调度属性。第二个参数:inheritsched指的是线程的属性是打算继承创建该线程的线程的调度属性或者指定为线程属性对象attr中的调度属性,如果该参数为PTHREAD_EXPLICIT_SCHED,则表示线程的调度属性指定为attr的值。
          2025-08-13 09:59:01
          
647
        
原创 系统编程——读写锁,POSIX信号量,条件量,死锁
设计一个程序,程序中有3个线程,主线程A创建一个文本,每隔5s获取一次系统时间并写入到该文本中,另外两个线程B和C分别从文本中读取当前的时间和日期,子线程B输出系统时间”hh:mm:ss”,子线程C输出系统日期”2024年05月31日”,要求使用读写锁实现互斥。资源互斥条件指的是一个共享资源每次只能由一个线程或者进程访问,比如互斥锁机制,如果一个资源已经被一条线程或者进程使用,但是如果该线程或者进程一直不释放该资源,此时其他需要访问该资源的线程或者进程就只能处于阻塞等待状态,也就意味着产生了死锁。
          2025-08-13 09:53:03
          
1068
        
原创 系统编程——多线程和互斥锁
与进程类似,线程退出之后不会立即释放其所占有的系统资源,而会成为一个僵尸线程。设计一个程序,要求在程序中创建两条子线程,主线程创建一个线程的属性对象,并对线程的属性对象进行初始化之后,要求创建的子线程的属性设置为分离属性,子线程A输出”hello”,子线程B输出”world”,主线程创建子线程之后就终止。通过之前的学习,可以知道一个进程中可以存在多条线程,每条线程可以执行一个任务,而线程是并发执行的,这样可以提高程序的运行效率,但是系统分配资源是以进程为单位的,而进程中的所有线程会共享这些资源。
          2025-08-12 09:13:29
          
743
        
原创 系统编程——共享内存和信号量
进程间通信(Inter process communication,简称IPC)指的是进程之间的信息交换,进程间通信的方式有很多,比如管道通信、信号通信、共享内存、消息队列、信号量组、POSIX信号量等。进程间通信可以达到数据传输、共享资源、控制进程等目的,方便用户对进程进行控制和管理。
          2025-08-12 09:11:09
          
362
        
原创 系统编程——消息队列
进程间通信(Inter process communication,简称IPC)指的是进程之间的信息交换,进程间通信的方式有很多,比如管道通信、信号通信、共享内存、消息队列、信号量组、POSIX信号量等。
          2025-08-11 18:18:32
          
989
        
原创 系统编程——信号通信
进程间通信(Inter process communication,简称IPC)指的是进程之间的信息交换,进程间通信的方式有很多,比如管道通信、信号通信、共享内存、消息队列、信号量组、POSIX信号量等。进程间通信可以达到数据传输、共享资源、控制进程等目的,方便用户对进程进行控制和管理。
          2025-08-11 16:10:35
          
858
        
原创 系统编程——管道通信
进程间通信(Inter Process Communication,简称IPC)指的是进程之间的信息交换,进程间通信的方式有很多,比如管道通信、信号通信、共享内存、消息队列、信号量组、POSIX信号量等。进程间通信可以达到数据传输、共享资源、控制进程等目的,方便用户对进程进行控制和管理。
          2025-08-11 15:40:27
          
998
        
原创 文件IO——目录操作
之前设计的程序只能访问某个路径下的某个文件,如果打算一次访问某个路径下的多个不同类型的文件,就需要用户手动调用open函数实现,但是当文件数量较多时,这种方案并不能满足需求,那请问是否有比较轻松高效的方式来实现访问某个路径下的多个不同类型的文件呢?等。
          2025-07-27 21:09:16
          
833
        
原创 文件IO——bmp图像处理
学文件IO不仅仅只学文件打开关闭,读写操作,还要懂的一些常用的图片格式的文件存储结构。这对我们后期学习图像处理有很大的帮助。
          2025-07-26 21:46:37
          
970
        
原创 文件IO笔试题
文件IO(文件输入/输出)是指计算机程序与外部存储设备(如硬盘、SSD、U盘等)上的文件进行数据交换的过程。简单来说,就是程序从文件中读取数据(Input)或将数据写入文件(Output)。文件IO这个板块我们会学习很多个接口,所以说我们长时间不用就会忘记,一定要会用man指令查手册,必须要回看得懂源码。文件IO是程序与外部存储交互的桥梁,通过 读取(Input) 和 写入(Output) 实现数据的持久化和重用,是几乎所有软件的基础功能。不同编程语言有各自的API(如C的。
          2025-07-23 21:20:45
          
890
        
原创 BST(二叉搜索树)的笔试大题(C语言)
二叉搜索树在笔试的题目里大多数是客观题,但是也有概率出现在主观题中,所以我们也要学会基本的实现,插入节点,前中后序遍历节点,还有节点个数,叶子节点个数,二叉树深度,这些算法基本都是用到递归的思想,所以我们要掌握。你如果对二叉搜索树不是很了解可以看这个这两期博文概念和算法题。大家千万不要自以为是,不要小瞧了这些题目,你不要以为自己都懂了,你能手搓出来那才是真的懂,在笔试的题目里绝大多数都是基础题,都是你如果连基础都不掌握你说你能做出很庞大的项目,那绝对是扯淡,所以一定要自己动手多写。
          2025-07-20 21:54:51
          
474
        
原创 笔试大题20分值(用两个栈实现队列)
目前博主在处于秋招求职的关键时期,在暑假这段时间会频繁更新博客,想在暑假期间把一些常考的面试和笔试题过一下,利用这两个月沉淀一下技术,做出一,两个比较大的项目,然后就是封装一下简历,开始投递了,我期待与26届所有毕业生一起学习共同进步。在做项目之前,我们的基础一定要打扎实,尤其是,这些简单的线性数据结构,你们学到后面会发现,好多存储结构都逃不掉,顺序存储结构和链式存储结构,一定要自己动手多敲,只有脑子有料,到后面做项目才会得心应手,否则你到后面根本学不下。
          2025-07-19 21:46:35
          
325
        
原创 Qt项目——天气预报
通过对之前Qt的学习其实我们就已经有一点经验了,做天气预报只需要了解以下内容:stylesheet界面美化Json数据解析HTTP通信自定义控件绘制温度能讲的不重复的也基本上没什么了,其实明白它整个框架,会用常用的控件,不会的就是查手册或者上网查资料 ,剩下的就是多练了,看着代码多敲多写。!!
          2025-05-06 20:10:19
          
951
        
原创 Qt项目——汽车仪表盘
汽车仪表盘非常的简单,理解绘图事件,会用就能轻而易举的做出来,这期主要是学习QPainter这个控件。这个绘图事件总体来说比较理解,可以根据自己的想象力来画出自己需要的东西,只是审美这种东西每个人都不一样,所以有的人画出来很好看,有的人就很普通。!!
          2025-04-21 22:43:25
          
1170
          
1
        
原创 Qt项目——Tcp网络调试助手服务端与客户端
这期要运用到计算机网络的知识,要搞清楚Tcp协议,学习QTcpServer,学习QTcpClient,学习TextEdit特定位置输入文字颜色学习网络通信相关知识点,复习巩固之前UI控件。1.TCPServer类关于监听,连接,发送,接受的API2.TCPServer在网络通信中常用的信号3.TCPScoket在QT实现Socket常用的API4.TCPScoket在QT实现Socket常用的信号5.EditText的内容读取方法,内容写入方法,在特定行写入特点颜色的方法!!
          2025-04-19 15:28:06
          
1106
        
        
      
空空如也
        
      
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅