- 博客(37)
- 收藏
- 关注
原创 软件定时器
软件定时器:指具有定时功能的软件,可设置定时周期,当指定时间到达后要调用回调函数(也称超时函数),用户在回调函数中处理信息优点:(1)硬件定时器数量有限,而软件定时器理论上只需有足够内存,就可以创建多个;(2)使用简单、成本低缺点:(1)软件定时器相对硬件定时器来说,精度没有那么高(因为它以系统时钟为基准,系统时钟中断优先级又是最低,容易被打断)。对于需要高精度要求的场合,不建议使用软件定时器。
2024-07-09 10:53:27 944
原创 FreeRTOS——任务通知
1.当任务通知用作于信号量时,使用函数获取信号量:()2.当任务通知用作于事件标志组或队列时,使用此函数来获取:()
2024-07-09 09:44:10 887
原创 FreeRTOS——事件标志组
事件标志位:用一个位,来表示事件是否发生事件标志组:一组事件标志位的集合, 可以简单的理解事件标志组,就是一个(16/32)整数事件标志组是一种实现任务/中断间通信的机制,主要用于实现多任务间的同步根据的宏定义不同,每个事件标志组的位数也就不同虽然使用了 32 位无符号的数据类型变量来存储事件标志, 但其中的高8位用作存储事件标志组的控制信息,低24位用作存储事件标志 ,所以说一个事件组最多可以存储24个事件标志。
2024-07-06 21:56:38 1180
原创 FreeRTOS——队列集
一个队列只允许任务间传递的消息为同一种数据类型,如果需要在任务间传递数据类型的消息时,那么就可以使用队列集作用:用于对进行“监听”(接收或获取),其中不管哪一个消息到来,都可让任务当任务A既要接收队列信号,又要获取信号量时,如果队列为空,则任务阻塞,即使拥有信号量,也无法获取到;如果成功获取队列中的数据,而未获取到信号量时,依然会被阻塞而使用队列集的任务B,不论,都可以使任务退出阻塞状态。
2024-07-06 20:26:45 381
原创 信号量(semaphore)
前面介绍的主要用于传输数据:任务与任务之间、任务与中断之间在有些情况下,不需要传输数据,只需要传递状态即可• 车开出停车位,你的车可以停进来了• 课已经录制完成,你可以进行观看了。
2024-07-05 22:08:04 2212
原创 FreeRTOS——消息队列
队列:任务与任务、任务与中断之间进行数据交流的一种机制消息传递FreeRTOS基于队列, 实现了多种功能,其中包括队列集、互斥信号量、计数型信号量、二值信号量、 递归互斥信号量队列的核心:关中断(实现互斥)、链表(实现休眠和唤醒)、环形缓冲区(保存数据)Q:队列作用与全局变量作用的区别?答:功能类似于全局变量,但又比全局变量更安全假设全局变量a= 0,现有两个任务都在操作全局变量a,正常情况下,a = 2,然而,在操作系统中:对于简单的变量自增,其中也包含许多步骤。
2024-07-03 21:05:11 841
原创 任务调度器——任务切换
作用:用于启动任务调度器,任务调度器启动后,FreeRTOS便会开始进行任务调度内部实现机制(以动态创建为例):(1)首先,判断动态创建任务 or 静态创建任务(2)创建空闲任务(3)如果使能软件定时器,则创建软件定时器任务(4)关闭中断,防止调度器开启之前或过程中,受中断干扰,会在运行第一个任务时打开中断5)初始化全局变量,并将任务调度器的运行标志设置为已运行(6)初始化任务运行时间统计功能的时基定时器(7)调用函数 xPortStartScheduler()
2024-06-30 09:29:43 839
原创 列表和列表项
列表是 FreeRTOS 中的一个数据结构,列表被用来跟踪 FreeRTOS中的任务(任务当前的状态),列表项就是存放在列表中的项目列表相当于链表,列表项相当于节点,FreeRTOS 中的列表是一个双向循环链表列表项间的地址非连续的,列表项的数目随时可以改变列表项的,就相当于,整个列表就相当于N个人互相拉着手,围而列表是管理这个圈二、 列表与列表项2.1 列表结构体具有确定已知常量的宏。
2024-06-02 11:39:45 1025
原创 FreeRTOS中断管理
临界段:临界段代码也叫做临界区,是指那些必须完整运行,不能被打断的代码段应用场合:(1)需要严格按照时序初始化的外设:IIC、SPI等(2)系统以及用户需求中断和任务调度可以打断当前正在运行的程序,任务调度实质是通过PendSV(最低中断优先级)中断实现的。因此,若想当前程序不被打断,则关闭中断即可实质:FreeRTOS 在进入临界段代码的时候需要关闭中断,当处理完临界段代码以后再打开中断可管理的最高中断优先级FreeRTOS管理的中断可以使用函数名带有。
2024-06-01 20:00:29 2046 1
原创 FreeRTOS——任务
使用FreeRTOS时,我们可以创建多个任务(task),有些文档把任务也称为线程(thread)。在FreeRTOS中,任务就是一个函数for(;;注意:(1)此函数通常以无限循环的形式存在,不能有返回值或者退出,但是任务可以进行自我删除(2)多个任务可以调用同一个函数。
2024-05-14 08:53:33 1065
原创 初识 Free RTOS
在裸机开发中,程序员需要编写直接与硬件交互的代码,包括底层初始化、时钟、中断服务程序、外设控制等。与在有操作系统的环境中相比,裸机开发对硬件的了解程度更为深入,同时也需要处理更多的底层细节。之前,所学习的51、32单片机,都是对裸机进行操作编程。(3)抢占式:任务可以有软件指定优先级,高优先级的任务可以抢占低优先级的任务。所谓裸机,通常指的是在没有操作系统(OS)支持的环境中直接运行程序的状态。),就会触发一次滴答定时器中断,在这个滴答定时器中断中,主要就是。),顾名思义,一款免费的实时操作系统。
2024-05-04 16:00:12 394
原创 STM32 Flash
STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分,通过闪存存储器接口(外设)可以对程序存储器和选项字节进行闪存存储器,可以在通用地址空间直接寻址,即可读写FLASH的用途:(1)利用程序存储器的剩余空间来(2)通过在程序中编程(IAP),闪存存储器可以用ICP或IAP方式编程:ICP方式用于更新闪存存储器的全部内容,它通过JTAG、 SWD协议或系统加载程序(Bootloader)下载用户应用程序到微控制器中。IAP。
2024-05-02 15:43:06 1522
原创 STM32 电源控制PWR
VDDA(VDD Analog,模拟部分供电):A/D转换器(参考电压VREF)、温度传感器、复位模块、PLL(锁相环)SystemInit():首先开启HSI,恢复寄存器的缺省配置,之后根据不同的宏,配置相关寄存器,得到既定的时钟频率。低功耗模式判断:配置响应寄存器后,通过调用__WFI()或__WFE()后,进入低功耗模式。在三种低功耗模式下,第二次下载程序方法:长按复位键,之后点击下载按钮,及时松开复位键。指令进入睡眠模式,则一旦发生唤醒事件时,微处理器都将从睡眠模式退出。
2024-04-30 18:42:51 1303
原创 STM32 实时时钟(RTC)
localtime():将秒寄存器的值转化为当地时间mktime():将指向的结构体转化为自1970年1月1日的秒数注:在STM32中两函数换算出的时间均是时间。
2024-04-30 10:18:38 497
原创 STM32 SPI通信
MOSI和MISO可以同时发送或者同时接收,数据传输速率相当于普通SPI通信模式的2倍320MHz(Quad SPI,四重SPI等效的时钟频率),MOSI、MISO、WP(写保护)、HOLD,四个引脚同时收发数据,数据传输速率相当于普通SPI通信模式的4倍。
2024-04-28 08:47:46 1638
原创 STM32 I²C通信
MPU6050是一个6轴姿态传感器,可以测量芯片自身X、Y、Z轴的加速度(可测范围为±2, ±4,±8, ±16g)、角速度参数(可测范围为±250, ±500, ±1000, ±2000°/秒( dps)),并且含有一个第二IIC接口,可用于连接外部磁力传感器,利用自带数字运动处理器(DMP: Digital Motion Processor)配合InvenSense公司提供的运动处理资料库,通过主IIC接口,可以向应用端输出完整的9轴姿态融合演算数据,可进一步得到姿态角(
2024-04-23 20:26:12 1650
原创 STM32直接存储器存取DMA
DMA(直接存储器存取/直接存储器访问,可以提供外设与外设之间、外设与存储器之间、存储器和存储器之间的高速数据传输,无须CPU干预,节省了CPU的资源在DMA传输前,CPU把总线控制权交给DMA控制器,在结束DMA传输后,DMA控制器立即把总线控制权交回CPUDMA过程:DMA请求、DMA响应、DMA传输、DMA结束12个独立可配置的通道:DMA17个通道),DMA25个通道)每个通道都支持软件触发和特定的硬件触发DMA资源:DMA17个通道)二、DMA结构。
2024-04-19 16:30:29 1163 1
原创 STM32 ADC转换器
ADC(Analog-Digital Converter,模拟-数字转换器),可以将,建立模拟电路到数字电路的桥梁模拟量:时间和幅值均连续的信号,例如:变换的电压、电流数字量:时间和幅值均离散的信号,例如:单片机中的0和1STM32的12位ADC是一种模/数转换器。它多达18个通道,可测量16个外部和2个内部信号源。个通道的A/D转换可以单次、连续、扫描或间断模式执行。
2024-04-18 11:42:31 1101 1
原创 STM32定时器
定时器可以对输入的脉冲进行计数,并在计数值达到设定值时触发中断,同时也可以进行计时时基单元:16位预分频器PSC、16位计数器CNT、16位自动重装载寄存器ARR,在72MHz计数时钟下可以实现最大59.65s的定时1.1 定时器类型STM32芯片最多包含8个定时/计数器,其中STM32F103C8T6定时器资源:TIM1、TIM2TIM3TIM4基本定时器:集成了1个16位自动加载递增计数器、1个16位预分频器、1个16位自动重装载寄存器。可以作为定时器提供时间基准,特别的,
2024-04-13 17:55:08 3061
原创 STM32时钟树与SysTick
锁相环(Phase-Locked Loop,PLL),是一个能够比较输出与输入相位差的反馈系统,利用控制环路的频率和相位,使鉴相器有两个输入,分别是晶振信号的输入f1、VCO的输出f2,将两个信号进行比较,如果这两个信号存在相位差异或频率差异,则鉴相器就会在存在差异的这一段进行输出。鉴相器不停的调整输出的电压,使两个相位或频率快速保持一致由于鉴相器输出的是矩形波,高低电平存在突变,低通滤波器可以让信号变得很平滑。输出的波形如下图所示。
2024-04-07 12:32:07 722
原创 STM32中断系统
(1)中断:单片机执行主程序时,由于某个事件的原因,暂停主程序的执行,调用相应的中断处理程序处理该事件,处理完毕后再自动继续执行主程序的过程(2)中断源:可以引起中断的事件(3)中断优先级:不同事件的重要程度。
2024-04-06 11:08:45 928 1
原创 通用功能输入输出GPIO
•GPIO)通用输入输出口•引脚电平:0V~3.3V,部分引脚可容忍5V(FT)•功能:实现STM32单片机与外部硬件之间的连接与数据交互•有两个32位配置寄存器(GPIOx_CRLGPIOx_CRH),两个32位数据寄存器 (GPIOx_IDR和GPIOx_ODR),一个32位置位复位寄存器,一个16位复位寄存 器(GPIOx_BRR)和一个32位锁定寄存器①保护二极管:防止芯片因外部过高或过低的电压而损坏。
2024-04-04 11:27:28 798 1
原创 STM32与GD32环境开发配置
(2)中间件访问层(Middleware Access Layer,MWAL):ARM公司实现,芯片厂商负责更新,主要负责定义中间件访问的应用程序编程接口API(Application Programming Interface)函数,如TCP/IP协议栈、USB等协议。(1)核内外设访问层(Core Peripheral Access Layer,CPAL):由ARM公司实现,包括命名定义、地址定义、存取内核寄存器和外围设备的协助函数,同时定义了一个与设备无关的RTOS内核接口函数。
2024-03-30 23:01:25 562
原创 初始STM32单片机(STM32F103C8T6)
首先,谈到单片机,其最主要的应用就是嵌入式所谓,嵌入式(Embedded system):以计算机技术为,以应用为,能够根据用户需求(功能、可靠性、成本、体积、功耗、环境等)模块的嵌入式系统以和作为核心部分,两者缺一不可其中,软件系统通常以为核心,外加。
2024-03-30 21:08:40 1655 1
原创 刷题日记——Day4 LeetCode.35. 搜索插入位置
题目要求算法复杂度为对数级,且还是一个有序的整数数组,显而易见,这题需要运用二分查找。
2024-03-03 21:27:27 293
原创 刷题日记——Day1
上述三种解法,本质都是将整数折半进行对比,但前面的过程略有不同,正所谓“各花各有各花香”,各自有各自的优势,其中实现的细节,值得大家去思考,去体会。部分解题思路参考力扣题解以及评论区中的大佬。
2024-02-05 14:49:38 506 1
原创 C语言实现冒泡排序
*功能:冒泡排序 (升序)时间:2024.1.29参数:arr:整型数组首地址length:整型数组元素个数作者:Excellent.bai*/for(i = 0;j++)//交换flag = 0;if(flag) //如果本身就是升序序列,则直接退出循环break;//计算元素个数//输出数据for(i = 0;i < length;
2024-01-29 19:34:14 1038
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人