stm32通用定时器1s延时实现LED闪烁

2023-05-16

stm32有很多定时器,每种定时器的功能也不尽相同,今天学习了如何用通用定时器实现1s延时,使LED灯闪烁,现总结如下:

步骤总结:

使能定时器时钟->配置定时器结构体->清空定时器标志位->开启定时器中断->使能定时器->编写中断服务函数

Timer.c:

#include "Timer.h"

void TimerBase_Config(void)
{
	//开时钟
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
	//定义结构体变量
	TIM_TimeBaseInitTypeDef TimerBaseInitStructure;
	NVIC_InitTypeDef NVICInitStructure;
	//配置定时器结构体
	TimerBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
	TimerBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
	TimerBaseInitStructure.TIM_Period = 10000;
	TimerBaseInitStructure.TIM_Prescaler = 7200;
	TIM_TimeBaseInit(TIM2, &TimerBaseInitStructure);
	//清空标志位
	TIM_ClearFlag(TIM2,TIM_FLAG_Update);
	//开启定时器中断
	TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
	//使能定时器
	TIM_Cmd(TIM2,ENABLE);
	//配置NVIC结构体
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
	NVICInitStructure.NVIC_IRQChannel = TIM2_IRQn;
	NVICInitStructure.NVIC_IRQChannelCmd = ENABLE;
	NVICInitStructure.NVIC_IRQChannelPreemptionPriority = 1;
	NVICInitStructure.NVIC_IRQChannelSubPriority = 1;
	NVIC_Init(&NVICInitStructure);
}

stm32f103x_it.c:

void TIM2_IRQHandler(void)
{
	static uint16_t temp;
	
	if(TIM_GetITStatus(TIM2,TIM_IT_Update) != RESET)
	{
		if(temp ++ %2 == 1)
		{
			GPIO_ResetBits(LED_G_GPIO_PORT,LED_G_GPIO_PIN);
		}
		else 
		{
			GPIO_SetBits(LED_G_GPIO_PORT,LED_G_GPIO_PIN);
		}
	}
	TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
}

main.c:

#include "stm32f10x.h"
#include "led.h"
#include "Timer.h"

int main(void)
{
	TimerBase_Config();
	LED_GPIO_Confing();
	GPIO_SetBits(LED_G_GPIO_PORT,LED_G_GPIO_PIN);
	while(1)
	{
	
	}
}

注意事项:

一定要记得清空标志位,尤其是中断服务函数里的清空标志位,博主就因为此检查好长时间

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

