STM32定时器输出比较器可以直接操作对应的GPIO,在计数器值等于比较寄存器的值时,对应的GPIO可以有以下四种动作

  无动作

  激活

  取消激活

  翻转

激活电平由输出极性寄存器决定

将LED置于定时器输出比较对应的GPIO上,对它的操作将非常方便,完全由硬件完成,不消耗CPU时间,无需中断,每个定时器都对应有4个输出比较,可以轻松实现4个LED的流水灯效果

宏定义部分如下

#define USER_TIM_PSC        36000-1
#define USER_TIM_PERIOD        1000-1
#define USER_TIM_PULSEA        0
#define USER_TIM_PULSEB        500#define USER_TIM            TIM2
#define USER_TIM_RCC        RCC_APB1Periph_TIM2
#define USER_TIM_RCC_CMD    RCC_APB1PeriphClockCmd
#define USER_TIM_GPIO        GPIOA
#define USER_TIM_GPIO_RCC    RCC_APB2Periph_GPIOA
#define USER_TIM_PINA        GPIO_Pin_1
#define USER_TIM_PINB        GPIO_Pin_0

定时器配置如下

    TIM_TimeBaseInitTypeDef tim_timebase_struct;TIM_OCInitTypeDef tim_oc_struct;GPIO_InitTypeDef gpio_struct;GPIO_RCC_CMD(USER_TIM_GPIO_RCC, ENABLE);USER_TIM_RCC_CMD(USER_TIM_RCC, ENABLE);gpio_struct.GPIO_Mode = GPIO_Mode_AF_PP;gpio_struct.GPIO_Speed = GPIO_Speed_2MHz;gpio_struct.GPIO_Pin = USER_TIM_PINA | USER_TIM_PINB;GPIO_Init(USER_TIM_GPIO, &gpio_struct);TIM_TimeBaseStructInit(&tim_timebase_struct);tim_timebase_struct.TIM_CounterMode = TIM_CounterMode_Up;tim_timebase_struct.TIM_Prescaler = USER_TIM_PSC;tim_timebase_struct.TIM_Period = USER_TIM_PERIOD;tim_timebase_struct.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseInit(USER_TIM, &tim_timebase_struct);TIM_OCStructInit(&tim_oc_struct);tim_oc_struct.TIM_OCMode = TIM_OCMode_Active;tim_oc_struct.TIM_OCPolarity = TIM_OCPolarity_Low;tim_oc_struct.TIM_OutputState = TIM_OutputState_Enable;tim_oc_struct.TIM_Pulse = USER_TIM_PULSEA;TIM_OC2Init(USER_TIM, &tim_oc_struct);tim_oc_struct.TIM_Pulse = USER_TIM_PULSEB;TIM_OC1Init(USER_TIM, &tim_oc_struct);TIM_OC2PreloadConfig(USER_TIM, TIM_OCPreload_Disable);TIM_OC1PreloadConfig(USER_TIM, TIM_OCPreload_Disable);TIM_ARRPreloadConfig(USER_TIM, ENABLE);TIM_Cmd(USER_TIM, ENABLE);

本工程使用的野火MINI开发板只有两个LED灯且都不在定时器的输出比较对应GPIO上,所以本工程使用了TIM2的CH1和CH2实现两个LED的流水灯效果,一次流水完为1秒,通过杜邦线将输出引到LED,可以观察到效果

定时器的输出比较功能对GPIO的激活和取消激活功能的应用场景不知道是怎样的,因为只要第一次激活或者取消激活,后续它的状态将保持,所以在这里用于操作LED是不方便的,但是确实可以观察到明显的一次流水效果。它们的功能有待后续发掘

在实现了单个LED的闪烁,多个LED的流水灯效果,还可以用定时器的PWM模式实现呼吸灯效果,玩转LED,待续

转载于:https://www.cnblogs.com/qingkai/p/9779685.html

