STM32HAL库高级定时器实验——高级定时器输出比较实验

STM32_HAL__TIM_输出比较 输出比较在比较值到到达值时改变引脚或产生中断PWM为特殊的输出比较区别功能目的:输出比较通常用于产生精确的定时事件,而PWM用于模拟信号的生成和控制。信号形式:输出比较产生离散的脉冲或电平变化,PWM产生连续的脉冲信号。调节能力:PWM可以通过改变占空比来调节输出功率或电压,而输出比较通常不具备这种调节能力。使用场景:输出比较适用于需要精确时间控制的场合,PWM适用于需要连续模拟量控制的场合。 阅读详情

前言

本实验使用高级定时器输出比较模式下的翻转功能,通过定时器 4 个通道分别输出 4 个 50%占空比、不同相位的 PWM。

实验原理

输出比较模式下翻转功能作用是:当计数器的值等于捕获/比较寄存器影子寄存器的值时,OC1REF 发生翻转,进而控制通道输出(OCx)翻转。通过翻转功能实现输出 PWM 的具体原理如下: PWM 频率由自动重载寄存器(TIMx_ARR)的值决定,在这个过程中,只要自动重载寄存器的值不变,那么 PWM 占空比就固定为 50%。我们可以通过捕获/比较寄存器(TIMx_CCRx)的值改变 PWM 的相位。生成 PWM 的原理如图:
在这里插入图片描述
总结:PWM波周期或频率由ARR决定,占空比固定50%,相位由CCRx决定
我们设置固定的 ARR 值为 999,那么 PWM 占空比固定为 50%,通过改变 4 个通道的捕获/比较寄存器(TIMx_CCRx)的值使得每个通道输出的 PWM 的相位都不一样,注意捕获/比较寄存器的值设置范围是: 0 ~ ARR。比如: TIMx_CCR1=250-1, TIMx_CCR2=500-1, TIMx_CCR3=750-1, TIMx_CCR4=1000-1,那么可以得到通道 1~通道 4 输出的 PWM 的相位分别是: 25%、 50%、 75%、 100%。翻转功能输出的 PWM 周期,这里用 T 表示,其计算公式如下:
T= 2*(arr+1)*((psc+1)/ Tclk)
其中:
T: 翻转功能输出的 PWM 周期(单位为 s)。
Tclk: 定时器的时钟源频率(单位为 MHz)。
arr:自动重装寄存器(TIMx_ARR)的值。
psc:预分频器寄存器(TIMx_PSC)的值。

涉及到的寄存器

高级定时器输出比较模式除了用到定时器的时基单元:计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)、 自动重载寄存器(TIMx_ARR)之外。主要还用到以下这些寄存器:

控制寄存器 1(TIMx_CR1)

在这里插入图片描述

上图中我们只列出了本实验需要用的一些位,其中: 位 7(APRE)用于控制自动重载寄存器是否具有缓冲作用,在基本定时器的时候已经讲过,请回顾。 本实验中,我们把该位置 1。
位 4(DIR)用于配置计数器的计数方向, 本实验默认置 0 即可。
位 CEN 位,用于使能计数器的工作,必须要设置该位为 1,才可以开始计数。

捕获/比较模式寄存器 1/2(TIMx_CCMR1/2)

TIM1/TIM8 的捕获/比较模式寄存器( TIMx_CCMR1/2),该寄存器一般有 2 个:TIMx_CCMR1 和 TIMx _CCMR2。TIMx_CCMR1 控制 CH1 和 CH2,而 TIMx_CCMR2 控制 CH3和 CH4。 TIMx_CCMR1 寄存器描述如图:在这里插入图片描述

