- 博客(10)
- 收藏
- 关注
原创 FreeRTOS——同步互斥的概念和任务管理
在FreeRTOS中,任务就是一个函数,在裸机开发中,一个函数被调用结束后,是要返回LR寄存器中储存的地址的。但在FreeRTOS中,使用某个功能函数创建任务时,会将LR寄存器中的地址指向一个错误函数,在这个错误函数中会关闭所有的中断,关闭中断的下一句就是一个死循环。这会导致程序卡死在这个死循环,具体原因在调度机制中。所以用于创建任务的函数是不能运行完后就返回的,因为这会导致程序进入错误函数从而卡死。
2025-02-23 19:12:08
640
1
原创 初识FreeRTOS——多任务系统及内存管理
在此之前,先复习一下堆栈的概念,虽然堆栈总是放在一起说,但堆和栈是两个人为区别的概念,实际上堆和栈都是内存中的存储空间,同样的空闲内存,如果被管理函数控制,就称为堆,被栈寄存器指向,就称为栈。其中,My_RTOS是用于创建任务的函数,“First——task”是为这个任务取的名字,用于进行任务管理,128是 栈的深度,第一个NULL是任务需要的参数,也就是My_RTOS这个函数需要的参数,这里不需要,所以用NULL,osPriorityNormal是该任务的优先级,第二个NULL是句柄。
2025-02-20 22:12:55
853
原创 微机原理学习——汇编指令学习
P0口的场效应管T2一端接地,一端与外部引脚相连,由P0的锁存器控制,当给锁存器写1时,它和地断开,写0时和地相连,所以写零时读到的总是低电平。在指令中直接写出来的操作数,就叫立即数,类似C语言中“a = 4”语句中,4就是立即数,直接写出来,不用寻找地址的数称为立即数。当寄存器中存放的是操作数的地址,也就是先从寄存器中读取操作数的地址,在根据该地址去找操作数。该指令不会改变DPTR的值,常常用于查表,DPTR作为表头,A作为偏移量,即表格的第一格开始后移A位,改变A的值就可以查表格中不同位置的内容。
2024-09-28 21:35:52
999
原创 STM32学习——DMA
DMA)直接存储器存取。CPU作为计算机的大脑,像数据传输这种简单,重复性高的工作交给CPU来做就显得有些浪费,所以DMA就来充当这一角色,DMA可以在硬件外设和存储器之间,或者是存储器与存储器之间进行高速数据转运,不需要CPU的介入,节省了cpu资源。在STM32中,有DMA1和DMA2两个,其中DMA1有7个通道,DMA2有5个通道,但是根据芯片型号的不同,DMA资源也有区别,具体还要参考手册。
2024-09-26 21:47:10
1992
原创 STM32学习——ADC
ADC)模拟数字转换器,可以将引脚上连续变换的模拟电压转换为数字变量储存,建立了模拟量与数字量之间的桥梁。在我所使用的STM32中,是一个12位逐次逼近型ADC,转换时间最快为1us。12位逐次逼近型ADC是什么意思?12位,就是ADC转换的精度,范围,也就是2^12。主次逼近型,这是他的工作原理,ADC是将输入值与一个标准值比较,标准值比输入值大,就减小标准值,比输入值小,就增大标准值。
2024-08-23 14:45:38
827
原创 STM32学习——定时器编码器接口
•编码器接口编码器接口是定时器为编码器专门设置的通道,可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度。正交信号:两个信号除了在相位上相差90度,其他没有区别。每个高级定时器和通用定时器都只有一个编码器接口,以通用定时器为例,编码器接口占用了通道1和2,用来接受编码器产生的正交信号。二、编码器接口的工作模式具体内容表中很详细。
2024-07-06 22:14:26
338
原创 STM32学习——输出比较和输入捕获
•OC)输出比较。输出比较只在通用定时器和高级定时器中存在。以通用定时器的框图来介绍输出比较。看图中时基单元下方一大堆东西,也就是CNT计数器下方,是捕获/比较寄存器,这个寄存器是输出比较和输入捕获共用的,两种功能在同一时刻只能选择一种执行。先将其用作输出比较来看,输出比较最重要的一个功能就是产生PWM波。这里先有个概念。输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波。
2024-07-06 21:58:25
3214
原创 STM32学习——TIM定时器(1)
基本定时器作为三类定时器中最简单的定时器,掌握其结构可以为其他定时器的学习打下基础。基本定时器功能:定时中断,主模式触发DAC。注意基本定时器只有内部时钟一种计时源。另外,这三个寄存器,PSC预分频器,计数器,自动重装载寄存器都是16位的,且这三者的组合称为时基单元。CK_PSC与内部时钟CK_INT直接相连接,内部时钟为72MHZ,通过PSC预分频器。
2024-07-04 20:23:56
2277
原创 STM32学习——外部中断EXTI
*GPIO函数用处:GPIO_DeInit GPIO复位GPIO_AFIODeInit AFIO复位GPIO_PinLockConfig 锁定GPIO的配置GPIO_EventOutputCmd 这两个是事件输出配置的函数,用到再说GPIO_PinRemapConfig 引脚重映射GPIO_EXTILineConfig 配置AFIO的数据选择器,选择那一路做中断引脚GPIO_ETH_MediaInterfaceConfig 与以太网有关,现阶段接触不到*//*EXTI函数用处。
2024-06-20 16:44:53
1726
原创 STM32学习——GPIO
GPIO:通用输入输出口。与51中的IO口功能大致一样。32中GPIO引脚的电平为0~3.3V,部分特殊的引脚(在外设清单中标有FT的IO口)可以忍受5V电压。通过IO口输出的电压只有3.3V,但是输入IO口的电压,标有FT的可以忍受5V。GPIO在32上挂载在APB2总线上。
2024-06-18 14:12:45
864
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人