- 博客(80)
- 收藏
- 关注
原创 精彩代码解析-4
for(ucI=0;在这段代码中,ucMenuBuf从函数参数可以看出,ucMenuBuf是一个,每个元素是u8 const *类型(指向无符号字符的常量指针),通常用于存储字符串(字符数组)的首地址。访问数组ucMenuBuf的第ucI个元素,得到的是一个指向字符串的指针(即第ucI个菜单选项的首地址)。访问第ucI个字符串的(因为字符串在 C 语言中以字符数组形式存储,[0]表示数组的第一个元素)。
2025-08-05 11:51:09
259
原创 一个 32 位无符号整数(u32_t)转换为 6 位十进制数字的 ASCII 字符
【代码】一个 32 位无符号整数(u32_t)转换为 6 位十进制数字的 ASCII 字符。
2025-08-01 14:37:44
236
原创 定时器ARR的作用
与PSC(预分频器)共同构建定时器的完整计时逻辑。,与PSC共同构建频率和占空比的控制体系。,并结合预装载功能保障稳定性。实际开发中,建议通过公式反推。
2025-07-16 08:55:12
851
原创 UART寄存器介绍
在 STM32 微控制器中,UART(通用异步收发传输器)通信通过多个寄存器实现配置和数据传输。下面详细解析 UART 的核心寄存器及其功能。状态寄存器反映 UART 当前的工作状态,用于判断数据传输是否完成、是否接收到数据等。控制寄存器 1 用于配置 UART 的基本功能,如使能、字长、奇偶校验等。控制寄存器 3 用于配置高级功能,如硬件流控制、DMA 等。控制寄存器 2 主要用于配置停止位、LIN 模式等。寄存器,功能类似但增加了更多状态位,如忙标志(在 STM32F4 及更高系列中,
2025-07-14 16:39:14
1286
原创 UART Hal库与寄存器比较
在 STM32 开发中,UART 通信可以通过 HAL 库函数或直接操作寄存器实现。下面将详细对比两种方式,并解释 HAL 库函数背后的寄存器操作原理。通过对比可以看出,HAL 库函数本质上是对寄存器操作的封装,简化了开发流程,但理解寄存器原理有助于深入掌握 UART 通信机制。
2025-07-14 15:58:58
500
原创 环形队列的实现
int n;n -= 1;num : n;return n;elseelsenum : n;return n;int n;num : n;return n;elsenum : n;return n;else。
2025-06-27 09:57:59
400
原创 时钟的一些了解
这段代码是 STM32 时钟配置的一部分,通过宏定义提供了清晰的系统时钟源选择方式,方便开发者使用不同的时钟源来满足应用需求。怎么初始化配置系统的时钟,让系统能工作起来在 STM32 微控制器中,系统时钟的初始化配置是启动过程中的关键步骤,直接影响系统性能和外设功能。时钟初始化的基本步骤启用 HSE/HRC 时钟源选择高速外部晶振 (HSE) 或高速内部 RC 振荡器 (HRC) 作为初始时钟源。配置 PLL(如果需要)通过锁相环 (PLL) 倍频时钟,以获得更高的系统时钟频率。
2025-06-19 16:49:39
543
原创 电路IO实际配置应用
分压公式的本质串联电路中电压与电阻成正比1kΩ 电阻占总电阻 (41kΩ) 的 2.44%因此 1kΩ 电阻分得 2.44% 的电压,40kΩ 分得 97.56% 的电压STM32 的逻辑电平阈值对于 3.3V 系统,通常:逻辑 0 的最大电压为 0.3×VCC = 0.99V逻辑 1 的最小电压为 0.7×VCC = 2.31V计算得到的 0.08V 远低于 0.99V,因此 STM32 会可靠识别为逻辑 0直观对比。
2025-06-05 10:59:38
621
原创 E2PROM的学习
地址对齐指的是内存访问地址必须是数据类型大小的整数倍。8 位数据(1 字节):可以从任意地址开始(无需对齐)16 位数据(2 字节,半字):地址必须是 2 的倍数(如0x080000000x0800000232 位数据(4 字节,字):地址必须是 4 的倍数(如0x080000000x08000004硬件异常:某些架构直接禁止非对齐访问性能下降:处理器需要多次访问内存来拼凑数据数据错误:写入的数据可能被截断或错位对齐规则写入数据时,地址必须是数据大小的整数倍例如 32 位写入要求地址为。
2025-05-09 17:19:58
639
原创 stm32 外部中断实现
外部中断是 STM32 中非常重要的功能,它允许外设信号在满足特定条件(如上升沿、下降沿或任意电平变化)时打断 CPU 当前正在执行的任务,转而执行预先编写好的中断服务程序。
2025-03-25 10:54:21
676
原创 STM32 模拟SPI 模式0
CPOL = 0 意味着时钟信号空闲时为低电平,CPHA = 0 表示在时钟信号的第一个跳变沿(上升沿)进行数据采样。// 读取MISO引脚状态(上升沿采样)// 拉高时钟信号,产生上升沿。// 配置SCK和MOSI为推挽输出。// 设置MOSI引脚状态。// 配置MISO为浮空输入。// 空闲时SCK为低电平。// 配置CS为推挽输出。// 使能GPIO时钟。// 发送一个字节数据。// 初始化SPI引脚。// 发送一个字节数据。// 定义SPI引脚。
2025-03-20 10:05:20
597
原创 c语言中 continue 和break 的区别
对循环的影响continue只是结束当前迭代,进入下一轮迭代,循环会继续执行;而break会直接终止整个循环,不再执行后续的迭代。代码执行流程continue跳过continue之后的代码,直接进行循环条件的判断;break则是跳出循环体,执行循环之后的代码。使用场景continue适用于跳过某些特定条件下的操作,继续处理后续数据;break适用于在满足某个特定条件时立即停止循环。综上所述,在 STM32 开发中,要根据具体的需求合理使用continue和break语句,从而实现对循环结构的精确控制。
2025-03-19 10:47:19
689
原创 stm32中分析UART中IDLE,RXNE,TC,TXE这些标志位的作用
下面将基于 STM32 标准库,结合之前提到的不同应用场景,给出使用TXETCIDLE和RXNE标志位的代码示例及分析。
2025-03-09 23:27:20
1141
原创 STC51 中断允许寄存器 IE
中断允许寄存器IE是一个可位寻址的特殊功能寄存器,其字节地址为 0xA8。通过对IE寄存器的不同位进行操作,可以分别控制全局中断以及各个具体中断源的开启和关闭。IE位序号位符号功能描述D7EA全局中断允许位。当EA = 1时,CPU 开放中断,即允许响应各个使能的中断源发出的中断请求;当EA = 0时,CPU 禁止所有中断,无论其他中断允许位的状态如何,所有中断源的中断请求都不会被响应。D6保留位,在标准 51 单片机中该位无实际用途,用户程序一般不应对其进行操作。D5ET2。
2025-03-09 19:13:46
1403
原创 STC51 TMOD寄存器
在 51 单片机中,TMOD是定时器 / 计数器模式控制寄存器,用于设置定时器 / 计数器T0和T1的工作模式和工作方式。位76543210符号GATEC/TM1M0GATEC/TM1M0功能T1 门控位T1 定时器 / 计数器选择T1 模式选择位 1T1 模式选择位 0T0 门控位T0 定时器 / 计数器选择T0 模式选择位 1T0 模式选择位 0其中,高 4 位用于控制定时器 / 计数器T1,低 4 位用于控制定时器 / 计数器T0。
2025-03-09 11:32:23
1953
1
原创 STC51 AUXR辅助寄存器
位序号位名称功能描述7T0x12定时器 0 速度控制位。当T0x12 = 0时,定时器 0 工作在传统的 12T 模式,即定时器的时钟频率是系统时钟频率的 1/12;当T0x12 = 1时,定时器 0 工作在 1T 模式,定时器的时钟频率等于系统时钟频率。6T1x12定时器 1 速度控制位。功能与T0x12类似,T1x12 = 0时,定时器 1 工作在 12T 模式;T1x12 = 1时,定时器 1 工作在 1T 模式。5UART_M0x6串口 0 模式 0 的波特率选择位。当。
2025-03-09 10:58:15
1238
原创 STC51中INTCLKO 寄存器各个位的作用
INTCLKO寄存器地址为0x8F,它主要用于控制外部中断的使能、定时器溢出信号输出以及时钟信号输出等功能。位序号位名称功能描述7T0CLKO定时器 / 计数器 0 溢出信号输出控制位。- 当T0CLKO = 1时,允许定时器 / 计数器 0 的溢出信号从P3.4引脚输出。- 当T0CLKO = 0时,禁止定时器 / 计数器 0 的溢出信号从P3.4引脚输出。6T1CLKO定时器 / 计数器 1 溢出信号输出控制位。- 当T1CLKO = 1。
2025-03-08 23:38:27
570
原创 51 单片机中断控制寄存器 TCON
在 51 单片机中,中断控制寄存器TCON(Timer/Counter Control Register,定时器 / 计数器控制寄存器)主要用于控制定时器 / 计数器的启动、停止以及外部中断的触发方式等。它既可以按字节寻址,也可以按位寻址,其字节地址为 88H。下面详细介绍TCON寄存器的各个位。
2025-03-08 23:23:28
2407
原创 Freertos中空闲钩子函数的使用
在嵌入式系统中,FreeRTOS(Free Real - Time Operating System)是一个广泛使用的开源实时操作系统内核。FreeRTOS 中的空闲钩子函数是一个很有用的特性,下面为你详细介绍其使用方法、知识点以及示例代码。
2025-02-24 22:34:38
1109
原创 Stm32定时器输出PWM
下面为你提供使用 STM32 标准库实现定时器初始化、输出 PWM 以及添加定时器中断功能的详细代码及解释。此示例以 STM32F103 系列芯片为例,使用定时器 3 输出 PWM 信号并添加定时器更新中断。
2025-02-19 23:41:27
731
原创 systick和Timer的应用区别
SysTick 和 Timer(通用定时器)都是嵌入式系统中常见的定时器,它们的区别、应用场景、优势和劣势如下:
2025-02-19 16:51:25
859
原创 Stm32中SysTick 定时器的使用
是一个宏定义,它代表微控制器的系统时钟频率,单位是赫兹(Hz)。这个值通常在微控制器的启动代码或相关的头文件中定义,具体数值取决于微控制器的工作频率设置。例如,对于某些工作在 72MHz(72000000Hz)的 Cortex - M3 微控制器,SysTick 定时器是 ARM Cortex - M 内核中一个简单的 24 位递减定时器,也被称为系统滴答定时器。(Cortex - M4)等相关头文件中声明,其功能是配置 SysTick 定时器并使能它。它接受一个参数,就是要设置的重载值。
2025-02-19 16:32:09
745
原创 关于PinReMap的一些理解
为什么GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);在 STM32 微控制器的开发中,这行代码的作用是禁用 JTAG(Joint Test Action Group)接口,同时保留 SWD(Serial Wire Debug)接口,下面从背景、目的、影响和使用场景几个方面详细解释这样做的原因。
2025-02-18 10:22:41
1272
原创 复用输出模式的使用场景
推挽输出是 GPIO 引脚的一种基本输出模式。在这种模式下,引脚由芯片内部的两个 MOS 管(一个 P 沟道 MOS 管和一个 N 沟道 MOS 管)组成的推挽电路来驱动。当输出高电平时,P 沟道 MOS 管导通,引脚连接到电源;当输出低电平时,N 沟道 MOS 管导通,引脚连接到地。推挽输出模式主要用于直接控制外部设备,比如控制 LED 灯的亮灭、驱动继电器等。在这些应用中,引脚的输出信号由用户程序直接控制,即通过操作 GPIO 寄存器来设置引脚的电平状态。
2025-02-17 18:23:39
1485
原创 STM32硬件SPI函数解析与示例
SPI(Serial Peripheral Interface)即串行外设接口,是一种高速、全双工、同步的通信总线,常用于微控制器与各种外设(如传感器、存储器等)之间的通信。STM32 系列微控制器提供了多个 SPI 接口,具有灵活的配置选项。
2025-02-14 18:01:33
845
原创 volatile有什么用
volatile的主要作用是防止编译器对变量的访问进行优化,确保程序能够正确处理那些可能会以不可预知方式改变的变量,特别是在与硬件交互、多线程编程或存在中断服务程序的场景中。需要注意的是,volatile并不能保证线程安全,在多线程环境中还需要使用同步机制(如互斥锁)来保证数据的一致性。
2025-02-12 09:26:18
423
原创 STC51 单片机中,定时器 / 计数器相关的寄存器
在 STC51 单片机中,定时器 / 计数器相关的寄存器主要有定时器控制寄存器(TCON)、定时器工作方式寄存器(TMOD)以及定时器初值寄存器(TH0、TL0、TH1、TL1),下面详细解释这些寄存器各位的作用。
2025-02-08 23:49:32
2106
原创 STC51 端口寄存器(P0、P1、P2、P3)
在 STC51 单片机中,P0、P1、P2 和 P3 这四个端口寄存器分别对应 P0 - P3 四个 I/O 端口,每个寄存器都是 8 位的,其内部的每一位都对应着相应端口的一个引脚。
2025-02-08 23:29:16
2635
原创 STC51案例操作
检测连接在 P3.2 引脚的按键状态,根据按键状态控制连接在 P1.0 引脚的 LED 亮灭。:通过操作 P1 口寄存器,让连接在 P1.0 引脚的 LED 以一定间隔闪烁。:使用串口以 9600bps 的波特率发送字符 'A'。:使用定时器 0 实现 LED 每隔 1 秒闪烁一次。
2025-02-08 23:25:01
528
原创 STC51 P0 口 与P1 口输出
当向 P0 口的某一位写 1 时,输出锁存器的 Q 端为 1,上面的 PMOS 管和下面的 NMOS 管都截止,引脚处于高阻态(相当于浮空)。P0 口的每个引脚内部电路由一个输出锁存器、两个三态缓冲器、一个输出驱动电路和一个输出控制电路组成。其输出驱动电路由两个场效应管(FET)构成,上面的场效应管是 PMOS,下面的是 NMOS,这种结构为漏极开路输出结构。当向 P0 口的某一位写 0 时,输出锁存器的 Q 端为 0,经过输出控制电路使下面的 NMOS 管导通,而上面的 PMOS 管截止。
2025-02-08 22:47:31
739
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