时钟的概念及配置过程

(一)复位与时钟
    1》复位(让设备回到最开始的状态)
        1>上电复位----在产品中,一定要有上电复位
            NRST 复位引脚,低电平复位
            上电复位,在上电瞬间,C35电容快速充电,电流很大,相当于短路,NRST为低电平,产生复位动作
        2>按键复位----SW1按下,NRST为低电平,产生复位动作
        
    2》时钟
        1>时钟是什么?
            一段有序脉冲----作用:来一个脉冲,CPU执行一次二进制代码。
        2>怎么样产生有序脉冲?
            晶振
    3》如果要将系统时钟配置到72Mhz,并且使外设工作正常,编程步骤
        1,打开外部高速时钟
        2,等待外部高速晶振准备就绪
        3,配置锁相环的时钟源和倍频系数
        4,使能锁相环
        5,等待锁相环准备就绪
        6,配置AHB预分频器
        7,配置APB1预分频器
        8,配置APB2预分频器
        9,将锁相环时钟作为系统时钟源
        10,获取时钟源
-----------------------------------------------------
(二)滴答定时器-----Systick 
    1》作用:
        1,产生一个精准的定时
        2,能够为RTOS系统提供时基
    
    2》为什么在中文参考手册中没有Systick的相关描叙
        滴答定时器是一个核内外设
    3》介绍
        它是一个24位的系统定时器,它是向下计数的,计数完成后,在下一个时钟边沿,会重新开始计数
        
    4》定时1us,定时器1ms的编程步骤
        1,配置时钟源------8分频
        2,给LOAD寄存器赋值-----1ms---9000
        3,打开定时器----STK_CTRL 0bit===1
        4,等待计数完成----判断STK_CTRL 的第16位是否为1
        5,关闭定时器

### 关于 STM32 定时器输入捕获中 UBEMAX 参数的解析 在讨论 STM32 的定时器输入捕获功能时,未发现任何直接提及 `UBEMAX` 参数的内容。然而,在分析定时器输入捕获的工作机制及其配置项的过程中,可以推测该参数可能涉及某些特定场景下的高级设置或第三方扩展定义。 #### 1. 定时器输入捕获工作原理概述 定时器输入捕获是一种常用的功能模块,主要用于测量外部信号的时间特性(如脉冲宽度、周期等)。其基本实现依赖于硬件外设 TIMx 和软件驱动 HAL 库的配合[^1]。 输入捕获的核心流程包括以下几个方面: - **边沿检测**:识别上升沿或下降沿事件。 - **分频处理**:通过预分频器调整计数频率。 - **滤波机制**:减少噪声干扰的影响。 - **触发捕捉**:记录当前计数值并存储至寄存器。 这些过程共同决定了输入捕获的有效性和精度。 #### 2. 配置选项中的间接触发模式 对于输入捕获的具体配置,存在多种可选参数来满足不同应用场景的需求。例如,`TIM_ICSelection_IndirectTI` 是一种特殊的触发方式,它允许输入信号先经过复用映射电路再进入实际的捕获逻辑链路[^2]。这种设计增加了灵活性,但也引入了一定复杂度。 尽管上述资料并未提到 `UBEMAX` 参数本身,但从上下文中可以看出,类似的命名风格通常出现在以下几种情况之一: - 表示某种最大值限制条件; - 描述缓冲区大小或者数据范围边界; - 或者作为内部调试标志位的一部分。 因此如果确实存在这样一个名为 “UBEMAX” 的变量,则很可能与其所在环境有关联紧密的技术细节密切相关。 #### 3. 假设与可能性探讨 基于现有文档内容无法确切给出关于此名称的确切含义及用途解释。不过可以从几个角度尝试推断: ##### (a) 如果它是用户自定义宏/常量 那么这应该是在项目开发过程中为了便于管理而设定的一个局部符号表示形式。比如用来标记某个数组长度上限之类的简单概念。 ```c #define UBEMAX 100 // Example definition representing maximum buffer size. uint8_t captureBuffer[UBEMAX]; ``` ##### (b) 若属于固件库私有字段 则可能是隐藏级别的成员属性仅限于低层操作层面可见;此时查阅官方手册将是唯一可靠途径获取更多信息的方法。 --- ### 提供一段伪代码展示如何初始化一个典型的输入捕获实例 以下是利用标准外设库创建基础版本的例子: ```c // 初始化结构体对象 TIM_HandleTypeDef htim; htim.Instance = TIM2; __HAL_RCC_TIM2_CLK_ENABLE(); htim.Init.Prescaler = 79; /* 设置预分频系数 */ htim.Init.CounterMode = TIM_COUNTERMODE_UP; /* 计数方向向上 */ htim.Init.Period = 65535; /* 自动重装载值 */ htim.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;/* 时钟分割因子 */ if(HAL_TIM_Base_Init(&htim)!= HAL_OK){ Error_Handler(); } /* 配制通道1为输入捕获模式 */ TIM_Input_Capture_ConfigurationTypeDef sConfigIC; sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING;// 上升沿有效 sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI ; // 直接TIx 映射 sConfigIC.ICPrescaler = TIM_ICPSC_DIV1; // 不进行额外除法运算 sConfigIC.ICFilter = 0xF; // 数字滤波器级数 if( HAL_TIM_IC_ConfigChannel(&htim,&sConfigIC,TIM_CHANNEL_1 ) != HAL_OK ){ Error_Handler(); } ``` 注意以上仅为示范片段,并不包含全部必要部分,请参照具体芯片型号的数据表完成最终移植适配工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__Lewis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值