STM32自学☞定时器定时中断案例

 

a2981065176d4f7d8c4c096937fe625f.jpg

 

 timer_interrupt.c文件

/*

初始化函数编写步骤:

1.打开时钟

2.选择时基单元的时钟源(内部时钟源)

3.配置时基单元

4.NVIC配置

5.启动定时器

*/

#include "stm32f10x.h"

#include "stm32f10x_tim.h"

#include "timer_interrupt.h"

extern uint16_t num;

//初始化函数

void Timer_Init(void)

{

 //开启TIM2的时钟

 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

 //选择时基单元的时钟为内部时钟

 TIM_InternalClockConfig(TIM2);

 //时基单元初始化配置

 TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;

 TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1; //指定时钟分频为1分频即不分频

 TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up; //配置计数器的模式为向上计数

 TIM_TimeBaseInitStruct.TIM_Period= 10000 - 1; //设置周期值即ARR自动重装器的值

 TIM_TimeBaseInitStruct.TIM_Prescaler= 720 - 1; //设置PSC预分频器的值

 TIM_TimeBaseInitStruct.TIM_RepetitionCounter= 0; //设置重复计数器的值

 TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct);

 //清除中断标志位

 TIM_ClearFlag(TIM2,TIM_FLAG_Update);

 //TIM2使能,更新中断

 TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

 //NVIC配置

 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //指定中断分组为分组2(2位抢占2位响应)

 NVIC_InitTypeDef NVIC_InitStruct;

 NVIC_InitStruct.NVIC_IRQChannel=TIM2_IRQn; //设置指定中断通道为TIM2_IRQn

 NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE; //设置指定中断通道使能

 NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2; //设置抢占优先级

 NVIC_InitStruct.NVIC_IRQChannelSubPriority=1; //设置响应优先级

 NVIC_Init(&NVIC_InitStruct);

 //启动定时器

 TIM_Cmd(TIM2,ENABLE);

}

//中断函数

void TIM2_IRQHandler(void)

{

 //判断中断线14的中断标志位是不是1

 if(TIM_GetITStatus(TIM2,TIM_IT_Update)==SET)

 {

  num++;

  TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清除中断标志位

 }

}

timer_interrupt.h文件

#ifndef __TIMER_INTERRUPT_H

#define __TIMER_INTERRUPT_H

void Timer_Init(void);

void TIM2_IRQHandler(void);

#endif

main.c文件

#include "stm32f10x.h"

#include "stm32f10x_tim.h"

#include "delay.h"

#include "OLED.h"

#include "timer_interrupt.h"

uint16_t num;

int main (void)

 //初始化

 OLED_Init();

 Timer_Init();

 OLED_ShowString(1,1,"Num:");

 while(1)

 {

  OLED_ShowNum(1,5,num,5);

  OLED_ShowNum(2,5,TIM_GetCounter(TIM2),5);

  OLED_ShowNum(3,5,TIM_GetPrescaler(TIM2),5);

 }

}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/466642.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索Nginx:强大的开源Web服务器与反向代理

一、引言 随着互联网的飞速发展,Web服务器在现代技术架构中扮演着至关重要的角色。Nginx(发音为“engine x”)是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。Nginx因其卓越的性能、稳定性和灵活性&…

从计算机恢复已删除文件的 6 种方法!

如果您的重要文件之一已从计算机中删除怎么办?如果不小心从硬盘中删除了文件怎么办? 如今的公司通常将重要数据存储在云或硬盘中。但最重要的是,您必须考虑这样一个事实:您可能会丢失计算机上的数据。数据丢失的原因有多种&#x…

Java中的IO介绍

本章内容 一 、File概念 File可以代表一个目录或者一个文件,并不能代表文件的内容 文件和流的区别:File关注的是文件本身的特征,如名称、路径、修改时间、大小。 流关注的是文件的内容。 二、File基本的操作 常见构造方法 | File(String p…

位运算+leetcode(1)

基础 1.基础知识 以下都是针对数字的二进制进行操作 >> 右移操作符<< 左移操作符~ 取反操作符 & 有0就是0&#xff0c;全一才一 | 有一才一 &#xff0c;全0才0^ 相同为0&#xff0c;相异为1 异或( ^ )运算的规律 a ^ 0 a a ^ a 0a ^ b ^ c a ^ (b …

【GameFramework框架内置模块】1、全局配置(Config)

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址 大家好&#xff0c;我是佛系工程师☆恬静的小魔龙☆&#xff0c;不定时更新Unity开发技巧&#xff0c;觉得有用记得一键三连哦。 一、前言 【GameFramework框架】系列教程目录&#xff1a; https://blog.csdn.net/q7…

在线问诊系统设计与实现的经验总结与整理

随着互联网技术的快速发展&#xff0c;在线问诊服务作为一种新兴的医疗服务模式&#xff0c;正逐渐受到人们的关注和使用。本文将介绍在线问诊系统的设计原则和关键组件&#xff0c;以及如何实现一个安全、高效和可扩展的在线医疗服务平台。 内容&#xff1a; 1. 引言 - 在…

C++ //练习 6.4 编写一个与用户交互的函数,要求用户输入一个数字,计算生成该数字的阶乘。在main函数中调用该函数。

C Primer&#xff08;第5版&#xff09; 练习 6.4 练习 6.4 编写一个与用户交互的函数&#xff0c;要求用户输入一个数字&#xff0c;计算生成该数字的阶乘。在main函数中调用该函数。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代…

【Django】Django文件上传

文件上传 1 定义&场景 定义&#xff1a;用户可以通过浏览器将图片等文件上传至网站。 场景&#xff1a; 用户上传头像。 上传流程性的文档[pdf&#xff0c;txt等] 2 上传规范-前端[html] 文件上传必须为POST提交方式 表单 <form> 中文件上传时必须带有 enctype…

每日一练:LeeCode-617、合并二叉树【二叉树+DFS】

本文是力扣LeeCode-617、合并二叉树【二叉树DFS】 学习与理解过程&#xff0c;本文仅做学习之用&#xff0c;对本题感兴趣的小伙伴可以出门左拐LeeCode。 给你两棵二叉树&#xff1a; root1 和 root2 。 想象一下&#xff0c;当你将其中一棵覆盖到另一棵之上时&#xff0c;两…

Spring Boot 笔记 006 创建接口_注册

1.1 由于返回数据都是以下这种格式&#xff0c;那么久再编写一个result实体类 报错了&#xff0c;原因是没有构造方法 可以使用lombok的注解自动生成&#xff0c;添加无参的构造器和全参的构造器 package com.geji.pojo;import lombok.AllArgsConstructor; import lombok.NoArg…

ChatGPT高效提问—prompt实践(生成VBA)

ChatGPT高效提问—prompt实践&#xff08;生成VBA&#xff09; 2. 生成VBA函数操作Excel ​ 当前Excel表格数据无背景颜色&#xff0c;区分不明显。假如我们想美化数据展示效果&#xff0c;把标题行设置为浅蓝色&#xff0c;其余奇数行设置为橙色&#xff0c;该怎么操作呢&am…

Java安全 URLDNS链分析

Java安全 URLDNS链分析 什么是URLDNS链URLDNS链分析调用链路HashMap类分析URL类分析 exp编写思路整理初步expexp改进最终exp 什么是URLDNS链 URLDNS链是Java安全中比较简单的一条利用链&#xff0c;无需使用任何第三方库&#xff0c;全依靠Java内置的一些类实现&#xff0c;但…