该寄存器的有些位在不同模式下,功能不一样,我们现在用到输出比较模式。关于该寄存器的详细说明,请参考《STM32F10xxx 参考手册_V10(中文版) .pdf》 第 240 页, 13.4.7 节。
本实验我们用到了定时器 8 输出比较的 4 个通道,所以我们需要配置 TIM1_CCMR1 和TIM1_CCMR2。以 TIM1_CCMR1 寄存器为例,模式设置位 OC1M[2:0]就是对应着通道 1 的模式设置,此部分由 3 位组成,总共可以配置成 8 种模式,我们使用的是翻转功能,所以这 3 位必须设置为 011。通道 2 也是如此,将位 OC2M[2:0] 设置为 011。通道 3 和通道 4 就要设置TIM1_CCMR2 寄存器的位 OC3M[2:0]和位 OC4M[2:0]。除此之外,我们还要设置输出比较的预装载使能位,如通道 1 对应输出比较的预装载使能位 OC1PE 置 1, 其他通道也要把相应位置 1。

捕获/比较使能寄存器(TIMx_ CCER)

在这里插入图片描述
该寄存器比较简单,要让 TIM8 的 4 个通道都输出,我们需要把对应的捕获/比较 1 输出使
能位置 1。通道 1 到通道 4 的使能位分别是: CC1E、 CC2E、 CC3E、 CC4E,我们把这 4 个位置
1,使能通道输出。

捕获/比较寄存器 1/2/3/4(TIMx_ CCR1/2/3/4)

捕获/比较寄存器(TIMx_ CCR1/2/3/4),该寄存器总共有 4 个,对应 4 个通道 CH1~CH4。
在这里插入图片描述
这里,我们通过改变 TIMx_ CCR1/2/3/4 寄存器的值来改变 4 个通道输出的 PWM 的相位。

TIM1/TIM8 断路和死区寄存器(TIMx_ BDTR)

本实验用的是高级定时器,我们还需要配置:断路和死区寄存器(TIMx_BDTR),该寄存器各位描述如图:
在这里插入图片描述

该寄存器,我们只需要关注位 15(MOE),要想高级定时器的通道正常输出,则必须设置MOE 位为 1,否则不会有输出。

硬件设计

例程功能

通过定时器8通道1/2/3/4输出相位分别为25%、50%、75%、100%的PWM

硬件资源

本实验基于正点原子战舰V4开发板

  • 1) LED 灯
    LED0 – PB5
  • 2) PC6 复用为 TIM8_CH1
    PC7 复用为 TIM8_CH2
    PC8 复用为 TIM8_CH3
    PC9 复用为 TIM8_CH4

程序设计

实验涉及的HAL库函数

定时器在 HAL 库中的驱动代码在前面已经介绍了部分,请回顾,这里我们再介绍几个本实验用到的函数。

1. HAL_TIM_OC_Init 函数

定时器的输出比较模式初始化函数,其声明如下:

HAL_StatusTypeDef HAL_TIM_OC_Init(TIM_HandleTypeDef *htim);

函数描述:
用于初始化定时器的输出比较模式。
函数形参:
形参 1 是 TIM_HandleTypeDef 结构体类型指针变量,基本定时器的时候已经介绍。
函数返回值:
HAL_StatusTypeDef 枚举类型的值。

2. HAL_TIM_OC_ConfigChannel 函数

定时器的输出比较通道设置初始化函数。其声明如下:

HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim,
TIM_OC_InitTypeDef *sConfig, uint32_t Channel);

函数描述:
该函数用于初始化定时器的输出比较通道。
函数形参:
形参 1 是 TIM_HandleTypeDef 结构体类型指针变量,用于配置定时器基本参数。
形参 2 是 TIM_OC_InitTypeDef 结构体类型指针变量,用于配置定时器的输出比较参数。在通用定时器 PWM 输出实验已经介绍过 TIM_OC_InitTypeDef 结构体指针类型。
形参 3 是定时器通道,范围: TIM_CHANNEL_1 到 TIM_CHANNEL_4。
函数返回值:
HAL_StatusTypeDef 枚举类型的值。

3. HAL_TIM_OC_Start 函数