STM32使用TIM闪烁LED——输出比较方式相关推荐

  1. 启明欣欣STM32开发板闪烁LED实验

    最近在咸鱼上买了一块启明欣欣的STM32板子,准备在上面测试open62541和CANopen,到货后如下图, 找商家要了资料,然后运行一个LED灯的实验来简单测试下板子,本文记录一下这个过程. 一 ...

  2. keil8个led灯闪烁c语言程序,简单的STM32 汇编程序—闪烁LED

    要移植操作系统,汇编是道不得不跨过去的坎.所以承接上篇的思路,我准备用汇编写一个简单的闪烁LED灯的程式.以此练习汇编,为操作系统做准备. 第一步,还是和上篇一样,建立一个空的文件夹. 第二步,因为是 ...

  3. STM32通过串口控制LED闪烁或者呼吸效果

    STM32通过串口控制LED闪烁或者呼吸效果 目录 STM32通过串口控制LED闪烁或者呼吸效果 1.准备工作 2.思路分析 3.实际操作 4.小结 1.准备工作 1.首先我们需要准备32的最小系统板 ...

  4. stm32单片机屏幕一直闪_STM32F407[3] 闪烁LED

    按照上一小节的内容,我们已经能点亮LED了.同样的,把它熄灭非常简单:把对应GPIO设置为低电平即可.回忆上次的内容,想一下那个单刀双掷开关,对吧? 快速开始 结合一下,我们可以得到这样的思路:PD1 ...

  5. LED灯多种方式闪烁的FPGA实现

    一.Quartus开发工具简介 Quartus Prime是inter FPGA(Altera FPGA在2015年被inter收购)的开发套件,到inter FPGA的官网可下载软件的安装包.在下载 ...

  6. STM32 IO口的8中配置方式解读(推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟)

    转自:http://blog.csdn.net/u010592722/article/details/45746079 STM32  IO口的8中配置方式: (1)GPIO_Mode_AIN 模拟输入 ...

  7. STM32驱动全彩LED灯模块WS2812

    STM32驱动全彩LED灯模块WS2812 WS2812全彩LED灯模块系列,可以进行级联实现灯带的效果,MCU端通过一个管脚可以控制所有级联的LED灯的不同发光颜色显示. 级联电路 WS2811(未 ...

  8. 闪烁LED灯Verilog

    1.计数器工作原理 计数器的核心元件是触发器,基本功能是对脉冲进行计数,其所能记忆脉冲最大的数目称为该计数器的模/值.计数器常用在分频.定时等处.计数器的种类很多,按照计数方式的不同可以分为二进制计数 ...

  9. STM32汇编语言点亮led灯

    STM32汇编语言点亮led灯 首先,这篇blog的主要内容是在C语言中调用汇编语言写的函数.即在我们常用的标准库函数工程中,对外设(这里指led)使用汇编语言完成相关的寄存器配置和控制. 一.背景 ...

最新文章

  1. 摊牌了,我靠他实现了NLP模型使用入门
  2. Centos7修改主机名
  3. highcharts 怎么去掉鼠标悬停效果_练瑜伽减肥没效果什么原因?
  4. Mysql入门的10条语句
  5. linux系统下常用的打包/解压缩包命令
  6. BSD:Berkeley Software Distribution,伯克利软件套件
  7. VBA中常用的字符串处理函数
  8. 截获webView点击事件
  9. Axure RP 8 for Mac(交互式原型设计工具)汉化版
  10. php 图片 中文乱码,php utf8页面验证码图片中文乱码
  11. 深入理解Nacos源码注册中心之服务发现(订阅拉取)
  12. Linux 性能分析工具
  13. java download oracle,Java Archive Downloads - Java SE 6 | Oracle 中国
  14. QQ魔法卡片辅助工具外挂silverlight版
  15. window下内网远程控制工具
  16. “用户请求取消当前的操作”的几种解决办法
  17. SEO新手入门必读,系统学习SEO知识理念
  18. h5与原生app交互的原理
  19. python 使用while循环输出*组成的菱形_python实现while循环打印星星的四种形状
  20. c语言单片机温度调节系统设计,基于单片机的温度控制系统的设计

热门文章

  1. 错误:android.util.SuperNotCalledException
  2. Java 最坑爹的 10 大功能点!
  3. 常见的一些 Hash 函数
  4. 这一次彻底搞懂 Git Rebase
  5. 你在京东购买的商品,是怎么出现在抖音里面的?
  6. 我的HTTP/3学习笔记
  7. 2019年,被高估的AI与数据科学该如何发展?
  8. 【手写系列】写出我的第一个框架:迷你版Spring MVC
  9. java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/
  10. jpa mysql sql分页查询语句_jpa 中 Query 的分页查询和更新