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

STM32入门学习之定时器中断

1.STM32的通用定时器是可编程预分频驱动的16位自动装载计数器。

STM32 的通用定时器可以被用于:测量输入信号的脉冲长度 ( 输入捕获 ) 或者产生输出波
( 输出比较和 PWM) 等。
使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形
周期可以在几个微秒到几个毫秒间调整。 STM32 的每个通用定时器都是完全独立的,没有互相
共享的任何资源。
2.相关寄存器:
(1)控制寄存器TIMx_CR1:本次实验中只使用到了最低位,即计数器使能位。
(2) DMA/ 中断使能寄存器( TIMx_DIER ):本次实验中只使用到了最低位,允许更新中断。

 (3)预分频寄存器(TIMx_PSC):该寄存器用来设置对时钟的分频。

 (4)自动重装载寄存器(TIMx_ARR):

(5) 状态寄存器(TIMx_SR):

3.设计思路:通过设置设置通用定时器的中断,并在定时器中断服务函数中反转LED灯。首先,使能定时器的时钟。然后,配置定时器的相关信息 和中断管理的相关信息。最后,编写定时器中断的中断服务函数。

4.代码:

(1)LED:

#ifndef __LED_H
#define	__LED_H#include "stm32f10x.h"void LED_Init(void);#endif
#include "led.h"void LED_Init(void)
{//¶¨Òå¶Ë¿ÚµÄ½á¹¹Ìå:GPIO_InitTypeDef GPIO_InitStruct;//1.ʹÄÜʱÖÓ£ºRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOA,ENABLE);//2.ÅäÖö˿ڽṹÌåµÄÏà¹ØÐÅÏ¢£º£¨LED1£©GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOD,&GPIO_InitStruct);//ÅäÖÃLED0£ºGPIO_InitStruct.GPIO_Pin = GPIO_Pin_8;GPIO_Init(GPIOA,&GPIO_InitStruct);//³õʼʱ½«LEDµÄ¶Ë¿Ú¶¼ÖÃΪ1£¬¼´Ï¨ÃðGPIO_SetBits(GPIOA,GPIO_Pin_8);GPIO_SetBits(GPIOD,GPIO_Pin_2);
}

(2)TIME:

#ifndef __TIME_H
#define __TIME_H#include "stm32f10x.h"void TIME_Init(u16 arr,u16 psc);#endif
#include "time.h"void TIME_Init(u16 arr,u16 psc)
{//¶¨Ò嶨ʱÆ÷ºÍÖжϽṹÌ壺TIM_TimeBaseInitTypeDef TIM_TimBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;//1.ʹÄܶ¨Ê±Æ÷ʱÖÓ;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//2.³õʼ»¯time3£ºTIM_TimBaseStructure.TIM_Period = arr;						//ÉèÖÃ×Ô¶¯ÖØ×°ÔؼĴæÆ÷µÄÖµTIM_TimBaseStructure.TIM_Prescaler = psc;TIM_TimBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimBaseStructure.TIM_CounterMode = TIM_CounterMode_Down;TIM_TimeBaseInit(TIM3,&TIM_TimBaseStructure);TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);								//ÔÊÐí¸üÐÂÖжÏ//3.ÖжÏÅäÖãºNVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_Init(&NVIC_InitStructure);//4.ʹÄܶ¨Ê±Æ÷£ºTIM_Cmd(TIM3,ENABLE);
}
//ÖØÐ´time3µÄÖжϷþÎñº¯Êý£º
void TIM3_IRQHandler(void)
{static int i = 0;//¼ì²éÊÇ·ñ·¢ÉúÖжϣºif(TIM_GetITStatus(TIM3,TIM_IT_Update) != RESET){//Çå³ýtimeµÄ¸üÐÂÖжϱê־λTIM_ClearITPendingBit(TIM3,TIM_IT_Update);if(i){GPIO_SetBits(GPIOA,GPIO_Pin_8);i = !i;}else{GPIO_ResetBits(GPIOA,GPIO_Pin_8);i = !i;}}
}

(3)main:

#include "stm32f10x.h"
#include "delay.h"
#include "led.h"
#include "time.h"int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);LED_Init();TIME_Init(4999,7199);while(1){delay_ms(1000);}}

5.运行结果:

 

 6.总结:本次实验是通过STM32的通用定时器反转LED灯。在实验库函数编程的时候,是比较方便的。但是,为了打好基础,应该去大概的了解一下相关寄存器的功能。

相关文章:

STM32入门学习之定时器中断

1.STM32的通用定时器是可编程预分频驱动的16位自动装载计数器。 STM32 的通用定时器可以被用于:测量输入信号的脉冲长度 ( 输入捕获 ) 或者产生输出波 形 ( 输出比较和 PWM) 等。 使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形 周…...

基本数据类型与包装数据类型的使用标准

