7. STM32——定时器中断(1秒闪烁灯)
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秒闪烁灯)相关推荐
- STM32通用定时器(原理、结构体、库函数、定时器中断每秒闪烁一次灯) —— 时钟源、分频值、重装载值
参考:stm32定时器与定时器中断 作者:打酱油的 发布时间: 2021-04-11 01:04:09 网址:https://blog.csdn.net/weixin_46098612/article ...
- 【MCU】基于STM32CubeMX定时器中断实现LED闪烁
基于STM32CubeMX定时器中断实现 LED 闪烁 本实验基于STM32CubeMX实现对STM32开发板的配置,通过定时器中断实现 LED 闪烁. Table of Contents 基于STM ...
- STM32定时器中断显示时间
前言 利用STM32的定时器中断,实现时间的显示.我们知道利用定时器中断只能进行tick的计算,然而用来显示时间我们应该怎么办呢?经过项目的实际运用,我发现利用定时器中断配合串口通讯也能实现时间显示. ...
- STM32定时器中断
目录 一.关于STM32定时器中断 1.定时器分类 2.通用定时器的功能特点 3.定时器中断的触发 4.定时时钟计算方法 二.CubeMX初始化配置 1.芯片选型(我们这里运用的STM32F103C8 ...
- 采用STM32外部中断模式控制LED灯亮灭
文章目录 实验工具 一.STMCube配置项目 1.配置引脚 2.配置EXIT 3.配置SYS 4.配置GPIO 5.创建代码 二.使用KEil配置代码 1.打开生成的项目,找到stm32f1xx_i ...
- stm32定时器中断的配置步骤
stm32定时器中断的配置步骤 1>TIM3 时钟使能 位于低速的APB1总线上(注意:高级定时器是在高速的APB2总线上): RCC_APB1PeriphClockCmd(RCC_APB1Pe ...
- 【CubeMX配置stm32定时器中断】
CubeMX配置stm32定时器中断 一.使用CubeMX对STM32进行基础的配置 1.选择需要使用的定时器 选择TIM2和TIM3示例, 注意: TIM2和其它定时器选择时钟的方法不同,TIM3等 ...
- stm32定时器中断配置及使用
stm32定时器中断配置及使用 定时器中断就是:可以周期性的执行某些功能,而不受main函数的影响. 我们以通用定时器time3为例说明 1.首先配置时钟源为内部时钟,分频和充装载值根据自己需要填入, ...
- Proteus:单片机定时器中断(LED闪烁)
题目概述: 单片机定时器中断(LED闪烁). 编程: #include <reg51.h> #define uchar unsigned char #define uint unsigne ...
最新文章
- GPT-3 1750亿参数少样本无需微调,网友:「调参侠」都没的当了
- java 内部类_Java——内部类详解
- 暴力除法C语言,暴力除法
- windows下buildbot 的搭建及config文件讲解
- 解决关于登录校园网显示不在IP段的问题方案(要看注意事项哦!)
- 向周鸿祎的360安全浏览器学互联网产品运营和推广
- Day31 python基础--网络编程基础-socketserver
- layui第三方插件引入_插件分享 | 可以进行web爬虫的Xray插件(文章末尾有福利)...
- Android 手势检测实战 打造支持缩放平移的图片预览效果(下)
- I.MX6 make menuconfig进入x86模式
- Android学习资料整理:流行框架网站书籍推荐---博客推荐
- SWOT分析》思维导图,帮助你做好企业优势劣势分析图
- 如何快速从入门到精通linux
- 计算机网络蠕虫病毒及防范,蠕虫病毒检测与防范本科毕业论文.doc
- LINTCODE——吹气球
- QFP封装芯片手工焊接和拆卸技巧
- uva 10158	War
- 音视频开发-视频基础
- CVPR 2022 | Adobe把GAN搞成了缝合怪!凭空P出一张1024分辨率全身人像
- webm怎么改成mp4格式
热门文章
- matlab毕达哥拉斯质数,这位天才发现了素数、完美数和亲和数,证明三角形内角和是180°...
- QT的文件过滤器qt选择文件时候的文件过滤
- 智慧档案馆十防环境监控系统方案
- 利用七参数求解坐标转换(C#简单快速实现)
- pppoe服务器稳定性,架设pppoe服务器 实现欺骗的防御(3)
- 实验六2021011206贾天乐
- 组态王软件与200smart无线以太网通信方案详解
- Android TimePicker控件的基本使用+监听系统时间变化
- python:实现EEMD算法(附完整源码)
- c语言中.h文件和.cpp文件解析