定时器的输出比较启动函数,其声明如下:

HAL_StatusTypeDef HAL_TIM_OC_Start(TIM_HandleTypeDef *htim, uint32_t Channel);

函数描述:
用于启动定时器的输出比较模式。
函数形参:
形参 1 是 TIM_HandleTypeDef 结构体类型指针变量。
形参 2 是定时器通道,范围: TIM_CHANNEL_1 到 TIM_CHANNEL_4。
函数返回值:
HAL_StatusTypeDef 枚举类型的值。
注意事项:
HAL 库也同样提供了单独使能定时器的输出通道函数,函数为:

void TIM_CCxChannelCmd(TIM_TypeDef *TIMx, uint32_t Channel,
uint32_t ChannelState);

HAL_TIM_OC_Start 函数内部也调用了该函数。

配置步骤

在这里插入图片描述
在这里插入图片描述

代码

tim.c
/* 高级定时器8输出比较模式初始化函数 */
void tim8_comp_pwm_init(uint16_t arr, uint16_t psc)
{
    TIM_OC_InitTypeDef tim8_oc_comp_pwm={0};
    tim8_comp_pwm_handle.Instance = TIM8;
    tim8_comp_pwm_handle.Init.Prescaler = psc;
    tim8_comp_pwm_handle.Init.Period = arr;
    tim8_comp_pwm_handle.Init.CounterMode = TIM_COUNTERMODE_UP;
    HAL_TIM_OC_Init(&tim8_comp_pwm_handle);

    tim8_oc_comp_pwm.OCMode = TIM_OCMODE_TOGGLE;
    tim8_oc_comp_pwm.OCPolarity = TIM_OCPOLARITY_HIGH;

    HAL_TIM_OC_ConfigChannel(&tim8_comp_pwm_handle, &tim8_oc_comp_pwm, TIM_CHANNEL_1);
    HAL_TIM_OC_ConfigChannel(&tim8_comp_pwm_handle, &tim8_oc_comp_pwm, TIM_CHANNEL_2);
    HAL_TIM_OC_ConfigChannel(&tim8_comp_pwm_handle, &tim8_oc_comp_pwm, TIM_CHANNEL_3);
    HAL_TIM_OC_ConfigChannel(&tim8_comp_pwm_handle, &tim8_oc_comp_pwm, TIM_CHANNEL_4);
    
    __HAL_TIM_ENABLE_OCxPRELOAD(&tim8_comp_pwm_handle, TIM_CHANNEL_1);
    __HAL_TIM_ENABLE_OCxPRELOAD(&tim8_comp_pwm_handle, TIM_CHANNEL_2);
    __HAL_TIM_ENABLE_OCxPRELOAD(&tim8_comp_pwm_handle, TIM_CHANNEL_3);
    __HAL_TIM_ENABLE_OCxPRELOAD(&tim8_comp_pwm_handle, TIM_CHANNEL_4);
    
    HAL_TIM_OC_Start(&tim8_comp_pwm_handle, TIM_CHANNEL_1);
    HAL_TIM_OC_Start(&tim8_comp_pwm_handle, TIM_CHANNEL_2);
    HAL_TIM_OC_Start(&tim8_comp_pwm_handle, TIM_CHANNEL_3);
    HAL_TIM_OC_Start(&tim8_comp_pwm_handle, TIM_CHANNEL_4);
}

void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim)
{
    if(htim->Instance == TIM8)
    {
        GPIO_InitTypeDef GPIO_InitStruct;

        __HAL_RCC_TIM8_CLK_ENABLE();
        __HAL_RCC_GPIOC_CLK_ENABLE();

        GPIO_InitStruct.Pin = GPIO_PIN_6;
        GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
        GPIO_InitStruct.Pull = GPIO_NOPULL;
        GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
        HAL_GPIO_Init(GPIOC,&GPIO_InitStruct);
        
        GPIO_InitStruct.Pin = GPIO_PIN_7;
        HAL_GPIO_Init(GPIOC,&GPIO_InitStruct);

        GPIO_InitStruct.Pin = GPIO_PIN_8;
        HAL_GPIO_Init(GPIOC,&GPIO_InitStruct);

        GPIO_InitStruct.Pin = GPIO_PIN_9;
        HAL_GPIO_Init(GPIOC,&GPIO_InitStruct);
    }
}
main.c
extern TIM_HandleTypeDef tim8_comp_pwm_handle;