Reference:《阿里巴巴Java开发手册》 【强制】所有的 POJO 类属性必须使用包装数据类型。【强制】RPC 方法的返回值和参数必须使用包装数据类型。【推荐】所有的局部变量使用基本数据类型。 比如我们如果自定义了一个Student类,其中有一个属性是成绩score,如果用Integer而不用…...

小研究 - 基于 SpringBoot 微服务架构下前后端分离的 MVVM 模型(二)

本文主要以SpringBoot微服务架构为基础,提出了前后端分离的MVVM模型,并对其进行了详细的分析以及研究,以此为相关领域的工作人员提供一定的技术性参考。 目录 4 SpringBoot 4.1 技术发展 4.2 技术特征 4.3 SpringBoot项目构建 4.4 目录结…...

ArmSoM-W3之RK3588安装Qt+opencv+采集摄像头画面

1. 简介 场景:在RK3588上做qt开发工作 RK3588安装Qtopencv采集摄像头画面 2. 环境介绍 这里使用了OpenCV所带的库函数捕获摄像头的视频图像。 硬件环境: ArmSoM-RK3588开发板、(MIPI-DSI)摄像头 软件版本: OS&…...

基于长短期神经网络的风速预测,基于LSTM的风速预测

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络LSTM的风速预测 完整代码: https://download.csdn.net/download/abc991835105/88171311 效果图 结果分析 展望 参考论文 背影 风速预测是一种比较难的预测,随机性比较大,长短期神经网络是一种改进党的RNN…...

Mybatis引出的一系列问题-spring多数据源配置

在日常开发中我们都是以单个数据库进行开发,在小型项目中是完全能够满足需求的。但是,当我们牵扯到像淘宝、京东这样的大型项目的时候,单个数据库就难以承受用户的CRUD操作。那么此时,我们就需要使用多个数据源进行读写分离的操作…...

Vue-组件二次封装

本次对el-input进行简单封装进行演示 封装很简单,就给激活样式的边框(主要是功能) 本次封装主要使用到vue自带的几个对象 $attrs:获取绑定在组件上的所有属性$listeners: 获取绑定在组件上的所有函数方法$slots: 获取应用在组件内的所有插槽 …...

[C++]02.选择结构与循环结构

02.选择结构与循环结构 一.程序流程结构1.选择结构1.1.if语句1.2.三目运算符1.3.switch语句 2.循环结构2.1.while语句2.2.do-while语句2.3.for语句2.4.break语句2.5.continue语句2.6.goto语句 一.程序流程结构 C/C支持的最基本的运行结构: 顺序结构, 选择结构, 循环结构顺序结…...

C语言案例 按序输出多个整数-03

难度2复杂度3 题目:输入多个整数,按从小到大的顺序输出 步骤一:定义程序的目标 编写一个C程序,随机输入整数,按照从小到大的顺序输出 步骤二:程序设计 整个C程序由三大模块组成,第一个模块使…...

如何获取vivado IP列表

