STM32——07-STM32定时器Timer

news/2024/11/25 22:34:53/
定时器介绍
软件定时
缺点:不精确、占用 CPU 资源
void Delay500ms () //@11.0592MHz
{
unsigned char i , j , k ;
_nop_ ();
i = 4 ;
j = 129 ;
k = 119 ;
do
{
do
{
while ( -- k );
} while ( -- j );
} while ( -- i );
}
定时器工作原理:
使用精准的时基,通过硬件的方式,实现定时功能。定时器核心就是计数器。
定时器分类:
基本定时器( TIM6~TIM7
通用定时器( TIM2~TIM5
高级定时器( TIM1 和TIM8)

STM32F103C8T6定时器资源:

通用定时器介绍:  

 1) 16 位向上、向下、向上/向下自动装载计数器(

TIMx_CNT )。
2 ) 16 位可编程 ( 可以实时修改 ) 预分频器 ( TIMx_PSC ) ,计数器时钟频率的分频系数为 1 65535 之间的
任意数值。
3 4 个独立通道(
TIMx_CH1 ~ 4 ),这些通道可以用来作为:
A .输入捕获
B .输出比较
C PWM 生成 ( 边缘或中间对齐模式 )
D .单脉冲模式输出
4 )可使用外部信号(
TIMx_ETR )控制定时器和定时器互连(可以用 1 个定时器控制另外一个定时器)
的同步电路。
5 )如下事件发生时产生中断 / DMA
A .更新:计数器向上溢出 / 向下溢出,计数器初始化 ( 通过软件或者内部 / 外部触发 )
B .触发事件 ( 计数器启动、停止、初始化或者由内部 / 外部触发计数 )
C .输入捕获
D .输出比较
E .支持针对定位的增量 ( 正交 ) 编码器和霍尔传感器电路
F .触发输入作为外部时钟或者按周期的电流管理

 定时器计数模式:

定时器时钟源: 

定时器溢出时间计算公式:

例如,要定时500ms,则:PSC=7199ARR=4999Tclk=72M  

定时器中断实验
需求:使用定时器中断方法,每 500ms 翻转一次 LED1 灯状态。
1. RCC 配置
2. LED1 灯配置
3. 时钟数配置
4. TIM2 配置

 

5. 工程配置
6. 重写更新中断回调函数
void HAL_TIM_PeriodElapsedCallback ( TIM_HandleTypeDef * htim )
{
if ( htim -> Instance == TIM2 )
HAL_GPIO_TogglePin ( GPIOB , GPIO_PIN_8 );
}
7. 启动定时器
main.c 中,在定时器初始化命令之后加入以下代码:
HAL_TIM_Base_Start_IT ( & htim2 );
PWM 介绍
STM32F103C8T6 PWM 资源:
高级定时器( TIM1 ): 7
通用定时器( TIM2~TIM4 ):各 4
PWM 输出模式:
PWM 模式 1 :在向上计数时,一旦 CNT < CCRx 时输出为有效电平,否则为无效电平; 在向
下计数时,一旦 CNT > CCRx 时输出为无效电平,否则为有效电平。
PWM 模式 2 :在向上计数时,一旦 CNT < CCRx 时输出为无效电平,否则为有效电平; 在向
下计数时,一旦 CNT > CCRx 时输出为有效电平,否则为无效电平。
PWM 实验
需求:使用 PWM 点亮 LED1 实现呼吸灯效果。 LED 灯为什么可以越来越亮,越来越暗?
这是由不同的占空比决定的。
如何计算周期 / 频率?
假如频率为 2kHz ,则: PSC=71 ARR=499
LED1 连接到哪个定时器的哪一路?
学会看产品手册:
开始实战!
1. 设置时钟
2. 设置定时器
记得把极性设置为 Low ,因为 LED 灯是低电平才亮。
3. 配置工程
4. 业务代码
// 定义变量
uint16_t pwmVal=0; //调整PWM占空比
uint8_t dir=1; //设置改变方向。1:占空比越来越大;0:占空比越来越小
// 使能 Timer4 第3通道 PWM 输出
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_3);
// while循环实现呼吸灯效果
while (1)
{
HAL_Delay(1);
if (dir)
pwmVal++;
else
pwmVal--;
if (pwmVal > 500)
dir = 0;
if (pwmVal == 0)
dir =1;
//修改比较值,修改占空比
__HAL_TIM_SetCompare(&htim4, TIM_CHANNEL_3, pwmVal);
}

http://www.ppmy.cn/news/351967.html

相关文章

【Linux后端服务器开发】常用开发工具

目录 一、apt / yum 二、gcc / g 三、make / makefile 四、vi / vim 五、gdb 一、apt / yum apt 和 yum 都是在Linux环境下的软件包管理器&#xff0c;负责软件的查找、安装、更新与卸载。 apt 是Ubuntu系统的包管理器&#xff0c;yum是Centos系统的包管理器&#xff0c…

echarts数字云

<template><div><div><div idmain style"width: 100%; margin:0 auto; height: 550px; "></div></div></div> </template> <script> // 时间转换 import * as echarts from echarts import echarts-wordcloud…

教程资源合集(网上搜集整理)

【Adobe After Effects( AE ) 实用学习教程合集】 AE零基础入门教程&#xff08;100讲&#xff09;http://t.cn/RICjTnQ AE&#xff08;cc&#xff09;教程全集http://t.cn/Rb3G6dp AK大神AE系列教程合集http://t.cn/RZVtdi5 AE零基础从入门到精通教程合集http://t.cn/RJFK…

HTML实现学习网站首页

项目访问 reset.css /* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126License: none (public domain) */html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn…

深度学习(三十三)——GAN参考资源

GAN参考资源 https://blog.csdn.net/liuxiao214/article/category/6940697 某GAN专栏 https://mp.weixin.qq.com/s/oCDlhzjOYTIhsr5JuoRCJQ IRGAN&#xff1a;大一统信息检索模型的博弈竞争 https://mp.weixin.qq.com/s/4Daw-2aRmzcCMtxdvB3uYQ IRGAN &#xff1a;生成对…

Android中利用Jsoup让WebView清除Html标签并让图片适应大小并居中

在App应用中&#xff0c;我们常常会加载一些新闻、通知等内容&#xff0c;这些内容很多来自于数据库中存储的HTML文本&#xff0c;里面的标签杂乱不堪&#xff0c;且内容中又包括图片等。 处理这些内容&#xff0c;我们可以利用正则表达式来处理&#xff0c;但标签太多&#xf…

React Demo Three - 简书掘金

Create by jsliang on 2019-4-7 19:37:41 Recently revised in 2019-04-23 09:40:44 Hello 小伙伴们&#xff0c;如果觉得本文还不错&#xff0c;记得给个 star &#xff0c; 小伙伴们的 star 是我持续更新的动力&#xff01;GitHub 地址 React 系列文章代码地址 本文章最终成果…

HTML基础

1、head标签 metatitlelinkstylescript 2、body标签 图标p标签br标签hr标签input系列 (1) 文本域 input type"text" (2) 密码 input type"password" (3) 提交 input type"submit" (4) 按钮 input type"button" (5) 单选框 input type&…