int main(void)
{
    uint8_t t = 0;
    HAL_Init();                                 /* 初始化HAL库 */
    sys_stm32_clock_init(RCC_PLL_MUL9);         /* 设置时钟,72M */
    delay_init(72);                             /* 初始化延时函数 */
    led_init();                                 /* 初始化LED */
    tim8_comp_pwm_init(1000-1,72-1);

    __HAL_TIM_SET_COMPARE(&tim8_comp_pwm_handle, TIM_CHANNEL_1, 250-1);
    __HAL_TIM_SET_COMPARE(&tim8_comp_pwm_handle, TIM_CHANNEL_2, 500-1);
    __HAL_TIM_SET_COMPARE(&tim8_comp_pwm_handle, TIM_CHANNEL_3, 750-1);
    __HAL_TIM_SET_COMPARE(&tim8_comp_pwm_handle, TIM_CHANNEL_4, 1000-1);

    while(1)
    {
        delay_ms(10);
        t++;
        if(t>50)
        {
            t=0;
            LED0_TOGGLE();
        }

    }
}
STM32 HAL库基于F103系列之高级定时器 HAL_TIM_PWM_MspInit() 配置NVIC、CLOCK、GPIO等。定时器1通道1映射在PE8引脚上,互补输出映射在PE9引脚上,刹车功能映射在PE15上。通过定时器1通道1输出频率为1KHz,占空比为70%的PWM,使用PWM模式1。将PWM输入到定时器8通道1(PC6),测量PWM的频率/周期、占空比等信息。1,确定PWM波的周期/频率 1KHz为例,PSC=71,ARR=999。2,以4.5.2小节的H桥为例,配置通道输出极性以及互补输出极性。通道输出极性为:高电平有效。 阅读详情

相关推荐

STM32F407xx系列HAL库配置定时器及PWM输出和输入捕获

HAL库配置定时器及PWM输出和捕获实验

m0_70748084的博客 5756

HAL 库开发笔记 - TIM 通用定时器

HAL 库开发笔记 - TIM 定时器

fenhong91的博客 6322

STM32的HAL库开发---高级定时器---互补输出带死区实验

互补输出:OCx输出高电平,则互补通道OCxN输出低电平。OCx输出低电平,则互补通道OCxN输出高电平。带死区控制的互补输出:OCx输出高电平时,则互补通道OCxN过一会再输出输出低电平。这个时间里输出的电平为无效电平。

weixin_59455852的博客 1740

【STM32】HAL库学习 3—hal_time

HAL库学习—hal_time

yck1716的博客 1万+

stm32输出比较模式与PWM模式总结

文章目录前言一、输出比较模式和PWM模式二、PWM模式1.原理2.配置cubemx3.代码及验证三、输出比较模式1.原理2.配置cubemx2.代码及验证总结 前言 最近因为从标准库过渡到hal库,又重新温习了一遍定时器相关的功能,在stm32中定时器经常被用作输出PWM波,在此对定时器常用来输出PWM的两种模式:输出比较模式和PWM模式做一个总结 本次实验使用stm32G431,使用cubemx生成底层代码。 一、输出比较模式和PWM模式 输出比较模式和PWM模式都可以用来输出PWM波,在功能上两者有

weixin_47042449的博客 2万+

STM32CubeMX定时器输出比较模式——输出相位可调矩形波