stm32通用定时器1s延时实现LED闪烁 的相关文章

  • MacBook Air响一声白屏故障情况说明及解决

    情况说明 xff1a 2013款的MacBook Air安装Windows 7系统 xff0c 结果导致开机响一声就白屏 xff0c 按option无选项出现 xff0c 其他各种组合按键尝试都无效 百度搜索 xff0c 有人说是屏幕故障
  • 如何在Eclipse中打开现有项目(高手免入)

    如果我们现在已经有了Java项目 xff08 网上下载的或者从别的电脑上拷贝过来的 xff09 xff0c 我们都知道 xff0c Eclipse和其他的编程软件不一样 xff0c 不能够通过直接双击某个文件的方式来打开 xff0c 那么我
  • svn is not a working copy 怎么解决

    确定当目录下是否含有 svn文件夹 如果没有就重新啊checkout xff0c 或者在上一层目录或下一层目录查找 xff0c 有则可执行 svn commit m 34 更新部分代码 34
  • CSS3设置Border边框是内边框还是外边框

    CSS3可以设置边框是向内还是向外 xff0c 如果要设置为内边框使用 1 box sizing border box 外边框 1 box sizing content box
  • If this view is optional add '@Nullable' (fields) or '@Optional' (methods) ...

    lt 在出错的activity中 xff0c 对应布局文件中加入 gt lt 不能缺少 xff0c 缺少后出现If this view is optional add 39 64 Nullable 39 fields or 39 64 Op
  • MTK Camera(OV13850) 驱动移植

    一 驱动源码包结构 拿到的驱动源码包解压后得到hal和kernel两个目录文件 xff0c 源码目录结构如下所示 13850 6592 driver 10 28 7z hal camera AE PLineTable ov13850mipi
  • 查看路由器WAN口IP是否为公网ip指南

    查看路由器WAN口IP是否为公网ip指南 吴捷 一 xff0e 公网ip和私网ip ip地址分类中常用的有A B C类 xff0c 每类IP中都规划了一段私网IP xff0c 除了这些私网外的IP都是公网IP 分类IP地址范围适用用户A1
  • [iOS] WKWebView 于JavaScript传值

    如果在项目中采用WKWebView的方法加载网页 OC向JS传值方法总结 xff1a 1 OC gt JS 传数组的方法 xff1a NSString arrStr 61 self arr componentsJoinedByString
  • iOS日历中的日程生成VCalendar 2.0(.vcs)格式的字符串和解析

    获取 VCalendar2 0 的格式字符串 43 NSString getVCalendar20StrWithEvents NSArray lt EKEvent gt events NSString vcalendar 61 NSStri
  • 数传电台术语详解

    数传电台 xff08 data radio xff09 是指借助DSP 技术和无线电技术实现的高性能专业数据传输电台 数传电台的使用从最早的按键电码 电报 模拟电台加无线MODEM xff0c 发展到目前的数字电台和DSP 软件无线电 xf
  • 无线数传电台的发展趋势

    摘自 专业无线通信 传媒 无线数传电台作为一种最简洁的通行方式 xff0c 具有很长的历史 xff0c 其基本的特征是通联方便 简捷 xff0c 同时也存在着封闭性强的特点 xff0c 正是由于上述原因 xff0c 无线数传电台产品的生命期
  • wget 提交post请求

    格式 xff1a wget post data 34 item1 61 value1 amp item2 61 value2 34 http xxx xxx com 示例 xff1a wget post data 34 username 6
  • 欧拉角、轴角与四元数

    1 欧拉角 欧拉角使用最简单的x y z值来分别表示在x xff0c y xff0c z轴上的旋转角度 xff0c 其取值为0 360 或者0 2pi xff09 xff0c 一般使用roll xff0c pitch xff0c yaw来表
  • Linux 系统投屏显示

    最近使用电脑跑Linux时需要用到显示器投屏 xff0c 于是快乐的拿上我的笔记本连上了投影仪 emmm 然鹅并没有什么卵用 果断问度娘 xff0c 看到好多人说使用xrandr命令设置 xff0c 于是便上手试了下 xff0c 看到我运行
  • C++ 判断一个 int 型整数是否为 2 的 N 次方(幂次)

    判断一个整数是否为2的幂次方法有以下几种 xff1a 1 循环除2 这是最简单最好理解的方式 对于一个数如果是2的幂次 xff0c 则其肯定可以被2一直整除直到其值为1 所以可以通过一个while循环判断 xff1a void judge
  • Dijkstra算法图文详解

    Dijkstra算法算是贪心思想实现的 xff0c 首先把起点到所有点的距离存下来找个最短的 xff0c 然后松弛一次再找出最短的 xff0c 所谓的松弛操作就是 xff0c 遍历一遍看通过刚刚找到的距离最短的点作为中转站会不会更近 xff
  • 需求中如何画用例图

    UML用例图 用例图主要用来图示化系统的主事件流程 xff0c 它主要用来描述客户的需求 xff0c 即用户希望系统具备的完成一定功能的动作 xff0c 通俗地理解用例就是软件的功能模块 xff0c 所以是设计系统分析阶段的起点 xff0c
  • 反光板导航SLAM(二)VEnus代码浅析

    上一章简单介绍了VEnus中几个主要函数的作用 xff0c 这里详细展开看一下每个函数的具体思路 xff0c 通过研究具体的代码我们可以简单了解VEnus中对于反光柱定位的具体流程 1 IntensityExtraction Extract
  • TEB算法详解(TebLocalPlannerROS::computeVelocityCommands(3))

    第一章主要分析了teb算法的准备条件 xff0c 包括获取当前位姿与速度 对全局路径的裁减以获取局部路径等以及局部地图的获取等 第二章主要讲述了在获取前置条件后 xff0c 如何根据前置条件进行位姿优化 xff0c teb的路径优化主要是调
  • TEB算法详解 参数详解

    teb算法的基本思路之前已经看完了 xff0c 今天主要看一下teb算法的参数配置文件 xff0c 分析一下每个配置参数的作用 xff1a teb的参数主要可以包含以下几个部分 xff1a 1 Trajectory Trajectory的参

随机推荐