当前位置: 首页 > article >正文

1.STM32之定时器TIM---第一部分(基本定时器)(功能最强大结构最复杂的一个外设)(实验基本定时功能)-----定时器定时中断(利用内部时钟72M)

定时器TIM是STM32外设中功能最强大结构最复杂的一个外设!Whappy

STM32F103C8T6总共由一个高级定时器3个通用定时器

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "Timer.h"


uint16_t Num;

int main(void)
{
	OLED_Init();
	Timer_Init();
	OLED_ShowString(1, 4, "Hi,Boy!");
	OLED_ShowString(2, 1, "Num:");
	
	
	while (1)
	{
		OLED_ShowNum(2,5,Num,5);
	}
}




void TIM2_IRQHandler(void)
{
	if(TIM_GetITStatus(TIM2,TIM_IT_Update) == SET)//检查一下中断标志位
	{
		//用户代码
		
		Num++;
		TIM_ClearITPendingBit(TIM2, TIM_IT_Update); //清除中断标志位
	}
}

#include "stm32f10x.h"                  // Device header


//定时器初始化
void Timer_Init(void)
{
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); //(1)开启TIM2的时钟
	TIM_InternalClockConfig(TIM2);//(2)开启系统内部时钟
	
	//(3)配置时基单元
	TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
	TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;
	TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
	TIM_TimeBaseInitStructure.TIM_Period = 10000-1;
	TIM_TimeBaseInitStructure.TIM_Prescaler = 7200-1;
	TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;

	TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);
	
	TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);//(4)使能更新中断
	
	//(5)配置NVIC
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	
	NVIC_InitTypeDef NVIC_InitStructure;
	NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;  //中断通道
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
	
	NVIC_Init(&NVIC_InitStructure);
	
	//(5)启动定时器
	TIM_Cmd(TIM2,ENABLE);
	
	
}


//定时器中断入口(在启动文件里找)
/*
void TIM2_IRQHandler(void)
{
	if(TIM_GetITStatus(TIM12,TIM_IT_Update) == SET)//检查一下中断标志位
	{
		//用户代码
		
		Num++;
		TIM_ClearITPendingBit(TIM2,TIM_IT_Update); //清除中断标志位
	}
}
*/






总结:配置一下最简单的内部时钟触发定时器计数,5步走,就可以完成配置(从代码中参考定时器中断基本结构图进行配置)


http://www.kler.cn/a/373037.html

相关文章:

  • uniapp通过id获取div的宽度,高度,位置等(应该是 任意平台都通用 )
  • Jenkins 发布 Java 项目:高效持续集成与部署
  • 头歌网络安全爬虫
  • 【Mac】Homebrew
  • Node.js 循环依赖或者递归调用导致的堆栈溢出问题
  • vue2项目在发布后更新,提示用户刷新页面
  • OpenCV视觉分析之目标跟踪(7)目标跟踪器类TrackerVit的使用
  • VueRouter引入步骤
  • QT——记事本项目
  • QT 实现自定义开机加载动画一
  • 网络准入控制
  • QNAP威联通NAS第三方动态域名解析之docker部署DDNS GO
  • CPU算法分析LiteAIServer视频智能分析平台噪声检测功能在视频监控中的应用与优势
  • 图像处理 -- 白平衡处理简介
  • 企业物流管理数据仓库建设的全面指南
  • 在 Ubuntu 22.04 LTS 上安装 NVM (Node Version Manager) 管理和切换不同版本的 Node.js npm
  • 聚焦汽车智能化与电动化︱AUTO TECH 2025 华南展,以展带会,已全面启动,与您相约11月广州!
  • Linux 服务器中完整导出MySQL的某个库
  • PHP + Windows小皮面板 + VScode 安装教程
  • 【Linux】安装并配置 Microsoft SQL Server 数据库(Ubuntu 22.04)
  • commitlint+lint-staged+husky
  • 在线UI设计工具:创意与效率的结合
  • sheng的学习笔记-AI基础-激活函数
  • 大模型流水线并行和量化学习资料
  • 第12次CCF CSP认证真题解
  • iOS MPNowPlayingInfoCenter 通知栏、锁屏 显示当前播放的媒体信息