自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [FreeRTOS- 野火] - - - 空闲任务

/ main.c文件 StackType_t IdleTaskStack [ configMINIMAL_STACK_SIZE ];// FreeRTOSConfig.h文件// FreeRTOSConfig.h文件 # define configMINIMAL_STACK_SIZE((unsigned short) 128)// FreeRTOSConfig.h文件 # define configMINIMAL_STACK_SIZE((unsigned short) 128)unsigned。

2025-07-13 00:19:50 475

原创 ARM处理器工作模式

未定义模式(Undefined Mode,UND)是ARM架构中的一种特权模式,专门用于处理未定义指令异常。未定义模式具有完全的访问权限,可以访问和操作所有系统资源。当处理器执行非法指令或特权指令时,会自动切换到未定义模式,执行相应的异常处理程序。未定义模式的自动切换和错误处理机制使得系统能够及时响应和处理非法指令,确保系统的稳定性和安全性。1.特权模式未定义模式是特权模式,具有完全的访问权限,可以访问和操作所有系统资源。这种模式下的代码可以执行任何操作,包括修改系统状态、访问硬件寄存器等。

2025-06-05 23:32:38 1218

原创 [FreeRTOS- 野火] - - - 临界段

临界段的核心:对 BASEPRI 寄存器进行操作。进入临界段:更改 BASEPRI 寄存器的值,屏蔽高于该值的中断。退出临界段:将 BASEPRI 寄存器的值改为0,不屏蔽任何中断。

2025-05-30 23:38:57 918

原创 辉芒微离线烧录器“文件格式错误”问题解决

遇到以上分析和解决过程,我们成功解决了辉芒微离线烧录器“文件格式错误”的问题。在实际开发过程中,遇到类似问题时,可以通过以下步骤进行排查和解决:1、单独测试固件:分别测试每个固件,确定单个固件是否可以正常导入和烧录。2、检查地址冲突:使用工具查看固件的hex文件,检查是否存在地址冲突。3、调整或合并固件:根据实际情况,调整数据存放位置或合并固件,避免地址冲突。希望以上经验能为遇到类似问题的开发者提供参考。

2025-05-09 19:32:06 969

原创 [FreeRTOS- 野火] - - - 一.列表与列表项

* 节点结构体定义 *//* 辅助值,用于帮助节点做顺序排列 *//* 指向链表下一个节点 *//* 指向链表前一个节点 *//* 指向拥有该节点的内核对象,通常是TCB *//* 指向该节点所在的链表 *//* 节点数据类型重定义 */TCB:任务控制块。/* mini节点结构体定义,作为双向链表的结尾因为双向链表是首尾相连的,头即是尾,尾即是头 *//* 辅助值,用于帮助节点做升序排列 *//* 指向链表下一个节点 *//* 指向链表前一个节点 */

2025-03-02 16:27:30 353

原创 [数据结构] - - - 链表

/ 定义单链表的节点结构体int data;// 数据域// 指向下一个节点的指针} Nod。

2025-03-02 16:25:03 1347

原创 [STM32 - 野火] - - - 固件库学习笔记 - - - 十六.在SRAM中调试代码

在RAM中调试代码是一种常见的嵌入式开发技术,尤其适用于STM32等微控制器。它的核心思想是。这种方法在开发过程中具有显著的优势,但也有一些限制。

2025-02-19 23:31:12 1424 2

原创 [STM32 - 野火] - - - 固件库学习笔记 - - - 十五.设置FLASH的读写保护及解除

1、解除 FLASH_CR 寄存器的访问限制。先往 FPEC 键寄存器(FLASH_KEYR) 中写入 KEY1 = 0x45670123。再往 FPEC 键寄存器(FLASH_KEYR) 中写入 KEY2 = 0xCDEF89AB。2、解除对选项字节的访问限制。先往 闪存 OPTKEY 寄存器(FLASH_OPTKEYR) 中写入 KEY1 = 0x45670123。再往 闪存 OPTKEY 寄存器(FLASH_OPTKEYR) 中写入 KEY2 = 0xCDEF89AB。

