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.mzph.cn/news/680378.shtml

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

相关文章

CVE-2022-25578 漏洞复现

CVE-2022-25578 路由/admin/admin.php是后台,登录账号和密码默认是admin、tao,选择文件管理。 是否还记得文件上传中的.htaccess配置文件绕过发,在这个文件中加入一句AddType application/x-httpd-php .jpg,将所有jpg文件当作php…

位运算+leetcode(1)

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

MyBatis篇----第一篇

系列文章目录 文章目录 系列文章目录前言一、什么是 Mybatis?二、Mybaits 的优点三、MyBatis 框架的缺点前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 一、什么…

【记录】电容的作用,调试Arduino及ESP8266

最近调试Arduino结合ESP8266进行WIFI传输和云端控制&#xff0c;准备用Arduino的3.3V输出直接作为ESP8266的电源&#xff0c;不想竟掉坑里了。 Arduino的3.3V输出接上ESP8266后&#xff0c;Arduino的程序就跑飞了。ESP8266刚上电还是相当生猛的&#xff0c;要吃掉一百多毫安的…

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

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

Z-Stack一直卡在HAL_BOARD_INIT();

原因是Debugger没有配置好&#xff0c;因为默认是Simulator&#xff0c;不是TI的驱动&#xff0c;所以仿真出现一直卡在 HAL_BOARD_INIT(); 的情况&#xff0c;解决方法就是将Simulator改为Texas Instruments 改成下面的样子

static

静态方法中,没有this关键字 静态方法中,只能访问静态 非静态方法可以访问所有 隐含了一个this

CSP-动态规划-最长公共子序列(LCS)

一、动态规划 动态规划&#xff08;Dynamic Programming&#xff0c;简称DP&#xff09;主要用于求解可以被分解为相似子问题的复杂问题&#xff0c;特别是在优化问题上表现出色&#xff0c;如最短路径、最大子数组和、编辑距离等。动态规划的核心思想是将原问题分解为较小的子…

STM32 USART串口通信

目录 USART串口 串口发送 串口发送接收 串口收发HEX数据包 串口收发文本数据包 USART串口 串口发送 Serial.c #include "stm32f10x.h" // Device header #include "stdio.h" #include "stdarg.h"/*** brief 初始化串口以…

HTML 超文本标记语言

超文本标记语言 HTML 在一个客户程序主窗口上显示出的万维网文档称为页面 (page)。 页面制作的标准语言&#xff1a;HTML。 超文本标记语言 HTML (HyperText Markup Language) 是一种制作万维网页面的标准语言&#xff0c;它消除了不同计算机之间信息交流的障碍&#xff0c…

SQLyog安装配置(注册码)连接MySQL

下载资源 博主给你打包好了安装包&#xff0c;在网盘里&#xff0c;只有几Mb&#xff0c;防止你下载到钓鱼软件 快说谢谢博主&#xff08;然后心甘情愿的点个赞~&#x1f60a;&#xff09; SQLyog.zip 安装流程 ①下载好压缩包后并解压 ②打开文件夹&#xff0c;双击安装包 ③…

GPT 3.5 真的比 4.0聪明吗?

GPT 3.5 真的比 4.0聪明吗&#xff1f; DeepGo 计算机杂谈及深度学习记录&分享 在大语言模型大杀四方的今天 无论是哪个行业的工作人员 都用上了各种各样的模型 其中的佼佼者就是 ChatGPT! 众所周知 ChatGPT是有氪金的Plus4.0版本 那3.5真的不如4.0吗&#xff1f; 今天 我们…

【51单片机】DS18B20(江科大)

一、DS18B20温度传感器 1.DS18B20介绍 DS18B20是一种常见的数字温度传感器,其控制命令和数据都是以数字信号的方式输入输出,相比较于模拟温度传感器,具有功能强大、硬件简单、易扩展、抗干扰性强等特点 测温范围 :- 55℃到125℃ 通信接口:1-Wire(单总线) 其它特征:可形成…

【MySQL进阶之路】亿级数据量表SQL调优实战

欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术的推送&#xff01; 在我后台回复 「资料」 可领取编程高频电子书&#xff01; 在我后台回复「面试」可领取硬核面试笔记&#xff01; 文章导读地址…

Swift Combine 发布者订阅者操作者 从入门到精通二

Combine 系列 Swift Combine 从入门到精通一 1. Combine核心概念 你只需要了解几个核心概念&#xff0c;就能使用好 Combine&#xff0c;但理解它们非常重要。 这些概念中的每一个都通过通用协议反映在框架中&#xff0c;以将概念转化为预期的功能。 这些核心概念是&#x…

通过增加缓存优化斐波那契递归的冗余计算

一、python 斐波那契数列的递归实现存在大量的冗余计算。例如&#xff0c;为了计算fib(n)&#xff0c;我们需要计算fib(n-1)和fib(n-2)&#xff0c;但是在计算fib(n-1)的过程中&#xff0c;我们又会重复计算fib(n-2)。当n的值很大时&#xff0c;这种冗余计算会消耗大量的计算资…

肿瘤微环境异质性对治疗反应的影响(综述)

Influence of tumour micro-environment heterogeneity on therapeutic response | Nature 肿瘤的形成涉及肿瘤细胞与细胞外基质、肿瘤血管和免疫细胞的共同进化。肿瘤的成功生长和最终转移并不完全取决于肿瘤细胞的基因改变&#xff0c;还取决于这种突变在特定环境中带来的适…

AMD FPGA设计优化宝典笔记(3)控制集

控制集 1 控制集的个数要求 控制集 control set&#xff1a;因为 7 系列 FPGA&#xff0c;一个 slice 只能有一种控制集&#xff08;触发器的使用方式 比如有复位/有时钟使能等等&#xff09;&#xff0c;多了就会分布到不同的 slice 里&#xff0c; 所以代码尽量统一触发器的…

2.12 分支、循环练习

1、选择题 1.1、以下程序的输出结果是 A 。 main() { int k11,k22,k33,x15; if(!k1) x--; else if(k2) if(k3) x4; else x3; printf(“x%d\n”,x); } A x4 B x15 C x14 D x3 解析&#xff1a;if(!k1) x--; 检查 k1 是否为0。因为 k1 的值为1&#xff0c;所…

嵌入式Qt Qt Creator安装与工程介绍

一.Qt概述 什么是Qt&#xff1a;Qt是一个跨平台的C图形用户界面应用程序框架。它为应用程序开发者提供建立图形界面所需的所有功能。它是完全面向对象的&#xff0c;很容易扩展&#xff0c;并且允许真正的组件编程。 二.Qt Creator下载安装 下载地址&#xff1a;Index of /a…