1.介绍 STM32的定时器通道输出矩形波,可以使用PWM模式和输出比较模式。PWM模式能够产生频率和占空比可调的矩形波信号,但不能对信号的相位进行调节。使用输出比较模式,可以实现信号的相位调节和频率调节,但不能对信号的占空比进行调节。 ...

qq_37405067的博客 1万+

STM32的HAL库开发---高级定时器---输出比较模式实验

定时器的输出比较模式总共有8种,本文使用其中的翻转模式,当TIMXCCR1=TIMXCNT时,翻转OC1REF的电平,OC1REF为输出参考信号,高电平有效,OC1REF信号连接到0C1上面,然后控制CH1输出,CH1通过IO口复用功能,连接到IO口上面,最后输出到外部。计时器工作在递增模式:当CNT的值不断递增,递增到于输出比较寄存器CCR1的值相同时,IO电平翻转,然后CNT值继续递增,递增到ARR时,产生计数器溢出事件,计数器值从0开始重新递增,通过这种方式产生方波或者称为PWM波。

weixin_59455852的博客 883

STM32 HAL库开发学习5. 系统滴答定时器

滴答定时器是Cortext-M内核的一个简单定时器。滴答定时器是一个24位的递减计数器,主要用于为嵌入式系统提供基本的定时功能,也为实时操作系统RTOS提供系统节拍。

猿来这样-谢厂节的博客 3323

【正点原子MP157连载】第十八章 高级定时器实验-摘自【正点原子】STM32MP1 M4裸机CubeIDE开发指南

1)实验平台:正点原子STM32MP157开发板 2)购买链接:https://item.taobao.com/item.htm?&id=629270721801 3)全套实验源码+手册+视频下载地址:http://www.openedv.com/thread-318813-1-1.html 4)正点原子官方B站:https://space.bilibili.com/394620890 5)正点原子STM32MP157技术交流群:691905614 第十八章 高级定时器实验 本章我们主要来学习高级定

weixin_55796564的博客 2659

基于STM32_HAL库定时器输出PWM实现呼吸灯

基于STM32_HAL库定时器输出PWM实现呼吸灯

weixin_54859557的博客 2443

PAM4信号测试实战:从眼图分析到误码率测量的技术演进

在高速数字系统设计中,信号完整性测试是确保数据传输可靠性的核心环节。其基本原理在于通过时域和频域分析,精确评估信号在传输过程中的质量衰减与失真。随着数据速率向56Gbps及以上演进,传统的NRZ编码面临带宽瓶颈,而PAM4调制技术通过在每个符号周期内承载更多比特信息,成为提升信道效率的关键路径。这项技术的工程价值在于,它允许在相同带宽下实现翻倍的数据吞吐量,这对于数据中心互联、PCIe 6.0及800G以太网等高速接口至关重要。然而,PAM4信号电平间距更小,对噪声和抖动极为敏感,导致其原始误码率显著升高,

weixin_42522817的博客 653

【正点原子STM32连载】 第二十二章 高级定时器实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

高级定时器的框图和通用定时器框图很类似,只是添加了其它的一些功能,如:重复计数器、带死区控制的互补输出通道、断路输入等。这些功能在高级定时器框图的位置如下:图 22.1.1高级定时器框图上图中,框出来三个部分,这是和通用定时器不同的地方,下面来分别介绍它们。①重复计数器在F1系列中,高级定时器TIM1和TIM8都有重复计数器。下面来介绍一下重复计数器有什么作用?在学习基本定时器和通用定时器的时候,我们知道定时器发生上溢或者下溢时,会直接生成更新事件。

weixin_55796564的博客 1041

Python Trimesh库实战:5分钟搞定STL文件解析与3D模型可视化

本文介绍了如何使用Python的Trimesh库快速解析STL文件并进行3D模型可视化。通过简洁的代码示例,演示了从环境搭建、模型加载、几何数据提取到基础变换和批量处理的核心流程,帮助开发者和工程师在5分钟内高效完成3D数据处理与可视化任务。