2025-02-17 23:28:51 1553

原创 [STM32 - 野火] - - - 固件库学习笔记 - - - 十四.读写内部FLASH

存储程序代码:在 STM32 芯片内部有一个 FLASH 存储器,它主要用于存储代码,我们在电脑上编写好应用程序后,使用下载器把编译后的代码文件烧录到该内部 FLASH 中。由于 FLASH 存储器的内容在掉电后不会丢失,芯片重新上电复位后,内核可从内部 FLASH 中加载代码并运行。存储关键信息除了通过外部工具(如下载器)进行读写操作外,STM32芯片在运行时也能直接对内部FLASH进行读写操作。

2025-02-14 00:01:18 1191

原创 如何在C语言项目中优雅地使用结构体

假设我们开发一个脉冲测量输入捕获模块,需要记录捕获的相关信息。我们可以在.h文件中定义一个定时器输入捕获结构体。// GeneralTimer.h文件// 定时器输入捕获用户自定义变量结构体声明// 捕获结束标志位// 捕获开始标志位// 捕获寄存器的值// 自动重装载寄存器更新标志在这个文件中,我们定义了一个名为 TIM_ICUserValueTypeDef 的结构体,它包含四个字段:捕获结束标志位、捕获开始标志位、捕获寄存器的值和自动重装载寄存器更新标志。通过这种方式,我们可以在.h文件。

2025-01-31 12:49:15 383

原创 [STM32 - 野火] - - - 固件库学习笔记 - - -十三.高级定时器

1、高级定时器可以向上/向下/两边计数,还独有一个重复计数器RCR。两边计数:例如计数器从0累加计数到ARR的值,再从ARR的值递减至0,再累加到ARR,循环这个过程。2、有4个GPIO,其中通道1~3还有互补输出GPIO。3、时钟来自PCLK2,为72M,可实现65536分频。基本定时器、通用定时器的时钟来自PCK1。PWM:脉冲宽度调制。作用:在具有惯性的系统中,可以通过对一系列脉冲的宽度进行调制,来等效地获取所需要的模拟参量,常应用于电机控速等领域。

2025-01-29 19:24:06 1559

原创 PWM频率测量方法

测量PWM(脉宽调制)信号的频率是嵌入式系统中的常见需求,尤其是在电机控制、LED调光、传感器信号处理等场景中。与。

2025-01-28 15:58:34 1069

原创 [STM32 - 野火] - - - 固件库学习笔记 - - -十二.基本定时器

STM32 中的定时器(TIM,Timer)是其最重要的外设之一,广泛用于时间管理、事件计数和控制等应用。

2025-01-25 14:25:29 1269

原创 [STM32 - 野火] - - - 固件库学习笔记 - - -十一.电源管理系统

电源管理系统是STM32硬件设计和系统运行的基础,它不仅为芯片本身提供稳定的电源,还通过多种电源管理功能优化功耗、延长电池寿命,并确保系统的可靠性和稳定性。

2025-01-23 14:16:08 1608

原创 读-改-写操作

读-改-写”(Read-Modify-Write,简称RMW)是一种常见的操作模式,它通常用于需要更新数据的场景。这个模式包含三个基本步骤:1.读(Read):首先读取当前的数据。2.改(Modify):根据需要对数据进行修改。3.写(Write):将修改后的数据写回原来的位置。

2024-07-01 23:09:41 2659

原创 WDG看门狗

WDG是看门狗定时器(Watchdog Timer)的缩写,它是一种用于计算机和嵌入式系统中的,用来检测和恢复系统故障。看门狗就像是一个忠诚的宠物狗,它时刻盯着你的程序,确保它们正常运行。如果程序因为设计上的小错误、硬件出了问题,或者受到了外界的干扰,导致程序卡住不动或者乱跑,看门狗就会立刻采取行动,让程序重新启动,防止它长时间处于无响应状态,这样就能保障系统的稳定和安全。简单来说,看门狗就是一个特殊的计时器。它一旦开始计时,就需要程序在规定的时间内给它一个信号,告诉它一切都好。

