7. STM32——定时器中断(1秒闪烁灯)

2023-05-16

STM32——定时器中断(1秒闪烁灯)

  • 基本框架
    • 1. 配置定时器时钟
      • 在 stm32f10x_rcc.h 头文件中查找相关函数函数
    • 2. 配置定时器结构体
      • 在 stm32f10x_tim.h 头文件中查找相关函数函数
    • 3. 开启定时器中断
      • 在 stm32f10x_tim.h 头文件中查找相关函数函数
    • 4. 配置中断结构体
      • 在 misc.h 头文件中查找相关函数函数
      • TIM2_IRQn 在 stm32f10x.h 头文件中可以查找到
    • 5. 搭建定时器中断服务函数
  • 闪烁灯代码整合
    • tim.c
    • tim.h
    • main.c
  • 1秒闪烁灯

基本框架

1. 配置定时器时钟

在 stm32f10x_rcc.h 头文件中查找相关函数函数

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

2. 配置定时器结构体

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在 stm32f10x_tim.h 头文件中查找相关函数函数

TIM_TimeBaseInitTypeDef timInitStructure;

//2.配置定时器结构体
timInitStructure.TIM_ClockDivision	=	TIM_CKD_DIV1; //tDTS = Tck_tim
timInitStructure.TIM_CounterMode	=	TIM_CounterMode_Up; //向上计数模式
timInitStructure.TIM_Period			=	10000-1; //自动重装载寄存器周期的值。
timInitStructure.TIM_Prescaler		=	7200-1; //定时器预分频设置
//配置成1秒闪烁

3. 开启定时器中断

在 stm32f10x_tim.h 头文件中查找相关函数函数

TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
TIM_Cmd(TIM2, ENABLE);

4. 配置中断结构体

在 misc.h 头文件中查找相关函数函数

TIM2_IRQn 在 stm32f10x.h 头文件中可以查找到

NVIC_InitTypeDef nvicInitStructure;

//4.配置中断结构体
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
		
nvicInitStructure.NVIC_IRQChannel					= TIM2_IRQn;
nvicInitStructure.NVIC_IRQChannelPreemptionPriority	= 1;
nvicInitStructure.NVIC_IRQChannelSubPriority		= 1;
nvicInitStructure.NVIC_IRQChannelCmd				= ENABLE;
		
NVIC_Init(&nvicInitStructure);

5. 搭建定时器中断服务函数