TCL命令如下: set fid [open "vivado_included_ip_[version -short].csv" w] puts $fid "Name;Version" set ip_catalog [get_ipdefs *] foreach ip $ip_catalog{ set ipname [get_property DISPLAY_NAME [get_ipdefs $ip]]set iplib [get_p…...

计算机网络的定义和分类

计算机网络的定义和分类 计算机网络的定义 计算机网络的精确定义并未统一计算机网络最简单的定义是:一些互相连接的、自治的计算机的集合 互连:指计算机之间可以通过有线或无线的方式进行数据通信自治:是指独立的计算机,它有自己的硬件和软件&#xff…...

【css】超过文本显示省略号

显示省略号的前提:必须有指定宽度 一、单行文本超出部分显示省略号 属性取值解释overflowhidden当内容超过盒子宽度, 隐藏溢出部分white-spacenowrap让文字在一行内显示, 不换行text-overflowellipsis如果溢出的内容是文字, 就用省略号代替 .one-line{overflow:h…...

Java 8 中使用 Stream 遍历树形结构

在实际开发中,我们经常会开发菜单,树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中的Stream流一次性把数据查出来,然后通过流式处理,我们一起来看看&#x…...

网络安全防火墙体验实验

网络拓扑 实验操作: 1、cloud配置 2、防火墙配置 [USG6000V1]int GigabitEthernet 0/0/0 [USG6000V1-GigabitEthernet0/0/0]ip add 192.168.200.100 24 打开防火墙的所有服务 [USG6000V1-GigabitEthernet0/0/0]service-manage all permit 3、进入图形化界面配置…...

YOLOv5引入FasterNet主干网络,目标检测速度提升明显

目录 一、背景介绍1.1 目标检测算法简介1.2 YOLOv5简介及发展历程 二、主干网络选择的重要性2.1 主干网络在目标检测中的作用2.2 YOLOv5使用的默认主干网络 三、FasterNet简介与原理解析3.1 FasterNet概述3.2 FasterNet的网络结构3.2.1 基础网络模块3.2.2 快速特征融合模块3.2.…...

SpringBoot运行时注入一个Bean

描述 使用GenericApplicationContext类的registerBean方法可以在项目运行时注入一个bean,获取GenericApplicationContext可以继承ApplicationContextAware,重写setApplicationContext,里面的参数就是ApplicationContext。 继承ApplicationC…...

Pyspark

2、DataFrame 2.1 介绍 在Spark语义中,DataFrame是一个分布式的行集合,可以想象为一个关系型数据库的表,或者一个带有列名的Excel表格。它和RDD一样,有这样一些特点: Immuatable:一旦RDD、DataFrame被创…...

Spring Boot 项目五维度九层次分层架构实现实践研究——持续更新中

说明:本博文主要参考来自 https://blog.csdn.net/BASK2311/article/details/128198005 据实践内容及代码持续总结更新中。 五个分层维度:SpringBoot工程分层实战 1 分层思想 计算机领域有一句话:计算机中任何问题都可通过增加一个虚拟层解…...

stm32常见数据类型

stm32的数据类型的字节长度 s8 占用1个byte,数据范围 -2^7 到 (2^7-1) s16 占用2个byte,数据范围 -2^15 到 (2^15-1) s32 占用 4个byte,数据范围 -2^31 到 (231-1)231 2147483647 int64_t占用8个byte,数据范围 -2^63 到 (2^63-1)…...

mac m1使用docker安装kafka

1.拉取镜像 docker pull zookeeper docker pull wurstmeister/kafka 2.启动zookeeper docker run -d --name zookeeper -p 2181:2181 zookeeper 3.设置zookeeper容器对外服务的ip Zookeeper_Server_IP$(docker inspect zookeeper --format{{ .NetworkSettings.IPAddress }}…...

鸿蒙 HarmonyOS 6 | Pura X Max 鸿蒙原生适配 07:页面边距和最大内容宽度控制

前言 Pura X Max 展开态最容易出现的一类问题,是内容区域被直接撑满整屏。 列表页还能通过双列、三列解决一部分空间问题,阅读页、表单页、详情页就没这么简单了。标题、正文、输入框、说明文字一旦横向拉得太宽,用户读起来会很累。尤其是详情…...

【NotebookLM图书馆学研究实战指南】:20年图情专家亲授AI时代知识管理新范式

更多请点击: https://codechina.net 第一章:NotebookLM图书馆学研究的范式革命 传统图书馆学研究长期依赖人工文献综述、卡片目录索引与线性知识组织方式,而NotebookLM的引入正从根本上重构知识发现、关联与推理的底层逻辑。作为Google推出的…...

终极风扇控制指南:FanControl免费软件让你的电脑散热更智能

终极风扇控制指南:FanControl免费软件让你的电脑散热更智能 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trendi…...

NotebookLM讨论模块写作:为什么87%的用户输出缺乏论证纵深?3个可立即部署的认知框架

更多请点击: https://intelliparadigm.com 第一章:NotebookLM讨论模块写作的认知断层诊断 NotebookLM 的讨论模块(Discussion Panel)旨在基于用户上传的文档生成上下文感知的对话,但实践中常出现“理解正确却表达失焦…...

企业内网开发环境通过Taotoken安全调用外部大模型API

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 企业内网开发环境通过Taotoken安全调用外部大模型API 对于许多企业开发团队而言,在内部研发流程中引入大模型能力已成为…...

BGP EVPN Type2/3/5路由:VXLAN控制平面的三大支柱

1. 揭开BGP EVPN Type2/3/5路由的神秘面纱 第一次接触VXLAN控制平面时,我被各种路由类型搞得晕头转向。直到在数据中心网络改造项目中踩了几个坑,才真正理解BGP EVPN这三种核心路由就像乐高积木,各自独立却又完美拼合。想象一下,T…...

SMARC嵌入式模块规范解析:从标准化接口到硬件设计实战

1. 项目概述:从“黑盒子”到标准化接口的进化在嵌入式系统开发领域,尤其是工业控制、边缘计算和物联网设备中,我们经常会遇到一个核心矛盾:如何平衡设计的灵活性与开发效率?早些年,很多项目都是从零开始&am…...

如何在浏览器中实现专业级Markdown文档实时渲染:完整配置指南

如何在浏览器中实现专业级Markdown文档实时渲染:完整配置指南 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer Markdown Viewer是一款功能强大的浏览器扩展&#xff0c…...

listmonk数据库连接池监控指标解释:关键指标含义

listmonk数据库连接池监控指标解释:关键指标含义 你是否经常遇到邮件发送延迟、后台任务卡顿?这些问题可能与数据库连接池配置不当有关。本文将详细解释listmonk中数据库连接池的关键监控指标,帮助你诊断性能瓶颈,优化系统稳定性…...

APK Installer完整指南:在Windows电脑上快速安装Android应用的终极解决方案

APK Installer完整指南:在Windows电脑上快速安装Android应用的终极解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想在Windows电脑上直…...