STM32使用TIM闪烁LED——输出比较方式
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——输出比较方式相关推荐
- 启明欣欣STM32开发板闪烁LED实验
最近在咸鱼上买了一块启明欣欣的STM32板子,准备在上面测试open62541和CANopen,到货后如下图, 找商家要了资料,然后运行一个LED灯的实验来简单测试下板子,本文记录一下这个过程. 一 ...
- keil8个led灯闪烁c语言程序,简单的STM32 汇编程序—闪烁LED
要移植操作系统,汇编是道不得不跨过去的坎.所以承接上篇的思路,我准备用汇编写一个简单的闪烁LED灯的程式.以此练习汇编,为操作系统做准备. 第一步,还是和上篇一样,建立一个空的文件夹. 第二步,因为是 ...
- STM32通过串口控制LED闪烁或者呼吸效果
STM32通过串口控制LED闪烁或者呼吸效果 目录 STM32通过串口控制LED闪烁或者呼吸效果 1.准备工作 2.思路分析 3.实际操作 4.小结 1.准备工作 1.首先我们需要准备32的最小系统板 ...
- stm32单片机屏幕一直闪_STM32F407[3] 闪烁LED
按照上一小节的内容,我们已经能点亮LED了.同样的,把它熄灭非常简单:把对应GPIO设置为低电平即可.回忆上次的内容,想一下那个单刀双掷开关,对吧? 快速开始 结合一下,我们可以得到这样的思路:PD1 ...
- LED灯多种方式闪烁的FPGA实现
一.Quartus开发工具简介 Quartus Prime是inter FPGA(Altera FPGA在2015年被inter收购)的开发套件,到inter FPGA的官网可下载软件的安装包.在下载 ...
- STM32 IO口的8中配置方式解读(推挽输出、开漏输出、复用开漏输出、复用推挽输出以及上拉输入、下拉输入、浮空输入、模拟)
转自:http://blog.csdn.net/u010592722/article/details/45746079 STM32 IO口的8中配置方式: (1)GPIO_Mode_AIN 模拟输入 ...
- STM32驱动全彩LED灯模块WS2812
STM32驱动全彩LED灯模块WS2812 WS2812全彩LED灯模块系列,可以进行级联实现灯带的效果,MCU端通过一个管脚可以控制所有级联的LED灯的不同发光颜色显示. 级联电路 WS2811(未 ...
- 闪烁LED灯Verilog
1.计数器工作原理 计数器的核心元件是触发器,基本功能是对脉冲进行计数,其所能记忆脉冲最大的数目称为该计数器的模/值.计数器常用在分频.定时等处.计数器的种类很多,按照计数方式的不同可以分为二进制计数 ...
- STM32汇编语言点亮led灯
STM32汇编语言点亮led灯 首先,这篇blog的主要内容是在C语言中调用汇编语言写的函数.即在我们常用的标准库函数工程中,对外设(这里指led)使用汇编语言完成相关的寄存器配置和控制. 一.背景 ...
最新文章
- 摊牌了,我靠他实现了NLP模型使用入门
- Centos7修改主机名
- highcharts 怎么去掉鼠标悬停效果_练瑜伽减肥没效果什么原因?
- Mysql入门的10条语句
- linux系统下常用的打包/解压缩包命令
- BSD:Berkeley Software Distribution,伯克利软件套件
- VBA中常用的字符串处理函数
- 截获webView点击事件
- Axure RP 8 for Mac(交互式原型设计工具)汉化版
- php 图片 中文乱码,php utf8页面验证码图片中文乱码
- 深入理解Nacos源码注册中心之服务发现(订阅拉取)
- Linux 性能分析工具
- java download oracle,Java Archive Downloads - Java SE 6 | Oracle 中国
- QQ魔法卡片辅助工具外挂silverlight版
- window下内网远程控制工具
- “用户请求取消当前的操作”的几种解决办法
- SEO新手入门必读,系统学习SEO知识理念
- h5与原生app交互的原理
- python 使用while循环输出*组成的菱形_python实现while循环打印星星的四种形状
- c语言单片机温度调节系统设计,基于单片机的温度控制系统的设计
热门文章
- 错误:android.util.SuperNotCalledException
- Java 最坑爹的 10 大功能点!
- 常见的一些 Hash 函数
- 这一次彻底搞懂 Git Rebase
- 你在京东购买的商品,是怎么出现在抖音里面的?
- 我的HTTP/3学习笔记
- 2019年,被高估的AI与数据科学该如何发展?
- 【手写系列】写出我的第一个框架:迷你版Spring MVC
- java.lang.AbstractMethodError: javax.servlet.jsp.JspFactory.getJspApplicationContext(Ljavax/servlet/
- jpa mysql sql分页查询语句_jpa 中 Query 的分页查询和更新