//5.搭建定时器中断服务函数
void TIM2_IRQHandler(void)
{
		static uint16_t t = 0;
		
		if( TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //发生中断
		{
				if(t++ %2 == 1) //t 为奇数时,LED亮 为偶数时,LED灭
				{
						GPIO_ResetBits(GPIOC, GPIO_Pin_13);
				}
				else
				{
						GPIO_SetBits(GPIOC, GPIO_Pin_13);
				}
		}
		
		TIM_ClearITPendingBit(TIM2, TIM_IT_Update); //清除定时中断标志
		
}

闪烁灯代码整合

tim.c

#include "tim.h"
#include "stm32f10x.h"

void tim_Init(void)
{
		TIM_TimeBaseInitTypeDef timInitStructure;
		NVIC_InitTypeDef 				nvicInitStructure;
	
		//1.配置定时器时钟
		RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
		
		//2.配置定时器结构体
		timInitStructure.TIM_ClockDivision	= TIM_CKD_DIV1;
		timInitStructure.TIM_CounterMode	= TIM_CounterMode_Up;
		timInitStructure.TIM_Period			= 10000-1;
		timInitStructure.TIM_Prescaler		= 7200-1;
		
		TIM_TimeBaseInit(TIM2, &timInitStructure);
		//3.开启定时器中断
		TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
		TIM_Cmd(TIM2, ENABLE);
		
		//4.配置中断结构体
		NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
		
		nvicInitStructure.NVIC_IRQChannel					= TIM2_IRQn;
		nvicInitStructure.NVIC_IRQChannelPreemptionPriority	= 1;
		nvicInitStructure.NVIC_IRQChannelSubPriority		= 1;
		nvicInitStructure.NVIC_IRQChannelCmd				= ENABLE;
		
		NVIC_Init(&nvicInitStructure);
		
		//5.搭建定时器中断服务函数
		
}

tim.h

#include "stm32f10x.h"

void tim_Init(void);

main.c

#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "shake.h"
#include "relay.h"
#include "exti.h"
#include "usart.h"
#include "tim.h"

void delay(uint16_t time)
{
	uint16_t i=0;
	
	while(time--)
	{
		i=10000;
		while(i--);
	}
}

int  main()
{
		LED_Init();
		tim_Init();
		
		GPIO_SetBits(GPIOC, GPIO_Pin_13);
		
//		USARTSendByte(USART1, 'O');
//		USARTSendByte(USART1, 'K');
//		printf("Yinyuer is a pretty girl!");
		
		while(1)
		{
				
		}
}

//5.搭建定时器中断服务函数
void TIM2_IRQHandler(void)
{
		static uint16_t t = 0;
		
		if( TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
		{
				if(t++ %2 == 1)
				{
						GPIO_ResetBits(GPIOC, GPIO_Pin_13);
				}
				else
				{
						GPIO_SetBits(GPIOC, GPIO_Pin_13);
				}
		}
		
		TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
		
}

1秒闪烁灯

在这里插入图片描述

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

7. STM32——定时器中断(1秒闪烁灯) 的相关文章

  • win10 安装配置mysql8

    1 下载 https tomcat apache org 选择自己需要的版本 2解压 3配置环境变量 略 4配置my ini 在 MYSQL HOME 下新建my int文件 xff0c 内容如下 span class token punc
  • idea调用javap

    idea 配置javap 具体参数设置如下 program span class token variable JDKPath span span class token punctuation span bin span class to
  • Rust Web(一)—— 自建TCP Server

    前段时间小小学习了一下Rust的基础内容 xff0c 出于学习Web开发的需求 xff0c 也为巩固学过的Rust基础 xff0c 就尝试记录一下自己学习 Rust Web 的点滴 xff1b 实现环境 OS Ubuntu 14 0 IDE
  • ajax传递数组怎么传?ajax数组传递

    在我们平时的开发中 xff0c 经常会需要用到ajax xff0c 关于ajax是什么 xff0c 又该如何传递参数 xff0c 相信通过上几篇文章你们已经有所了解 但是 xff0c ajax中要如何传递数组你们又知道吗 xff1f 今天我
  • linux安装node和达梦数据库8

    PS 本次测试只是为了项目需要 xff0c 但是在部署和启动程序的时候发生了一系列的报错 xff0c 由此记录下来为日后作参考 安装达梦数据库 1 达梦数据库 DM8 简介 达梦数据库管理系统是武汉达梦公司推出的具有完全自主知识产权的高性能
  • pyqt5+mysql+多线程爬虫实现 python 携程机票爬虫 数据可视化

    基本目录 数据来源与获取方法数据来源网页分析 实现效果完整代码与说明文档 数据来源与获取方法 数据来源 携程机票查询https flights ctrip com online channel domestic 网页分析 我们的目的是要爬取
  • debian9.8添加iso为本地源

    1 临时添加 使用mount临时挂载 注意需要在root权限下操作 一 将系统镜像文件复制到电脑任意路径下 xff0c 我这里复制到 home路径下 二 自己创建一个挂载目录 xff0c 我创建的是 mnt cdrom目录 xff0c 命令
  • 剖析AVFrame

    AVFrame是FFmpeg中非常重要的数据结构 xff0c 其封装了解码后的媒体数据 在FFmpeg之中 xff0c 有几个比较重要的音视频概念 xff1a pixel format xff1a 表示像素格式 xff0c 图像像素在内存中
  • The package javax.swing is not accessible错误的三种解决办法,亲测有效

    万次阅读 xff0c 150 43 点赞 xff0c 如若对您有帮助 xff0c 请及时点赞 xff0c 不要白嫖 解决办法 xff1a 更换JRE系统库的版本解决办法 xff1a 另外一个比较暴力的解决办法是点击java swing 解决
  • error: binding reference of type int& to const int discards qualifiers

    span class token macro property span class token directive keyword include span span class token string lt iostream gt s
  • request for member in , which is of pointer type

    原因 其实就是因为结构体成员引用符 34 34 和指针的箭头运算符 gt 用错了 只要根据自己的代码把 点 和 gt 改回去就行了
  • 结构体对齐问题(转)

    一个结构体变量定义完之后 xff0c 其在内存中的存储并不等于其所包含元素的宽度之和 例一 xff1a span class token macro property span class token directive keyword i
  • java.net.SocketException: Broken pipe (Write failed)发生原因及其解决办法

    先运行B main 再运行A main 先运行B的main xff0c 然后由于B有accepte的执行 xff0c 所以B那块先阻塞 xff0c 然后点击执行A main的时候会执行A的socket连接 xff0c 然后B监听到了之后立即
  • Matlab进行多项式拟合

    觉得有用的先点赞后收藏 xff0c 不要只收藏不点赞 xff01 xff01 1 一个坐标系里面绘制多个函数图像 clear clc x span class token operator 61 span span class token
  • K-Means聚类算法及其python实现(已附上代码至本博客)

    目录 一 算法公式讲解二 算法流程三 算法实现代码四 代码结果分析五 K Means库函数六 K Means算法时间复杂度 一 算法公式讲解 对于 n代表了x有n维 xff0c x上标j表示第j维的特征 xff0c 下标i表示该向量是第i个
  • The server quit without updating PID file

    我本地Mac电脑爆的错误 xff01 xff01 xff01 总体解决办法有两个 xff0c 方法一 1 可能是 usr local MySQL data mysqld pid文件没有写的权限 解决方法 xff1a 给予权限 xff0c 执
  • Could not find artifact com.github.pagehelper:pagehelper-spring-boot:jar:1.4

    我的情况是导入1 4 2版本的pagehelper spring boot就爆错 xff0c 但是导入了1 3 0版本的pagehelper spring boot就不爆错了 xff0c 后面又导入了一次1 4 2版本的pagehelper
  • No primary or single public constructor found for interface java.util.List

    我的爆错原因是途中ids忘记标注注解 64 PathVariable了 xff0c 因为要传入一系列的整数的列表对象到路径 emps deleteEmps ids 中 xff0c 所以我这里就是加上注解 64 PathVariable就OK
  • 数据结构之用堆栈判断回文

    回文判断 回文是指正读反读均相同的字符序列 xff0c 如 abba 和 abdba 均是回文 xff0c 但 good 不是回文 编写一个程序 xff0c 使用栈判定给定的字符序列是否为回文 输入格式 输入待判断的字符序列 xff0c 按
  • 单片机外部中断实验

    目录 1 概述 2 原理 3 硬件和软件设备 4 步骤 5 结果 xff08 分析 xff09 1 概述 联系程序设计 xff0c 并熟悉外部中断和按钮的使用 xff1b 掌握单片机外部中断程序的设计方法 xff1b 在外部中断0处接一个开

随机推荐

  • 自定义Rust安装路径,自定义安装Rust

    首先我们知道使用https www rust lang org zh CN tools install官方下载器下载安装的rust主要有两个文件夹 xff0c 而且会默认生成到C盘下 但是 xff0c 我们通过修改环境变量可以自定义安装路径
  • HTML基础(一)

    本文是作者在学习html过程中对知识的初步整理 1 第一个程序 span class token doctype lt DOCTYPE html gt span span class token tag span class token t
  • 结构体的数组

    结构数组 也就是结构体的数组 的组成 xff1a struct 结构名 变量名 数组大小 span class token macro property span class token directive hash span span c
  • kali详细安装教程

    vmware虚拟机下载地址 xff1a https www vmware com cn products workstation pro workstation pro evaluation html kali ISO镜像 https cd
  • Armbian (jammy) 上安装 Docker

    一 Armbian 的软件源配置 Ubuntu 的软件源配置文件是 etc apt sources list 默认注释了源码镜像以提高 apt update 速度 xff0c 如有需要可自行取消注释 deb https mirrors tu
  • c语言结构体中的冒泡排序

    题目 xff1a 使用结构体以及函数 xff0c 首先录入学生信息 xff0c 依据学生成绩 xff0c 对学生相关信息进行排序 include lt stdio h gt include lt string h gt struct stu
  • csp序列查询(C语言)

    csp序列查询 span class token macro property span class token directive hash span span class token directive keyword include
  • 数据库学习

    数据库学习 一 span class token keyword SELECT span span class token operator span span class token keyword FROM span customers
  • Spring框架-ioc和JdbcTemplate

    前提 xff1a 我们用了Mybatis时 xff0c 已经不需要再使用其他的持久层框架了 用了mybatis之后 xff0c 我们只需要写持久层接口以及sql语句即可 但是为了讲解spring中的事务 xff0c 我们把JdbcTempl
  • 发送Promise请求出现以下错误origin ‘null‘ has been blocked by CORS policy

    错误如下 Access to XMLHttpRequest at span class token string 39 http localhost 9090 data 39 span from origin span class toke
  • VB.net与VB6 调用Websocket功能的方法--Websocket For VB

    概述 Websocket 功能在现今的通信应用开发中越来越普遍 xff0c 因为Websocket的消息机制 xff0c 在应用程序进行即时通信时使用非常合适 xff0c 而且Websocket 是长连接方式 xff0c 比起以前的http
  • sql当前日期

    查询本周 从周一开始计算 1 7 从周日开始计算就删除1 7 SELECT FROM 表名 WHERE YEARWEEK date format 时间字段 39 Y m d 39 1 61 YEARWEEK now 7 查询当月 SELEC
  • 【乐视秒杀架构】每秒处理10万请求—数据库分库分表

    随着乐视硬件抢购的不断升级 xff0c 乐视集团支付面临的请求压力百倍乃至千倍的暴增 作为商品购买的最后一环 xff0c 保证用户快速稳定的完成支付尤为重要 所以在15年11月 xff0c 我们对整个支付系统进行了全面的架构升级 xff0c
  • 单点登录(SSO)

    单点登录概述 xff1a 多系统共存下 xff0c 用户在一处地方登录 xff0c 得到其他所有系统的信任 xff0c 无需再次登录 在前端用户点击登陆之后触发后端的登录接口 xff0c 用户名密码验证通过之后 xff0c 自动生成一个JW
  • 【超详细】Consul的安装的使用附多环境配置(傻瓜式教程)

    一 Consul概述 Consul 是 HashiCorp 公司推出的开源工具 xff0c 用于实现分布式系统的服务发现与配置 与其他分布式服务注册与发现的方案 xff0c Consul 的方案更 一站式 xff0c 内置了服务注册与发现框
  • 【IDEA报错总结】修改Java编译版本-maven工程

    Warning 21 17 java 从发行版 10 开始 xff0c 39 var 39 是受限制的本地变量类型 xff0c 无法用于类型声明 xff0c 也无法用作数组的元素类型 之前一直使用的JDK8 xff0c 这个项目因为需要用到
  • 建一个链表

    单独的一个类 public class LinkNode int val LinkNode next LinkNode int x val 61 x 61 61 61 61 61 61 61 61 61 61 61 61 61 61 61
  • 判断数据类型的5种方法

    1 typeof 可以判断数据类型 xff0c 它返回表示数据类型的字符串 xff08 返回结果只能包括number boolean string function object undefined xff09 xff1b 可以使用type
  • 用python实现给女朋友自动发微信

    女朋友说上班都不回她微信 xff0c 于是给她安排一个定时自动发微信的功能 效果预览 实现过程 一 启动微信进程二 获取微信窗口在桌面的坐标三 发送消息1 鼠标依次点击打开聊天框2 输入发送内容 四 设置定时任务 一 启动微信进程 正常情况
  • 7. STM32——定时器中断(1秒闪烁灯)

    STM32 定时器中断 xff08 1秒闪烁灯 xff09 基本框架1 配置定时器时钟在 stm32f10x rcc h 头文件中查找相关函数函数 2 配置定时器结构体在 stm32f10x tim h 头文件中查找相关函数函数 3 开启定