TIM基本定时器——定时
1.定时器功能:
定时、输出比较、输入捕获、互补输出
分类:
基本定时器(定时)
通用定时器(定时、输出比较、输入捕获)
高级定时器(定时、输出比较、输入捕获、互补输出)
F103系列的开发板一般是俩个高级定时器TIM1、TIM8;4个通用定时器TIM2/3/4/5;2个基本定时器TIM6/7
而根据容量的大小,又稍有区别。
STM32S103RBT6开发板只有TIM1/2/3/4
二、基本定时器:
1.16位,TIM6/7,只能向上计数
2.无GPIO引脚,属于内部资源
3.挂接在APB1上,时钟来自PCLK1,但频率是72MHz(原因如图),可1~65536分频
4.计数器时钟=时钟源/(分频系数+1),则计数1次时间就是 1/计数器时钟
例:
如果要定时1ms,时钟源的72MHz不能改动,可以改的是分频系数和重装载的值。如:
令PSC=72-1=71,定时器频率为72/(71+1)=1MHz。
则一次计数为1us。ARR值设置为1000,则可以定时1ms。
typedef struct
{uint16_t TIM_Prescaler; //分频因子 72-1 即频率为1MHz,即1us uint16_t TIM_CounterMode; //计数模式(基本定时器只能向上) 向上/向下(基本定时器可以不配置)uint16_t TIM_Period; //自动重装载值 1000-1 计数1000次,即1ms uint16_t TIM_ClockDivision; //外部输入时钟分频因子(基本定时器没有)uint8_t TIM_RepetitionCounter; //重复计数器(高级定时器专属) 100,则每次重装载不触发中断,重装载100次以后才触发中断,即100ms
} TIM_TimeBaseInitTypeDef; //时基初始化结构体
tim.c
#include "tim.h"void TIM_Config(void)
{TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);TIM_TimeBaseInitStruct.TIM_Prescaler=71;TIM_TimeBaseInitStruct.TIM_Period=1000-1; TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStruct);TIM4_NVIC();TIM_ClearFlag(TIM4,TIM_FLAG_Update);TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);TIM_Cmd(TIM4,ENABLE);}
void TIM4_NVIC(void)
{NVIC_InitTypeDef NVIC_InitStruct;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);NVIC_InitStruct.NVIC_IRQChannel= TIM4_IRQn;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStruct.NVIC_IRQChannelSubPriority= 1 ;NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStruct);
}
main.c
#include "stm32f10x.h"
#include "led.h"
#include "./TIM/tim.h"
uint16_t time=0;
int main()
{LED_GPIO_Config();TIM_Config();while(1){if(time==1000){LED_G(1);}else if(time==2000){LED_G(0);time=0;}}
}
中断函数:
void TIM4_IRQHandler(void)
{if(TIM_GetITStatus(TIM4,TIM_IT_Update)==SET){time++;TIM_ClearITPendingBit(TIM4,TIM_IT_Update);}
}
TIM基本定时器——定时相关推荐
- c语言定时器定时1ms程序,STM32 Cubemx 配置定时器定时1mS
最近才发现原来我把定时器里的配置参数代表的意义给搞混了,这里记录一下,防止以后自己忘记. 以建立一个定时1mS定时器为例: 1.先打开定时器 2.配置好时钟 3.配置定时器设置 重点来了,以前在这里我 ...
- stm32初学之定时器TIM的基本定时功能以及介绍
文章目录 前言 一.定时器基本介绍以及定时器原理图 1.定时器基本介绍 2.定时器原理图 3.定时器配置 二.定时器计算 前言 提示:以下是本篇文章正文内容,下面案例可供参考 一.定时器基本介绍以及定 ...
- STM32入门笔记04_TIM定时器+案例:TIM定时器定时中断、定时器外部时钟
TIM定时器 TIM简介 TIM(Timer) 定时器 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 16位计数器.预分频器.自动重装寄存器的时基单元,在72MHz(系统主频)计数时 ...
- 第31章 TIM—基本定时器—零死角玩转STM32-F429系列
第31章 TIM-基本定时器 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fire ...
- STM32CubeMX与HAL库学习--基本定时器定时中断
STM32CubeMX与HAL库学习--基本定时器定时中断 背景 STM32CubeMX生成初始化代码 在MDK-ARM里编辑代码 其他 背景 本人小白,最近在学着使用STM32CubeMX与HAL库 ...
- stm32定时器定时中断
主频72MHz:最大计时59.65s 基本定时器: 基准时钟 预分频器 计数器 计数器与自动重装载寄存器进行比较 相等时计时时间到 进行中断相应 主模式触发DAC 硬件自动化 通用定时器: 计数模式不 ...
- STM32 定时器定时计算
STM32 定时器定时计算 STM32 定时器频率 例子 公式 reference STM32 定时器频率 定时时间 = 定时器频率 / 倍频 /装载周期 htim1.Init.Prescaler = ...
- php定时爬虫,thinkphp5使用workerman定时器定时爬取站点内容的代码
本篇文章给大家分享的内容是关于thinkphp5使用workerman定时器定时爬取某站点新闻资讯等的内容,内容很详细,有需要的朋友可以参考一下,希望可以帮助到你们. 1.首先通过 composer ...
- ASP.NET通过Global.asax和Timer定时器定时运行后台代码
ASP.NET通过Global.asax和Timer定时器定时运行后台代码 Global.asax文件 1.Application_Start方法添加 // 在应用程序启动时运行的代码 ...
最新文章
- 【CTF】实验吧 困在栅栏里的凯撒
- 农村程序员吐槽:虽然挣着2万高薪,但却舍不得吃舍不得穿
- OpenGL学习(4)——纹理(补)
- 二十、SPI设备驱动及应用(一)
- JAVA源码优化、分析工具
- boost::hana::zip_with用法的测试程序
- Effective Java(1)-创建和销毁对象
- 不相交集类及其应用生成迷宫
- [django]Django输出页面方式的补充
- nyoj 456 邮票分你一半【01背包】
- 软件构建--系统设计
- 6月第3周网络安全报告:境内感染网络病毒主机55.4万
- 智能电表无线(NB-IOT/LoRa)红外读表远程抄表器实施方案
- mt6573集成MCP nandflash的详细方法
- 共享单车原理大揭秘:小编亲自示范如何“撬锁”
- 金彩教育:选择关键词要参考哪些数据
- [论文阅读笔记26]MRC4NER:使用阅读理解方法来解决NER任务
- [置顶] android关机闹钟设计思路
- 计算机网络体系结构划分
- 【Python字符串】