自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 单片机调试笔记

查看全局变量排布:采样大数组(gPosSampleBuf / spiAngleBuf)内存排布在 hspi1 前面。现象:系统运行完获取spi存放至数组后,出现spi读取卡死现象,SPI寄存器操作 HardFault 死机。于是,关闭SPI中断、停止DMA、软件关闭SPI、复位SPI状态机,允许 index=29 继续自增,没有预留安全边界,必然越界。设句柄hspi1是全局变量,正常不会自己变,只可能是。index=29 时,485判断条件成立。越界数据直接覆盖后面全局内存 →。

2026-08-07 16:11:37 189

原创 USB-HID学习笔记

USB协议详解:传输机制与设备管理 摘要:USB采用主从架构,支持多种传输速度(低速1.5Mbps/全速12Mbps/高速480Mbps)。系统通过分层集线器最多可连接127个设备,采用4线电缆传输(电源/差分数据/地线)。协议定义了4种传输类型:控制传输(设备枚举)、批量传输(大容量数据)、中断传输(实时交互)和等时传输(音视频流)。设备通过描述符体系(设备/配置/接口/端点)向主机报告能力,其中端点0为强制控制端点。USB2.0新增PING机制优化批量传输效率,OTG规范通过ID线实现主从角色切换。数据

2026-04-14 18:46:08 463

原创 MOS管学习笔记