2024-06-30 22:53:43 1059

原创 【LeetCode】数组——二分查找法

34.在排序数组中查找元素的第一个和最后一个位置链接给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], target = 6。

2024-05-27 23:36:45 1072

原创 【LeetCode】数组——双指针法

双指针法是一种常用的算法技巧,通常用于处理数组或链表中的问题。它使用两个指针,通常一个从数组的开始位置遍历,另一个从数组的末尾位置开始遍历,根据问题的不同,这两个指针可以同时移动,也可以根据条件移动。

2024-05-19 23:43:59 805

原创 [STM32 - 野火] - - - 固件库学习笔记 - - -十.ADC

ADC决定模拟电压的输入量,就是输入范围(默认0~3.3V,具体的输入范围需要根据对应的芯片来确定)。决定外部输入电压之后,电压从通道GPIO输入。其中通道又分成规则通道与注入通道。规则数据寄存器(ADC_SQR),注入序列寄存器(ADC_JSQR):决定我们要使用多少个通道,还有通道转换顺序。开始转换之前,打开输入转换器的电压(ADON)。选择触发源:软件、定时器或外部GPIO。开始转换,转换时间由ADCCLK相关(最高14M,通常配置成12M)。转换的数据放到数据寄存器。

2024-05-08 23:09:35 1843

原创 [STM32 - 野火] - - - 固件库学习笔记 - - -九.SPI

