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秒闪烁灯

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

  1. STM32通用定时器(原理、结构体、库函数、定时器中断每秒闪烁一次灯) —— 时钟源、分频值、重装载值

    参考:stm32定时器与定时器中断 作者:打酱油的 发布时间: 2021-04-11 01:04:09 网址:https://blog.csdn.net/weixin_46098612/article ...

  2. 【MCU】基于STM32CubeMX定时器中断实现LED闪烁

    基于STM32CubeMX定时器中断实现 LED 闪烁 本实验基于STM32CubeMX实现对STM32开发板的配置,通过定时器中断实现 LED 闪烁. Table of Contents 基于STM ...

  3. STM32定时器中断显示时间

    前言 利用STM32的定时器中断,实现时间的显示.我们知道利用定时器中断只能进行tick的计算,然而用来显示时间我们应该怎么办呢?经过项目的实际运用,我发现利用定时器中断配合串口通讯也能实现时间显示. ...

  4. STM32定时器中断

    目录 一.关于STM32定时器中断 1.定时器分类 2.通用定时器的功能特点 3.定时器中断的触发 4.定时时钟计算方法 二.CubeMX初始化配置 1.芯片选型(我们这里运用的STM32F103C8 ...

  5. 采用STM32外部中断模式控制LED灯亮灭

    文章目录 实验工具 一.STMCube配置项目 1.配置引脚 2.配置EXIT 3.配置SYS 4.配置GPIO 5.创建代码 二.使用KEil配置代码 1.打开生成的项目,找到stm32f1xx_i ...

  6. stm32定时器中断的配置步骤

    stm32定时器中断的配置步骤 1>TIM3 时钟使能 位于低速的APB1总线上(注意:高级定时器是在高速的APB2总线上): RCC_APB1PeriphClockCmd(RCC_APB1Pe ...

  7. 【CubeMX配置stm32定时器中断】

    CubeMX配置stm32定时器中断 一.使用CubeMX对STM32进行基础的配置 1.选择需要使用的定时器 选择TIM2和TIM3示例, 注意: TIM2和其它定时器选择时钟的方法不同,TIM3等 ...

  8. stm32定时器中断配置及使用

    stm32定时器中断配置及使用 定时器中断就是:可以周期性的执行某些功能,而不受main函数的影响. 我们以通用定时器time3为例说明 1.首先配置时钟源为内部时钟,分频和充装载值根据自己需要填入, ...

  9. Proteus:单片机定时器中断(LED闪烁)

    题目概述: 单片机定时器中断(LED闪烁). 编程: #include <reg51.h> #define uchar unsigned char #define uint unsigne ...

最新文章

  1. GPT-3 1750亿参数少样本无需微调,网友:「调参侠」都没的当了
  2. java 内部类_Java——内部类详解
  3. 暴力除法C语言,暴力除法
  4. windows下buildbot 的搭建及config文件讲解
  5. 解决关于登录校园网显示不在IP段的问题方案(要看注意事项哦!)
  6. 向周鸿祎的360安全浏览器学互联网产品运营和推广
  7. Day31 python基础--网络编程基础-socketserver
  8. layui第三方插件引入_插件分享 | 可以进行web爬虫的Xray插件(文章末尾有福利)...
  9. Android 手势检测实战 打造支持缩放平移的图片预览效果(下)
  10. I.MX6 make menuconfig进入x86模式
  11. Android学习资料整理:流行框架网站书籍推荐---博客推荐
  12. SWOT分析》思维导图,帮助你做好企业优势劣势分析图
  13. 如何快速从入门到精通linux
  14. 计算机网络蠕虫病毒及防范,蠕虫病毒检测与防范本科毕业论文.doc
  15. LINTCODE——吹气球
  16. QFP封装芯片手工焊接和拆卸技巧
  17. uva 10158 War
  18. 音视频开发-视频基础
  19. CVPR 2022 | Adobe把GAN搞成了缝合怪!凭空P出一张1024分辨率全身人像
  20. webm怎么改成mp4格式

热门文章

  1. matlab毕达哥拉斯质数,这位天才发现了素数、完美数和亲和数,证明三角形内角和是180°...
  2. QT的文件过滤器qt选择文件时候的文件过滤
  3. 智慧档案馆十防环境监控系统方案
  4. 利用七参数求解坐标转换(C#简单快速实现)
  5. pppoe服务器稳定性,架设pppoe服务器 实现欺骗的防御(3)
  6. 实验六2021011206贾天乐
  7. 组态王软件与200smart无线以太网通信方案详解
  8. Android TimePicker控件的基本使用+监听系统时间变化
  9. python:实现EEMD算法(附完整源码)
  10. c语言中.h文件和.cpp文件解析