weixin_32005771的博客 155

【STM32】HAL库——定时器PWM输出

本文介绍了使用STM32CubeMX和Keil MDK-ARM开发环境配置STM32F103RCT6的PWM输出功能。主要内容包括:1) 在STM32CubeMX中配置时钟至72MHz;2) 详细讲解PWM工作原理,包括定时器选择、计数模式、输出模式和工作频率计算;3) 具体演示如何配置TIM1_CH1通道的PWM参数;4) 在Keil中实现PWM占空比动态调节的代码实现。文章提供了完整的配置流程和关键代码片段,适合初学者快速掌握STM32的PWM功能开发。

Q大帅 4万+

可变形卷积(Deformable Conv)原理解析与torch代码实现

图6为可变形卷积示意图。图1所示为普通卷积在输入特征图上进行卷积计算的过程,卷积核大小为3*3,在输入特征图尺寸为7*7上进行卷积,将卷积核权重与输入特征图对应位置元素相乘并求和得到输出特征图元素,按一定方式滑动窗口就能计算得到整张输出特征图。图6所示,在input feature map上普通卷积操作对应卷积采样区域是一个卷积核大小的正方形(绿框),而可变形卷积对应的卷积采样区域为一些蓝框表示的点,这就是可变形卷积与普通卷积的区别。先来一张图感受一下,图3为标准卷积与可变形卷积的卷积示例。

panghuzhenbang的博客 5万+

深入解析V4L2框架与高通KMD在Camera驱动中的协同设计

本文深入解析了V4L2框架与高通KMD在Camera驱动中的协同设计。V4L2作为Linux内核标准视频驱动框架,提供了统一的设备抽象与数据流管理;而高通KMD则在其基础上,通过引入CRM等核心模块,构建了一套针对移动平台复杂相机系统的高效内核态驱动架构,实现了硬件配置与执行的解耦与智能调度。

qq_27496129的博客 1143

【STM32】HAL库 STM32CubeMX教程六----定时器中断

前言: 今天我们来学习定时器,32的定时器有着非常丰富的功能,输入捕获/输出比较,PWM,中断等等。是我们学习STM32最频繁使用到的外设之一,所以一定要掌握好,这节我们讲解定时器中断,本系列教程将对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1、芯片:STM32F407ZET6/STM32F103ZET6 2、ST...

Z小旋 22万+

ThinkPHP+Layui开发的ERP管理系统

ERP采购生产销售系统,一款基于ThinkPHP+Layui开发的ERP管理系统,帮助中小企业实现ERP管理规范化,此系统能为你解决五大方面的经营问题:1.采购管理 2.销售管理 3.仓库管理 4.资金管理 5.生产管理,适用于:服装鞋帽、化妆品、机械机电、家具装潢、建材行业、快销品、母婴用品、办公用品、汽配汽修、生鲜农贸、手机通讯、数码家电、医药用品、制造业、信息技术服务行业等。提供全部无加密服务端和前端源代码,独立部署,不受限制。

u011092458的博客 788

HAL库STM32常用外分享(五)—— 定时器 输出比较

定时器输出比较模式

That_Assassin的博客 9656

nRF52840开发环境搭建:从零开始配置Keil与SDK

本文详细介绍了nRF52840开发环境搭建的全过程,包括硬件准备、Keil MDK与nRF5 SDK的安装配置、常见问题解决方案及蓝牙功能开发进阶。特别强调了J-Link调试器的使用和SDK版本匹配的重要性,帮助开发者快速上手nRF52840开发。

weixin_29176179的博客 880

YOLO11-pose关键点检测:训练实战篇 | 自己数据集从labelme标注到生成yolo格式的关键点数据以及训练教程