美系:英飞凌(Infineon)、IR((International Rectifier),威世,ST,AOS,安森美,仙童,TI ,PI等;日系:东芝,瑞萨,ROHM罗姆等;韩系:美格纳,KEC,AUK,森名浩,信安,KIA;国产台系:ANPEC,CET,友顺UTC;国产:吉林华微电子股份有限公司,扬州扬杰电子科技股份有限公司;

2026-02-25 09:19:43 242

原创 常见代码接口函数

字节转数组(大端在前)

2026-01-08 11:46:30 132

原创 PCB笔记

电容连实铜,底层铺铜元器件少不被割裂,保证底层的完整性信号回地路径顺畅,干扰少()网络GND,软板用的多,他的弯折能力好,网格铜可以防止过热,防止起泡,热传递差。网格铜线宽设置不要小于板厂加工最小线宽,格的大小。如何使用cutout设置禁止铺铜区域。实心铜和网格铜特点对比。

2025-10-26 10:48:42 183

原创 FreeRTOS小记

单片机上电之后,内核复位,获取MSP的值(获取PC值);接着创建开始任务,完成后,调用多任务调度函数,启动多任务函数,开始运行(优先级/时间片)进行。相较于裸机开发,RTOS的核心在于CPU资源的调度,把任务拆解多个独立模块,看起来并发运行;当一个互斥信号量正在被一个低优先级的任务持有时, 如果此时有个高优先级的任 务也尝试获取这个互斥信号量,那么这个高优先级的任务就会被阻塞。实现上下文切换,原因是:PendSV 的优先级可配置为最低,确保在其他中断处理完成后再执行切换,避免打断紧急操作。

2025-10-12 21:19:30 865

原创 TCP/MQTT简单介绍

服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,由于在半关闭状态,服务器很可能又发送了一些数据,此时,服务器就进入了 LAST-ACK(最后确认)状态,等待客户端的确认。客户端收到服务器的确认请求后,此时,客户端就进入 FIN-WAIT-2(终止等待 2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发 送的最后的数据)。TCP 客户端是创建传输控制块 TCB,然后向服务器发出连接请求报文,此时,TCP 客户端进程进入了 SYN-SENT(同步已发送状态)状态。

2025-10-11 21:54:09 960

原创 FreeRtos面试问题合集

RTOS,即实时操作系统(Real-Time Operating System),是一种专门为实时应用设计的操作系统。它旨在满足严格的时限要求,确保在限定的时间内完成任务,并对外部事件作出响应。RTOS在嵌入式系统开发中非常重要,广泛应用于各种需要高可靠性和精确时间控制的场景中。RTOS的特点及时响应:RTOS能够保证在预定的时间内对外部事件作出响应,这是其最核心的特点。任务调度:RTOS提供了高效的调度算法来管理多个任务(线程)的执行顺序,以满足系统的实时性要求。

2025-09-18 21:00:43 2044

原创 数据结构学习

栈是限定仅在表尾进行插入或删除操作的线性表栈的表尾端称为栈顶,表头端称为栈底,不包含元素的空表称为空栈栈的修改顺序是后进先出栈的基本操作是进栈和出栈。

2025-08-05 14:54:00 884

原创 STM32-FSMC

如果外部存储器的宽度为 16 位, FSMC 将使用内部 的 HADDR[25:1] 地址来作为对外部存储器的寻址地址 FSMC_A[24:0],相当于右移了一位。HADDR[27:26]的设置,是不需要我们干预的,比如:当你选择使用Bank1 的第三个区,即使用 FSMC_NE3 来连接外部设备的时候,即对应了HADDR[27:26]=10,我们要做的就是配置对应第 3 区的寄存器组,来适应外部设备即可。可以先在总线上面写入数据,然后在跳变 WR,以保证当读取的时候,总线上面的数据是稳定的。

2025-07-24 18:50:21 1017

原创 C语言-C语言基础题

【代码】C语言-C语言基础题。

2025-07-24 18:50:13 163

原创 C语言基础-练习题

【代码】C语言基础-练习题。

2025-07-23 22:00:53 142

原创 c练习-c基础

【代码】c练习-c基础。

2025-07-22 21:54:51 446

原创 STM32-CAN

主函数代码(KEY_UP_PRESS按下切换模式正常模式和回环模式;重新同步PBS1+;的长度为重新同步补偿的宽度:SJW (软件可限制位数)CRC段:校验位15位;开环总线网络:匹配电阻区别;在理想情况下,节点不受限制;差分信号两根线的电压差来代表0,1。闭环总线网络:高速短距离;SS段:同步段,节点与总线时序同步1Tq。PBS2段:用于检测边沿阶位误差2-8Tq。CAN通信:异步通信;RTS段:传播时间段(1-8Tq)IDE:标准数据0;DLC:数据长度4位(0~8)PBS1段:1-8Tq。

2025-07-18 21:24:36 590

原创 STM32-I2C

数据协议层有效性规定:SCL高电平,SDA数据必须稳定;SCL低,SDA允许变化数据;接收端控制SDA来实现,ACK提醒发送方收到低电平;起始信号-主机占用-终止信号(都是主机发)写的时候:先写再移;i2c先传高位在穿低位。

2025-07-17 16:17:23 297

原创 DS18B20温度传感器

【代码】DS18B20温度传感器。

2025-07-17 14:18:16 233

原创 STM32-RTC内部时钟

独立的定时器,RTC模块拥有一组连续的计数的计数器,提供独立时钟日历功能。32位向上计数:HSE,LSE(通常使用),LST。修改计数器的值可重新设置系统当前时间和日期。

2025-07-16 21:55:50 775

原创 STM32-DMA

每个通道都直接连接专用的硬件DMA请求;每个通道都同样支持软件触发;多个请求间的优先权可通过编程设置(很高;中等和低)优先权的设置相等时,由硬件决定(请求0优先于请求1)DMA:用于实现外设与储存器之间或者存储器与存储器之间数据传输的高效性,无需CPU直接操作。硬件阶段-通道编号。特性:12个独立可配置的通道(请求):DMA1:7个通道;实际代码(DMA-USART1外设发送数据)在一个通道中同一时间只能产生一个外设。

2025-07-16 21:28:28 724 1

原创 STM32-ADC内部温度

跟ADC代码差不多;不需要使能引脚时钟;在通道16无引脚(测量温度不准确)

2025-07-11 10:39:03 489

原创 STM32-DAC数模转换

8位或12位单调输出(8位右对齐;12位左对齐右对齐)特性:2个DAC转换器每个都拥有一个转换通道。主函数代码:(按键按下,DAC写入转换值)DAC数模转换:将数字信号转换成模拟信号。双ADC通道同时或者分别转换。

2025-07-11 10:16:54 528

原创 STM32-ADC

18个通道(16个外部通道;配置 ADC 规则通道组的转换顺序和采样时间。主函数代码( PA1连接电位器;ADC模数转换:将模拟信号转换为数字信号。开启软件转换并等待转换完成。

2025-07-10 21:47:35 402

原创 STM32-待机唤醒实验

主函数代码(一定要在初始前增加延时只有在延时期间才能烧录代码)(配置了RTC时钟不是以下步骤看数据手册)

2025-07-09 21:35:35 542

原创 STM32-定时器输入捕获

对输入信号的上升沿下降沿双边沿进行捕获;用于测量输入信号的脉宽、测量PWM输入的频率及占空比。代码实现(在这里也用到了STA来获取现在输入捕获的有没有完成)设置计数器的值(清空计数器)获取定时器通道1的输入捕获值。

2025-07-09 21:20:25 725

原创 STM32-看门狗

5:键寄存器:控制寄存器 0x5555-关闭写保护;0xAAAA-计数递减重装载值给递减计数器;0xCCCC-启动功能。12位递减计数器,递减到0产生复位,如果到0前刷新了计数值,系统不会产生复位也就是喂狗。1:时钟源:来自内部时钟LSI;挂载在APB1总线上,7位递减计数器;主函数代码(按键按下进行喂狗点亮灯)2:预分频器:—PR操控预分频因子。一旦开启无法关闭,复位后才能关闭。4:重装载值 设置溢出时间。6:状态寄存器:硬件相关;

2025-07-09 18:51:01 681

原创 STM32-USART

异步通信:以字符为单位(间隔任意)字符里的数据间隔一定;通常为96-N-8-1(9600波特率,无校验位,8个有效数据位,1位停止位)并行通信:多条数据线同时传递数据,一次性传递过去数据 (抗干扰能力弱)半双工:RX-TX进行时,另一方的RX-TX不能进行,只能进行一个。数据发送:数据寄存器DR-发送寄存器TDR-发送移位寄存器(2)数据接收:移位寄存器-接收数据寄存器RDR-数据寄存器DR(2)全双工:RX-TX进行时,另一方的RX-TX也可以进行。串行通信:一位一位进行传输(传输线少,成本低)

2025-07-08 18:05:29 770

原创 STM32-定时器PWM输出比较

在递增模式下,当CNT计数小于设置的CCR的值时,此时输出的为有效电平,高于CCR为无效电平;在递减模式下,当CNT计数大于于设置的CCR的值时,此时输出的为无效电平,低于CCR为有效电平;//设置 TIM3 通道 2 的比较值(CCR2 寄存器),直接控制 PWM 信号的占空比。占空比:有效电平占据周期的比例。

2025-07-08 12:44:04 452

原创 STM32-定时器

/使能TIM4时钟。定时器:有4个独立通道:输入捕获;输出比较PWM生成;可通外部信号控制定时器(TIMx-ETR);void TIM4_IRQHandler(void)【每个不一样可以去启动文件查看】支持针对定时的增量(正交)编码器、霍尔传感器电路。代码实现(500msLED电平翻转一次)

2025-07-08 12:43:37 463

原创 STM32-外部中断

指定NVIC_IRQChannel对应的抢占优先级,值越小优先级越高, 抢占优先级决定了当多个中断同时发生时的响应顺序。//NVIC_IRQChannel对应的子优先级(响应优先级)当多个中断的抢占优先级相同时,子优先级决定响应顺序。//NVIC_IRQChannel定义的中断通道。外部中断有20个线;

2025-07-08 11:54:08 573

原创 STM32-中断

中断分为两路:12345用于产生中断;

2025-07-08 10:35:39 285

原创 STM32-SysTick滴答定时器

void SysTick_CLKSourceConfig(uint32_t SysTick_CLKSource)//配置SysTick定时器的时钟源。SysTick系统定时器(滴答定时器)是一个递减定时器,24位向下递减。- 地址:0xE000_E010。- 地址:0xE000_E014。- 地址:0xE000_E018。- 地址:0xE000_E01C。

2025-07-07 22:58:46 460

原创 超声波传感器-30

初始化定时器还有nvic,记得使能定时器中断,开启开关,在中断函数中我只是用来计数了,查询update标志位,计数加一然后清楚标志位,接着就开始接受距离函数,首先往tring发送大于10us的高电平(发送的20us),然后等线echo返回高电平在这期间就可以通过计数器来计数,等待echo接收完成计数结束,来获取这段时间就是飞行的距离,最后再用数组来计算5次平均值。还可以用定时器的输入通道来获取飞行时间,需要对定时器2的输入捕获通道1初始化上升沿触发和通道2下降沿触发;

2025-07-01 22:47:51 323

原创 嵌入式学习-Day14

当 I1 = I2+Ib,I2 >> Ib时,此时可以认为I1约等于I2了,所以VCC = I1R*Rb2+ I2 *Rb1;Urb1 = R1*VCC/Rb1 +Rb2(串联分压:电流相等U = U1 +U2,U1 = U*(R1/R1+R2);输出端:Ie = Ic + Ib,当Ic变大时,Ie也变大,Ure就会变大,UE变大,Ube = UB - UE,UE变大Ube就会变小, T(温度升高)→Ic上升→Ie上升→UE上升→Ube下降→Ib下降→Ic下降。二极管:正向偏置导通,反向偏置截止。

2025-06-13 21:47:25 208

原创 嵌入式学习-Day13

【代码】嵌入式学习-Day13。

2025-06-12 21:15:45 237

原创 嵌入式学习-Day12

电阻混联:在电路中包含了复杂的串联,混连,还有一些特殊的结构,这样的情况下需要特殊的方法:标点法(看看电阻的两个结点分别对应那个电压标点重新连线)受控电源(非独立电源):电压或电流的大小和方向不是给定的时间函数,而是受电路中某个地方的电压或电流控制的电源,称受控源。理想电流源:其暑促电流总能保持定值或一定的时间函数,其值与它的两端电压u无关的元件叫做理想电流源。任何一个复杂的电路,向外引出两个端钮,且从一个端子流入的电流等于从另一个端子流出的电流;要求的电阻等于所有电阻的和除以要求的电阻的两边电阻。

2025-06-11 21:48:57 1809

原创 嵌入式学习-Day11

在main函数调用:首先头结点指针变量获取头节点地址,if查看有没有分配到内存空间,接着定义结构体类型指针(局部变量),for循环遍历获取数据,将从FindTempHumiSensor()的函数获取来的数据赋值给node指针变量,查询有没有为空,如果为空跳过这轮循环,接着调用添加节点函数将头指针变量传入获取头节点地址,和节点地址,在AddSensor()函数中进行节点的地址传递。i采用相同的参考方向,方向一致成为关联参考方向,反之非关联参考方向。因为是指针类型,固定分配4字节,为什么结构体能嵌套自己?

2025-06-10 21:01:45 693

原创 嵌入式学习-Day10

接着为value分配动态内存(再次期间把上一次的全局变量g_cf...)改为局部变量指针类型定义在wifi函数中,接着定义动态分配内存代码,用if查看是否分配到内存,接着调用获取wifi数据函数recreive....函数如果不等于0,是因为value分配内存失败了,所以要在调用之前释放掉cfgParm的内存,以便下次调用,接着利用回调函数再次查看地址传输数据,所以回调函数后也要释放内存,使用free()释放动态内存,在底层库会给这段打上标签,表示可以再次被使用分配空间。c语言学习day10。

2025-06-09 21:24:30 655

原创 嵌入式学习-Day9

基于对函数指针和回调函数的学习,来在空气检测质量中模拟上位机发出温度校准,现在写出WIFI模块模拟发出校准系数,并且通过回调函数来进去WIFI获得数据然后再改变temp的值(假设这个wifi模块的函数不能被修改)(*PSum)要带()?首先要写出有关WIFI的数据结构体里面定义了传感器的校准参数是温度校准,实际传感器的参数,长度。在main函数中就可以写出要对WIFI实现什么功能,有刚才定义的函数指针可以传递这个函数的地址。获取WIFI的数据和wifi和主函数的连接然后进行wifi的数据传递。

2025-06-08 21:00:27 427

原创 嵌入式学习-Day8

数组名称buffer保存了数组的首地址,可以向指针变量一样,直接读取地址,不像结构体等其它类型的变量,需使用&uint8_t voltage_ok : 1;// 位0: 电压正常 (1=正常)uint8_t temp_ok : 1;// 位1: 温度正常 (1=正常)uint8_t comm_ok : 1;// 位2: 通信正常 (1=正常)// 气压值 (0.1hPa)// 温度值 (0.1°C)// 湿度值 (0.1%)p++//指针变量+1,并不是地址值+1,而是按照定义数据类型占的字节+

2025-06-07 22:29:57 1927

原创 嵌入式学习-Day7

对于某些硬件平台,当访问int_32,float,double这些数据类型时,4字节访问数据的代码指令只能按照4字节对齐访问,也就是成员地址必须是4的整数倍。//打印结果 4 4。成员列表(成员列表并不是变量,在数据类型声明中不会分配空间,只有定义结构体变量时,才会为成员列表中的成员分配内存空间)应用案例:在之前代码的基础上,温度传感器还具备检测输出温湿度功能,现在需要管理传感器的数据包括ID,温度,湿度。:和枚举类型一样,是用户自定义的数据类型,可以使用一个变量来描述事物的多样性,便于数据的管理。

2025-06-06 21:55:15 677

原创 嵌入式学习-Day6

给一个数组NUMS,数组中有2n个元素,按照[x1,x2,x3.....xn,y1,y2,y3....yn]的格式排列,请将数组按照[x1,y1,x2,y2,....xn,yn]格式重新排列。,可以在tem的c文件中写入一个获取外部校准的函数的变量,届时,在主函数借用两个函数就能完成传递,首先定义一个。模拟获取co2,pm2.5的数值,并对co2的浓度,pm2.5的浓度做出划分,详情划分在代码注释。接着对温度求和(这里用到了宏定义,温度小于最小的值,返回最小的值,大于最大的值返回最大的值)

2025-06-05 21:58:08 997

空空如也

空空如也

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

TA关注的人

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