- 博客(48)
- 收藏
- 关注
原创 FreeRTOS移植
其中portable文件夹中我们只需要上述图中的三个。在上述讲过的DEMO文件中寻找并复制到自己的工程文件。别忘了添加头文件路径!:支持多种芯片架构,支持多种不同芯片型号。在自己工程下新建FreeRTOS文件夹。(用来裁决一些功能,以及API使能)然后将刚刚所说的文件粘贴进去。
2025-07-10 22:41:50
311
原创 FreeRtos 简介
调度器就是使用相关的调度算法来决定当前需要执行的哪个任务FreeRTOS一共支持三种任务调度方式:抢占式调度:主要针对优先级不同的任务,优先级高的任务可以抢占优先级低的任务时间片调度:主要针对优先级相同任务,任务调度器会在每一次系统时钟节拍到的时候切换任务协程式调度:当前执行任务将会一直运行,同时高优先级的任务不会抢占低优先级任务(不再更新)
2025-07-03 10:52:25
342
原创 C语言再学习—内存,链表
/ 正确定义结构体char value;} Node;定义了一个名为spy的结构体类型,并使用typedef为它创建了两个别名。char value;:存储一个字符串:指向同类型结构体的指针,用于链表结构中连接下一个节点// 为struct spy创建别名spy typedef ...
2025-07-01 19:22:23
854
原创 STM32 CAN 单个设备回环通信及三个设备互相通信
* 恢复缺省配置,把CAN配置到默认的复位状态 *****//* 初始化和配置函数 *********************************///CAN初始化//过滤器初始化//赋一个默认值//配置CAN2的起始滤波器号,互联型设备用的//调试时的冻结模式//用于使能TTCM模式中的TGT位/* 发送相关函数 *********************************************************/
2025-06-26 16:38:34
251
原创 STM32 CAN外设
若是接三个CAN,就有三个终端电阻了。但起始要求是要两个的。有什么影响呢?由于不是用的120欧的双绞线,所以都是不匹配的。同样的收紧的力会更强,张开所需的力更大,功率会更大,3个还在可承受范围之内。
2025-06-24 14:46:04
1050
原创 STM32 CAN位同步、错误处理
为了灵活调整每个采样点的位置,使采样点对齐数据位中心附近,CAN总线对每一个数据位的时长进行了更细的划分,分为同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)和相位缓冲段2(PBS2),每个段又由若干个最小时间单位(Tq)构成。注:SJW = 1~4Tq,SJW是补偿的最大限值,例如有2TQ的延迟,此时给SJW为3,则只会补偿给时序段两个,而不是SJW的3个。PBS1、PBS2(相位缓冲段):确定采样点的位置,采样点会在这两个之间,通过调节这两个的长度(还有PTS),就可以调节采样点的位置。
2025-06-22 16:43:05
1067
原创 STM32 PID控制
开环控制与闭环控制:开环:写出了代码,并且执行完之后,对它就不管不顾,对它当前的状态也不了解。输出东西给目标,同时获取它的反馈,控制器直到被控对象的执行状态,可以根据反馈修改输出值。误差:目标值—实际值PID输出值(最后一个):Ki是Kp除以Ti,Kd是Kp乘Td。out(t)这三项分别叫做:P比例、I积分、D微分。Kp、Ki、Kd是每项的权重。三个K是在程序中直接给的,是PID调节参数重要调节的值。假设你在驾驶汽车:参数调整口诀。
2025-06-10 19:37:28
337
原创 Altium Disigner(16.1)学习-原理图绘制以及必要操作
点击ctrl+s保存,同样要改名字,方便查找。之后就可以点击放置啦注意:最好是自己存在一个自己的文件夹里面,然后直接添加库文件(同上面的添加方法一样)这样原理图绘画就基本没有什么问题了。
2025-06-01 14:43:56
1152
原创 STM32 RTC实时时钟\BKP备份寄存器\时间戳
基本结构:橙色部分为后备区,由VBAT供电,主电源有电时由主电源供电。BKP有四个寄存器,如上图。首先配置RTCCLK时钟来源,从绿色部选一个。之后通过预分频器对时钟进行分频。余数寄存器是一个自减计数器,存储当前的计数值;从中寄存器时技术目标,决定分频值。之后配置32位计数器,可以进行日期时间的读写。一些操作注意事项:开启PWR和BKP的时钟、实验PWR使能BKP和RTC的访问调用等待同步函数调用一个等待的函数六、代码部分//恢复缺损配置,手动清零。
2025-05-26 19:12:06
877
1
原创 STM32 SPI通信(硬件)
STM32内部集成了硬件SPI收发电路,可以由硬件自动执行时钟生成、数据收发等功能,减轻CPU的负担可配置8位/16位数据帧、高位先行/低位先行时钟频率: fPCLK / (2, 4, 8, 16, 32, 64, 128, 256)支持多主机模型、主或从操作可精简为半双工/单工通信支持DMA兼容I2S协议STM32F103C8T6 硬件SPI资源:SPI1、SPI2。
2025-05-23 17:27:19
695
原创 STM32 SPI通信(软件)
注:上面有横线的都是低电平有效(1)和(2)描述的是存储器规划示意图,(2)被划分为若干个块“Block”,其中每一块再划分为若干个扇区(1)“Sector”。对于每个扇区又可以分为很多页 “Page”。在(2)里面,以64KB为一个基本单元,分了128块(因为一共8MB)。在(1)里面,是对于块的更细的划分,以4KB为一份,分了16份。在写入数据时,还会有个更细的划分Page,256字节为一份。(7)为SPI控制逻辑,接收指令和数据等。
2025-05-23 14:21:16
1623
原创 C语言—再学习(结构体)
一种线性数据结构,它由一系列节点(Node)组成,这些节点通过指针(或引用)连接成一个链条。与数组不同,链表的节点在内存中不需要连续存储,数据的逻辑顺序通过节点之间的指针来维持。链表有一个”头指针“变量,图中是head表示,它存放着一个地址,该地址指向一个元素。链表中每个元素称为”节点“。可以看到head指向第一个元素,第一个元素有指向第二个元素......直到最后一个元素,该元素不在指向其它元素,它称为”表尾“,它的地址部分放一个“NULL”,表示空地址,链表到此结束。节点至少包含两部分:数据域。
2025-05-17 20:21:29
1063
原创 C语言—再学习(指针)
若先后把它们分配在2000开始的存储单元中,&a和&b的信息完全相同吗?通过指针,程序可以直接访问和操作内存中的特定位置,这使得程序员能够更灵活地管理内存,实现对数据的高效访问和修改。首先通过变量名找到对应的地址,从该4个字节中按照整型数据的存储方式读出整型变量 i 的值,然后按十进制整数格式输出。并建立了对应的变量名和地址的对应表。数据的分配是分类型的,对不同类型的数据,在内存中分配的存储单元大小,和存储方式是不同的。执行时,把键盘输入的值送到地址为2000开始的整型存储单元中。之外,还需要有改数据的。
2025-05-14 13:21:49
243
原创 C语言—再学习(数据的存储类别)
extern 也可以用于声明外部函数,当一个函数在一个源文件中定义,而在另一个源文件中调用时,可以使用 extern 声明函数,虽然在实际应用中,函数声明时 extern 关键字。:当一个变量在一个源文件中定义,而在另一个源文件中使用时,可以使用 extern 关键字来声明该变量。C的存储类别包括4种:自动挡(auto)、静态的(static)、寄存器的(register)、外部的(extern)。自动变量的作用域仅限于定义它的函数或代码块,当函数执行结束时,自动变量的生存期结束,其。
2025-05-13 20:16:01
460
原创 STM32 USART串口
/恢复缺损配置//初始化//结构体初始化//结构体,用来配置同步时钟输出的,包括时钟是不是要输出,时钟的极性相位等参数//使能//中断输出使能//开启USART到DMA的触发通道//发送数据//接收数据//获取标志位状态//清除标志位//获取中断状态//清除中断挂起位/*** 函 数:串口初始化* 参 数:无* 返 回 值:无*//*开启时钟*///开启USART1的时钟//开启GPIOA的时钟/*GPIO初始化*/
2025-05-05 09:45:21
723
原创 STM32 TIM编码器接口
Encoder Interface 编码器接口编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度每个高级定时器和通用定时器都拥有1个编码器接口两个输入引脚借用了输入捕获的通道1和通道2使用场景:使用定时器的编码器接口,再配合编码器,就可以测量旋转速度和旋转方向。一般应用于电机控制的项目上,使用PWM驱动电机,再使用编码器测量电机的速度,再用PID算法进行闭环控制。
2025-04-24 21:12:26
516
原创 STM32 TIM输出比较(控制舵机和直流电机)
【1】PWM(Pulse Width Modulation)脉冲宽度调制【2】在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获得所需要的模拟参量,常应用于电机控速等领域【3】PWM参数: 频率 = 1 / TS 占空比 = TON / TS 分辨率 = 占空比变化步距。
2025-04-22 15:06:17
546
原创 51单片机DS1302
DALLAS公司推出的。采用SPI三线接口与MCU进行同步通信,并可采用突发方式一次传送多个字节的时钟参数和RAM数据。附加31字节的静态RAM。简单来说,DS1302可以理解为一个电子手表,里面带有一个31字节的RAM内存。在DS1302中有两块存储器:日历时钟寄存器和静态RAM存储器。前者用于记录实时时间,后者用于记录其他数据。
2025-03-15 14:04:24
299
原创 C语言 数组、指针
例:char ch [5] = {'a','b','c','d','e'};//定义了一个数组名为score的一维数组,由40个元素构成,每个元素的类型都是int。<类型标识符> *<标识符> //表明<标识符>是存放<类型标识符>类型变量的地址变量。其中元素的取用:对于第一个元素的取只有,score[0]和score[1],其中两个分别是。//ptr是被说明的对象,*表示ptr的类型是指针类型。格式:<类型说明符> <数组名> <常量表达式>数组的访问:<数组名> <下标表达式>
2025-03-13 20:14:57
517
原创 C语言运算符
(加)、-(减)、*(乘)、/(除)、%(取余)、++(加一)、--(减一): #若除数和被除数都是整数,则只取整数部分。如6 / 4 = 1#若除数和被除数中只要有一个是实数,则结果是double型,如6 / 4.0 =1.5:求出%两侧的整型数据整除后的余数,如6 % 4 = 2,因为6除以4的余数是2既可以做前缀,也可以做后缀#++i,先使 i 加一,再取 i 的值#i++,先取 i 的值,再使 i 加一注: #要求%的操作数必须是整型。# /和%的操作数不能为0。
2025-03-12 13:23:39
336
原创 STM32TIM定时中断
.TIM(Timer)定时器<.定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断<.16位计数器预分频器自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时<.不仅具备基本的定时中断功能,而且还包含等多种功能<.根据复杂度和应用场景分为了高级定时器(TIM1/TIM8)、通用定时器(TIM2/TIM3/TIM4/TIM5)、基本定时器(TIM6/TIM7)三种类型。
2025-03-05 20:43:31
430
原创 STM32 EXTI外部中断
EXTI(Extern Interrupt)外部中断EXTI可以监测指定GPIO口的电平信号,当其指定的GPIO口产生电平变化时,EXTI将立即向NVIC发出中断申请,经过NVIC裁决后即可中断CPU主程序,使CPU执行EXTI对应的中断程序支持的触发方式:上升沿/下降沿/双边沿/软件触发支持的GPIO口:所有GPIO口,但相同的Pin不能同时触发中断(用pinA0,就不可以用pinB0)16个GPIO Pin,外加PVD输出、RTC闹钟、IUSB唤醒、以太网唤醒触发响应方式:中断响应/事件响应。
2025-03-04 20:06:38
668
原创 51单片机串口通信
并行:数据的各位同时发送或接收,每个数据为使用一条导线。串行:数据一位接以为地顺序发送或接收串行通信有SPI、IC、UART等多种,最常见最通用的是指UART,大多数情况下,串口通信指的就是三种。RS485总线是半双工的通信制式。:需要使用同一个时钟,以数据块为单位传送数据。:每个设备都有自己的时钟信号,通信中双方的波特率要保持一致,以字符为单位进行数据帧传送,一次传送一个帧。
2025-02-28 08:10:52
295
原创 STM32 GPIO输出
GPIO(General Purpose Input Output)通用输入输出口*可配置为8种输入输出模式*引脚电平:0V~3.3V,部分引脚可容忍5V*输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器模拟通信协议输出时序等*输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。
2025-02-25 08:39:16
328
原创 51单片机定时器与计数器
(1)有两个16位可编程定时/计数器——T0和T1(2)既可以对系统时钟计数实现定时,也可以对外部信号计数实现计数功能(3)定时器计数器有很多种工作方式,T0有4种工作方式,T1有3种工作方式。(4)定时计数时间到时溢出,使相应的溢出位置位,可以通过查询或者中断方式来处理。
2025-02-23 19:09:52
811
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人