通过本教程,我们完整地学习了如何使用YOLO11-pose进行关键点检测任务的训练。从数据标注、格式转换到模型训练和评估,每个步骤都提供了详细的代码和说明。更高的精度:随着算法改进,关键点检测的精度将进一步提高实时性能:模型优化将使实时高性能关键点检测成为可能多模态融合:结合深度信息、热成像等多模态数据提升检测能力领域自适应:模型能够更好地适应不同场景和领域希望本教程能够帮助你在自己的项目中成功应用YOLO11-pose进行关键点检测。如果你有任何问题或建议,欢迎在评论区留言讨论!

QQ_778132974的博客 737

基于STM32的TIM—高级定时器的输入捕获、输出比较、PWM互补(详细讲解+标准库HAL库代码)

本章所运用的知识点都是博主从各个网站搜集来的(侵删),也附带一点自己的看法。本章所用到的开发板是野火的霸道F103系列开发板,需要完整可运行代码的同学也可以找@我拿。 上一章我们讲完了基本定时器的使用,这一章我们来学习通用、高级定时器,需要学习通用定时器的小伙伴们,可以跳转此链接:https://blog.youkuaiyun.com/weixin_61384226/article/details/134968683?spm=1001.2014.3001.5501 创作不易,点个关注吧

互相学习进步 7952

SSH 远程登录报错:kex_exchange_identification: Connection closed.....

不知道为啥会出现这样的情形,最近这段时间登录都是正常的,不知道哪里抽风了,就提示这个。错误信息 kex_exchange_identification: Connection closed by remote host 出现在尝试使用 SSH 连接到远程服务器过程中,表明在密钥交换阶段的一开始,远程主机就关闭了连接。服务器的sshd_config文件中配置错误,可能是不允许的加密算法、修订文件中的语法错误,或者未正确指定用于SSH的HostKey。如果当前已有太多活动连接,新的连接尝试可能会被拒绝。

飞越蓝天的专栏 8293

STM32 HAL库-定时器中断

STM32F407 有众多的定时器,其中包括 2 个基本定时器(TIM6 和 TIM7)、10 个通用定时器(TIM2 ~ TIM5、TIM9 ~TIM14)、2 个高级控制定时器(TIM1 和 TIM8),这些定时器彼此完全独立,不共享任何资源。选择定时器,配置时钟源,设置预分频系数,计数模式,设置自动重装载值。

宁静致远的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

新手STM32:基于HAL库的定时器和PWM输出

在 STM32 微控制器的丰富功能模块中,定时器起着不可或缺的关键作用。以 STM32F103C8T6 这款广泛应用的芯片为例,它配备了总计 8 个定时器,依据功能特性和复杂程度可细分为高级定时器(TIM1 和 TIM8)、通用定时器(TIM2 - 5)以及基本定时器(TIM6 和 TIM7)。通用定时器凭借其全面且灵活的功能特性,在众多应用场景中脱颖而出,成为开发者频繁选用的得力工具。高级定时器:TIM1和TIM8通用定时器:TIM2-5基本定时器:TIM6和TIM7。

qq_74267512的博客 1万+

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

STM32CubeMX(02)HAL库之定时器

文章目录前言一、定时器是什么?1、使用定时器关注的问题2、 STM32定时器家族3、定时器的主要功能二、定时器的总线结构1、三种定时器功能比较2、计数器时钟频率计算三、HAL库函数的设计方法1、计数器时钟频率计算举例2、定时器基本配置结构体3、定时器相关库函数四、定时翻转LED灯状态(定时中断方式)1、设计步骤2、工程配置1、系统设置2、GPIO口设置3、定时器2设置4、时钟设置5、项目文件设置6、创建工程文件3、例程4、实现结果总结 前言 前一篇完成了开发板的入门级程序,点亮一个LED灯。今天我们就

qq_45138815的博客 6477

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: STM32HAL库高级定时器实验——高级定时器输出指定个数PWM
下一篇: 正点原子STM32HAL库学习记录(stm32f103zet6)——高级定时器介绍以及相关实验
玛卡巴卡也会有悲伤
博客等级 码龄4年 242粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值