1.通讯引脚其中,SPI1是APB2上的设备,最高通讯速率为36Mbit/s,SPI2、SPI3是APB1上的设备,最高通讯速率为18Mbit/s。实际应用中,NSS引脚一般使用GPIO引脚(配置为推挽输出模式),通过软件进行控制它的电平输出,从而产生起始信号与结束信号。SPI2与SPI3可以作为I2S通讯,这个主要用于传输音频数据。( I2S通讯与SPI通讯类似。注意:如果使用的是SPI3,会占用烧录引脚,这时要进行烧录的话就要按着复位键进行烧录。

2024-04-28 17:56:27 1442

原创 [STM32 - 野火] - - - 固件库学习笔记 - - -八.IIC

A0 ~ A2:地址输入。像上图中,A0~A2都接到GND,故为000WP:Write Protect,写保护。(此引脚为高电平则无法写入数据)NC:No Connect 空引脚。

2024-02-18 16:57:20 1582

原创 Err:Flash Download failed - “Cortex-M0”

最近在使用KEIL软件烧录程序时,提示Err:Flash Download failed - “Cortex-M0”,记录一下解决方法。本文章以MM32F0020BIT芯片为例。

2024-01-20 16:40:28 16639 3

原创 [STM32 - 野火] - - - 固件库学习笔记 - - -七.常用存储器

存储器(Memory)是计算机系统中用于的硬件设备或部件。它在计算机体系结构中扮演着至关重要的角色,负责存储计算机程序和数据,以便在需要时进行读取和写入操作。存储器可以分为多个层次,每个层次具有不同的特性和功能。一些存储器的基本概念:1.主存储器(主内存): 主存储器是计算机系统中用于临时存储正在执行的程序和数据的地方。它是计算机直接访问的存储介质,但在断电时数据会丢失。主存储器的容量通常以字节为单位。

2023-12-06 23:18:54 762

原创 [STM32 - 野火] - - - 固件库学习笔记 - - -六.DMA直接存储器存取

DMA:Direct Memory Access,直接存储器存取。是一种用于在外围设备和内存之间进行数据传输的机制。通常情况下,中央处理(CPU)负责管理数据的传输,但使用DMA可以让外围设备直接访问系统内存,而无需CPU的干预。两个DMA控制器共有12个通道(DMA1有7个通道,DMA2有5个通道),每个通道专门用来管理来自于一个或多个外设对存储器访问的请求。还有一个仲裁器来协调各个DMA请求的优先权。

2023-11-19 23:22:30 2422

原创 [STM32 - 野火] - - - 固件库学习笔记 - - -五.串口通信

串口通信协议可分为物理层与协议层。物理层是硬件部分,规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层是软件部分,主要规定通讯逻辑,统一收发双方的数据打包、解包标准。串口数据包的基本组成:起始位:由1个逻辑0的数据位表示。结束位:由 0.5 、1、 1.5 或2个逻辑1的数据位表示。有效数据:在起始位后紧接着的就是有效数据,有效数据的长度常被约定为5、6、7、或8位。校验位:检测数据是否出错。

2023-11-08 23:33:08 1245

原创 [STM32 - 野火] - - - 固件库学习笔记 - - -四.SysTick——系统定时器

官方详细介绍在 STM32F10xxx Cortex-M3编程手册 - 英文版 4.5 SysTick timer(STK)。

2023-10-08 21:52:13 1414

原创 [STM32 - 野火] - - - 固件库学习笔记 - - -三.EXTI外部中断寄存器

EXTI(External interrupt/event controller):外部 中断/事件 控制器,通常用于微控制器或微处理器上,以便在外部事件发生时触发中断。EXTI的主要目的是允许处理器在需要时执行中断服务程序,以响应外部事件,如按键的按下、松开、传感器状态变化等。外部事件发生(如GPIO口的电平发生变化) -> EXTI产生中断 -> 内核NVIC。

2023-10-04 18:42:01 779

原创 [STM32 - 野火] - - - 固件库学习笔记 - - -二.STM32中断应用总结

NVIC(Nested Vectored Interrupt Controller):嵌套向量中断控制器,属于内核外设,管理着包括内核和片上外设所有外设的中断相关的功能。// 中断使能寄存器// 中断清除寄存器// 中断使能悬起寄存器// 中断清除悬起寄存器// 中断有效位寄存器// 中断优先级寄存器 (8Bit wide)// 软件触发中断寄存器。

2023-10-02 15:39:12 678

原创 [STM32 - 野火] - - - 固件库学习笔记 - - - 一.RCC复位和时钟控制器

RCC:reset clock control 复位和时钟控制器。RCC(时钟部分)主要作用:设置系统时钟 SYSCLK、设置 AHB 分频因子(决定 HCLK 等于多少)、设置 APB2 分频因子(决定 PCLK2 等于多少)、设置 APB1 分频因子(决定 PCLK1 等于多少)、设置各个外设的分频因子;控制 AHB、 APB2 和 APB1 这三条总线时钟的开启、控制每个外设的时钟的开启。

2023-10-02 11:59:46 562 1

原创 【STM32-野火】---学习笔记---八.位带操作——GPIO输入和输出

通过宏定义的形式实现位带操作。

2023-09-18 23:58:34 687

原创 【STM32-野火】---学习笔记---七.GPIO输入——按键检测

上图为。通过上图可知,当按键没有被按下的时候,GPIO 引脚的输入状态为低电平 (按键所在的电路不通,引脚接地),当按键按下时, GPIO 引脚的输入状态为高电平 (按键所在的电路导通,引脚接到电源)。只要我们检测引脚的输入电平,即可判断按键是否被按下。

2023-09-17 19:21:41 843 1

原创 【STM32-野火】---学习笔记---六.GPIO输出——使用固件库点亮LED

上图为。通过这张图我们可以知道R、G、B三个灯的阴极是连接到STM32的GPIO引脚的,只要我们控制 GPIO 引脚的电平输出状态,即可控制 LED 灯的亮灭。

2023-09-17 19:04:39 578 1

原创 【STM32-野火】---学习笔记---五.初识 STM32 标准库

固件库应该包含这几类文件:汇编编写的启动文件、时钟配置文件、外设相关的文件、内核相关的文件、头文件的配置文件、专门存放中断服务函数的C文件。6.专门存放中断服务函数的C文件(方便管理中断函数)5.头文件的配置文件(方便管理头文件)1.汇编编写的启动文件。

2023-09-17 18:49:15 230 1

原创 【STM32-野火】---学习笔记---四.构建库函数雏形

原理:先定义声明一个结构体,结构体中有很多成员,它的类型和成员分布的顺序跟外设寄存器的排列方式一样,我们找到这个外设的基地址(如GPIO_BASE),把这个地址强制类型转换成 GPIO_Typedef 这种结构体类型的指针,这个指针经过强制类型转换,它就指向了一大块内存,这一大块内存里面有很多成员,这些成员跟我们的寄存器是对应的。经过这一步操作后,我们就可以使用结构体的方式来操作所有外设的寄存器了。//寄存器的值常常是芯片外设自动更改的,即使 CPU 没有执行程序,也有可能发生变化。

2023-09-10 22:51:10 314 1

原创 【STM32-野火】---学习笔记---三.使用寄存器点亮LED灯

GPIO包含在引脚中。而引脚中不仅有GPIO,还有VCC、GND等引脚。对于STM32来说:《STM32F103xCED 英文数据手册》 -> 《3 Pinouts and pin describeptions》 -> 《Table 5.High-density STM32F103xx pin definitions 》中查找。

2023-09-03 19:34:08 527

原创 【STM32-野火】---学习笔记---二.新建工程模板——寄存器版、使用寄存器点亮LED

三.添加文件:添加 startup_stm32f10x_hd.s文件(启动文件),创建 main.c文件(定义一个SystemInit函数),创建 stm32f10x.h文件,并导入 main.c 中。如果这里没有出现你想要的 CPU 型号,或者一个型号都没有,说明你的KEIL5没有添加device库,KEIL5 不像 KEIL4 那样自带了很多 MCU 的型号, KEIL5 需要自己添加。6.3 Utilities 选项配置:选择目标板,具体选择多大的 FLASH 要根据板子上的芯片型号决定。

2023-08-28 22:00:08 1256

原创 【STM32-野火】---学习笔记---一.初识STM32、什么是寄存器

①引脚序号:阿拉伯数字表示LQFP封装,英文字母开头表示BGA封装。引脚序号这里列出了8种封装型号,具体使用哪一种根据实际情况来选择。②引脚名称:指复位状态下的引脚名称。③引脚类型:S(电源引脚)、I(输入引脚)、I/O(输入/输出引脚)。④ I/O结构:FT(兼容5V)、TTa(只支持3.3V,且直接到ADC)、B(BOOT引脚)、RST(复位引脚,内部带弱上拉)。⑤注意事项:对某些IO要注意的事项的特别说明。⑥复用功能:IO的复用功能,通过GPIOx_AFR寄存器来配置选择。

2023-08-27 23:57:38 1902

原创 Zigbee

Zigbee是一种低速率、短距离、低成本无线通信协议,它被设计用于物联网(IoT)设备之间的通信。它采用了低复杂性和低功耗的无线通信技术,能够在几十米范围内进行数据传输,为智能家居、工业自动化和传感器网络等应用提供了可靠的无线连接。

2023-06-15 11:14:27 278

原创 CAN总线

CAN(Controller Area Network,控制器局域网)总线是一种广泛应用于汽车和工业领域的通信协议和物理层总线标准。它允许多个电子控制单元(ECU,Electronic Control Unit,可以看作是一台超小型的计算机)之间进行可靠的数据传输和通信。

2023-06-12 17:03:17 1118 1

原创 SPI协议

SPI。

2023-06-09 17:12:12 186

空空如也

空空如也

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

TA关注的人

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