stm32cubeMX定时器控制LED闪烁

一、定时器基本介绍

1、stm32定时器

STM32总共有8个定时器,分别是2个高级定时器(TIM1、TIM8),4个通用定时器(TIM2、TIM3、TIM4、TIM5)和2个基本定时器(TIM5、TIM6),如下图所示
在这里插入图片描述

2、 通用定时器功能和特点

STM32的众多定时器中我们使用最多的是高级定时器和通用定时器,而高级定时器一般也是用作通用定时器的功能,下面我们就以通用定时器为例进行讲解,其功能和特点包括:

位于低速的APB1总线上(APB1)
16 位向上、向下、向上/向下(中心对齐)计数模式,自动装载计数器(TIMx_CNT)。
16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数 为 1~65535 之间的任意数值。
4 个独立通道(TIMx_CH1~4),这些通道可以用来作为:
① 输入捕获

    ② 输出比较

    ③ PWM 生成(边缘或中间对齐模式) 

    ④ 单脉冲模式输出 

可使用外部信号(TIMx_ETR)控制定时器和定时器互连(可以用 1 个定时器控制另外一个定时器)的同步电路。
如下事件发生时产生中断/DMA(6个独立的IRQ/DMA请求生成器):
①更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)

    ②触发事件(计数器启动、停止、初始化或者由内部/外部触发计数) 

    ③输入捕获 

    ④输出比较 

    ⑤支持针对定位的增量(正交)编码器和霍尔传感器电路 

    ⑥触发输入作为外部时钟或者按周期的电流管理

STM32 的通用定时器可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM)等。
使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源。

3. 计数器模式

    1. 计数器模式
      通用定时器可以向上计数、向下计数、向上向下双向计数模式。

①向上计数模式:计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且产生一个计数器溢出事件。

②向下计数模式:计数器从自动装入的值(TIMx_ARR)开始向下计数到0,然后从自动装入的值重新开始,并产生一个计数器向下溢出事件。

③中央对齐模式(向上/向下计数):计数器从0开始计数到自动装入的值-1,产生一个计数器溢出事件,然后向下计数到1并且产生一个计数器溢出事件;然后再从0开始重新计数。
————————————————
版权声明:本文为CSDN博主「KevinFlyn」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44016222/article/details/123507270

二、stm32cubeMX定时器控制LED闪烁并输出hello windows

1、新建工程:
在这里插入图片描述

芯片选择stm32C8T6
在这里插入图片描述
点击system core,选择SYS,右侧选择serial wire
在这里插入图片描述

点击RCC,右边选择Crystal/Ceramic Resonator
在这里插入图片描述

2、配置IO口
在这里插入图片描述

3、配置定时器2.,这里我们使用定时器二来实现定时功能。
在这里插入图片描述

4、配置中断
在这里插入图片描述

5、配置时钟
在这里插入图片描述

6、生成工程
在这里插入图片描述
7、配置main函数
位置一:
在这里插入图片描述
位置二:
在这里插入图片描述

三、结果

定时器控制LED灯


在这里插入图片描述

四、总结

之前作业中的延时功能都是通过循环、delay/Hal_delay函数等实现,本次作业通过定时器Timer方式实现时间的精准控制,相当于给CPU上了一个闹钟,CPU平时处理其它任务,当定时时间到了以后,处理定时相关的任务。通过这次实验我更好的掌握了stm32定时器的功能。

五、参考

https://blog.csdn.net/qq_44016222/article/details/123507270

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,你需要在STM32CubeMX中配置定时器和GPIO引脚。以下是一个基本的步骤: 1. 打开STM32CubeMX并选择你的芯片型号。 2. 在"Pinout & Configuration"选项卡中,选择一个GPIO引脚作为LED控制引脚。 3. 在"Clock Configuration"选项卡中,启用定时器时钟。 4. 在"Configuration"选项卡中,选择一个定时器,并设置它的时钟源和分频器。 5. 在"NVIC Settings"选项卡中,启用定时器中断(如果需要)。 接下来,你需要在代码中编写相关的控制逻辑。以下是一个示例代码: ``` #include "main.h" #include "tim.h" void LED_Toggle(void) { HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); } int main(void) { HAL_Init(); MX_GPIO_Init(); MX_TIM2_Init(); HAL_TIM_Base_Start_IT(&htim2); while (1) { // Your main code here } } void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim->Instance == TIM2) { LED_Toggle(); } } ``` 在这个例子中,我们使用TIM2定时器控制LED闪烁。首先,我们在main函数中启动了定时器,并在while循环中执行其他操作。然后,在HAL_TIM_PeriodElapsedCallback回调函数中,我们切换LED的状态。这个回调函数会在定时器的计数器达到设定的周期时被调用。在这个例子中,LED的状态会每个定时器周期切换一次。 注意,这个例子仅供参考,你需要根据具体的要求进行修改。例如,你可能需要改变定时器的周期和占空比,或者使用不同的GPIO引脚和定时器

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值