
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
最近在开发STM32的时候,安装Keil5,遇到STM32和C51的共存的问题,在网上找了很多方法,又遇到一些bug,最终还是弄好了。因此将处理的过程记录下来,希望对遇到相同问题的朋友一些启发。

定时器基本定时功能(已学习)定时器输出比较功能(已学习)定时器输入捕获功能(已学习)定时器编码器接口功能(本篇内容)在深入探讨了通用定时器(TIM)的时基单元计数逻辑、输出比较(OC)波形合成技术,以及输入捕获(IC)信号特征分析之后,本篇技术文档将聚焦定时器在运动控制领域的进阶应用——编码器接口。作为电机闭环控制与伺服驱动中不可或缺的硬件模块,编码器接口通过内部硬件状态机对正交信号进行自动化解码
CNT在0到ARR之间循环计数(决定频率)。CCR设定了一个阈值切割点。比较器根据 CNT 与 CCR 的关系,输出逻辑电平。极性电路决定最终的高低电平。最终效果: 随着 CNT 的周期性变化,输出引脚TIMx_CHx上会产生连续的脉冲波形。我们只需要通过软件修改 CCR 寄存器的值,就可以在不停止定时器的情况下,平滑地改变输出波形的占空比,实现对电机速度或 LED 亮度的精准控制。寄存器名称作用
定时器(TIM)本质上是一个受控的计数器单元。它通过对基准时钟信号进行分频和累加,实现精确的时间管理功能。虽然名为“定时”,但其底层逻辑其实是对时钟脉冲进行计数。STM32 的定时器架构主要由时钟源、预分频器(PSC)和计数器(CNT)组成。计数:在驱动时钟下,计数器(CNT)按步长递增;匹配:当 CNT 达到自动重装载寄存器(ARR)设定的阈值时;响应:硬件产生“更新事件”并触发中断。这种基于硬
定时器基本定时功能(已学习)定时器输出比较功能(已学习)定时器输入捕获功能(本篇内容)定时器编码器接口功能在前两部分中,我们掌握了时基单元的定时逻辑与输出比较(OC)的波形产生技术。本章将深入探讨输入捕获功能。该功能不仅是测量外部信号频率与占空比的核心手段,更是理解定时器主从触发自动化机制的关键。目录前言1 频率测量理论基础1.1 测频法 (适合高频信号)1.2 测周法 (适合低频信号)1.3 中
模数转换器(Analog-to-Digital Converter, ADC)是嵌入式系统中连接连续模拟信号与离散数字信号的核心接口。微控制器(如 STM32)内部逻辑电路仅能处理以高、低电平表征的数字信号,无法直接解析传感器输出的连续变化电压。ADC 的核心职能在于通过**采样(Sampling)、保持(Holding)、量化(Quantizing)与编码(Encoding)**四个物理过程,将
如果不希望修改标准输出路径,也可以先使用 sprintf() 将格式化结果输出到字符数组中,再调用串口字符串发送函数将其发出。// 1、定义字符串缓冲区// 用于保存 sprintf() 格式化后的结果// 数组长度需要能够容纳完整字符串以及结尾的 '\0'// 2、按照指定格式将数据写入字符串缓冲区String[]// 第一个参数 String 表示输出位置,"\r\nNum3=%d" 为格式字
为了彻底解决这些问题,在工程实践中通常会在原始数据之上增加一层简单的通信协议,将多个零散的字节组织成结构化的数据帧。这种具有特定格式和边界的数据帧,称为数据包(Data Packet)。通过引入协议字段,接收端就可以在连续的串口字节流中识别出完整的数据帧,从而正确解析其中的有效数据。
为方便理解后续的时序图,需先明确这两个核心控制参数的物理含义。(1)时钟极性(CPOL)定义 SCK 在通信空闲状态(即 SPI 通讯开始前、NSS 处于高电平时)的默认电平。CPOL = 0:空闲时 SCK 保持低电平。CPOL = 1:空闲时 SCK 保持高电平。(2)时钟相位(CPHA)定义数据移入(采样)与数据移出(输出)所对应的时钟边沿次序。CPHA = 0:数据在 SCK 的第 1 个
Store 模块(Store.c /Store.h)是参数存储管理的核心,其设计思路为:将 FLASH 的最后一页视为掉电不丢失的后备存储,同时在 SRAM 中定义一个与之等大的数组 Store_Data[ ]作为日常数据操作的中间缓冲区。由于 FLASH 不支持字节级写入,且编程前必须整页擦除(擦除会导致整页数据丢失),正确的做法是:先将目标页的全部数据读入 SRAM 中的缓冲区,在 SRAM







