用一个计时器计时1秒,使得LED灯间隔一秒闪烁。

主程序:

#include "stm32f10x.h"
#include "delay.h"
#include "LED1.h"
#include  "time.h"
int main(void)
{delay_init(10);                                 //延时初始化NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断分组 这个要在设置中断优先级前面,一开始就要设置好的不能更改LED_Init1();Time3_Init(9999, 7199);                         //时间计算放在下面说明while (1){GPIO_ResetBits(GPIOB,GPIO_Pin_12);      //让LED灯一直亮 }}

头文件:

1. LED1.h

#ifndef  __LED_H
#define __LED_Hvoid LED_Init1(void);
#endif

2.time.h

#ifndef __TIME__H
#define __TIME__H
#include "sys.h"void Time3_Init(u16 arr, u16 psc);    //定时器3初始化函数
#endif

C文件

1. LED.c

#include "LED1.h"            //引用头文件
#include"stm32f10x.h"

void LED_Init1(void)
{GPIO_InitTypeDef   GPIO_InitStrucyure;           //结构变量RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);  //使能时钟GPLOBGPIO_InitStrucyure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStrucyure.GPIO_Pin=GPIO_Pin_12;GPIO_InitStrucyure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStrucyure);                 //初始化io口GPIO_SetBits(GPIOB,GPIO_Pin_12);                      // io口默认不点亮,先将io口设置为高电平}

2.time.c

#include "time.h"
#include "delay.h"
#include "LED1.h"void Time3_Init(u16 arr, u16 psc)
{NVIC_InitTypeDef NVIC_Initstruct;                              //结构变量TIM_TimeBaseInitTypeDef TIM_Timeinit;                          //结构变量TIM_Timeinit.TIM_ClockDivision = TIM_CKD_DIV1;                 //随意选取TIM_Timeinit.TIM_CounterMode =  TIM_CounterMode_Up;            //计数模式TIM_Timeinit.TIM_Period = arr;                                 // 需要根据要计时的长度来计算输入TIM_Timeinit.TIM_Prescaler = psc;                              //预分频系数 计算输入//TIM_Timeinit.TIM_RepetitionCounter =                         //这个不需要RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);            //使能定时器3时钟TIM_TimeBaseInit(TIM3,&TIM_Timeinit);                          //初始化定时器配置TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);                       //开启定时器中断 配置nvic配置NIIC   记住要在主函数main中 先设置好优先级分组NVIC_Initstruct.NVIC_IRQChannel=TIM3_IRQn  ;          //通道在stm32的头文件中找,io10对应通道9 对应EXTI9_5_IRQnNVIC_Initstruct.NVIC_IRQChannelCmd= ENABLE;NVIC_Initstruct.NVIC_IRQChannelPreemptionPriority=2;           //抢占优先级, 在这个之前要中断分组好,所以要在主函数中分好组NVIC_Initstruct.NVIC_IRQChannelSubPriority= 2 ;                //子优先级NVIC_Init(&NVIC_Initstruct);//TIM_Cmd(TIM3,ENABLE);                                          //使能定时器///前面4个步骤已经完成现在完成中断服务函数
}void TIM3_IRQHandler()
{if(TIM_GetITStatus(TIM3,TIM_IT_Update) == SET)                //获取状态定时器的状态 Upadate更新中断,是否更新了{GPIO_SetBits(GPIOB,GPIO_Pin_12);                      //定时器中断发生,将灯灭;delay_ms(500);///别忘记了手动清除标志位!!!!!!!!!TIM_ClearITPendingBit(TIM3,TIM_IT_Update);           //清除中断标志} }

其中在主程序中有   Time3_Init(9999, 7199);  这里表示定时的时间是1s:

计算公式:

T = (A+1)*(B+1)/TCLK;         A为前面的输入  ,B 为后面的那个输入

TCLK一般为72M      先计算(B+1)/TCLK    当B为7199时候,(B+1)/TCLK  =  0.1ms   所以要让T 为1,  只要将A设为9999。

2018 -0524 STM32计时器中断相关推荐

  1. STM32学习--中断

    这里写目录标题 什么是中断? 中断的作用 中断的特点 STM32与中断 NVIC 中断通道 中断优先级 中断服务函数 SysTick中断(内核中断) SysTick中断函数 NVIC库函数 NVIC初 ...

  2. STM32外部中断与各通道对应关系

    EXTI0_IRQn的值,其实就是EXTI0中断向量在中断向量表中的位置(STM32技术参考手册中断向量表position栏中的数值) 一:外部中断使用配置过程: (1)配置时钟信号 (2)引脚属性 ...

  3. (二)stm32之中断配置

    一.stm32的中断和异常 Cortex拥有强大的异常响应系统,它能够打断当前代码执行流程事件分为异常和中断,它们用一个表管理起来,编号为0~15为内核异常,16以上的为外部中断,这个表就是中断向量表 ...

  4. STM32 NVIC中断

    STM32 NVIC中断 注意事项 抢占优先级允许中断嵌套,响应优先级不允许中断嵌套. 配置参数 /*** @brief Configures the priority grouping: pre-e ...

  5. STM32外部中断干扰解决方案

    STM32 外部中断很容易受干扰误触发,无论上拉下拉设置都没有效果,最后采用软件判断解决该问题. 进入外部中断程序需同时判断引脚电平是否和上升触发和下降触发一致,这个判断很重要. void EXTI3 ...

  6. STM32外部中断总结

    STM32外部中断总结 STM32的外部中断是我们在学习stm32的一个必要模块,外部中断的用途可以增加人机交互的体验,也可以增加程序的执行效率.下面将以一个小实验来记录外部中断的使用需要注意的事项 ...

  7. STM32串口中断接收实验

    STM32串口中断接收实验的详细说明 准备 代码实现 总结 准备 材料:STM32F407ZGT6最小系统板,串口1通过跳线帽连接到了CH340上. 需求:从电脑向板子的串口1发送一个字符串(以回车和 ...

  8. 【STM32】 中断详解

    NVIC 嵌套中断向量控制器(Nested Vectored Interrupt Controller) 1.中断优先级分组 STM32 中断优先级分为两种:抢占式优先级(可嵌套).子优先级(不可嵌套 ...

  9. STM32——外部中断

    目录 外部中断简述 什么是外部中断 传统单片机与新型单片机外部中断区别 STM32外部中断请求 STM32中断线与IO口的对应 STM32 中断服务函数 外部中断与中断服务函数的对应 中断服务函数列表 ...

最新文章

  1. Python中的__new__(new函数)
  2. 读取ppt并存入数据库_Java解析Excel文件并把数据存入数据库
  3. 将$type添加到System.Text.Json序列化中,就像Newtonsoft那样用于动态对象属性
  4. 递归与二叉树_leetcode235
  5. linux qt程序窗口大小变化,Qt调整初始窗口大小
  6. 个位百位AS3实现经典算法(二) 水仙花数
  7. 关于Unity可视化编程工具bolt的基本使用和思考
  8. ps存不了psd格式怎么办_ps打不开psd文件怎么办
  9. linux格式化u盘为ntfs格式,Linux上格式化U盘为NTFS格式
  10. 阿里云域名注册赠送的阿里云企业邮箱使用方法
  11. python制作壁纸获取器exe,壁纸采集
  12. 黄河中下游地区精化似大地水准面研究与实施
  13. ThinkPHP框架执行流程源码解析
  14. 西安工大计算机学院李颖,李颖 -西安交通大学人文社会科学学院
  15. 2021-10-22 KiKi定义电子日历类
  16. Hastelloy C-276 (UNS N10276)含钨的镍-铬-钼合金
  17. 龙门标局:R商标是指什么?购买的商标能标注R吗?
  18. 2021-2022学年广州中学九年级第一学期期中考试英语试题
  19. Android Ril库总结
  20. pymatgen正确安装姿势

热门文章

  1. 运维文档管理规范标准
  2. [React]网易云音乐Web PC端
  3. 【knex】 knex.js中 orderBy多个字段排序
  4. 论文 | 图理论 | 2021年斯坦福大学Jiaxuan You博士论文《用图赋能深度学习》译读 摘要和感谢
  5. 干货丨语雀Baklib在产品帮助手册制作过程中的实际亲测
  6. 《Imaging Systems For Medical Diagnostics》——12. X-ray components and systems (3) X射线组件和系统(3)
  7. 语音唤醒的具体技术方案
  8. DAVIS346动态视觉传感器
  9. 长期置顶:作为一个技术人,你为什么有时间写博客?准备应对未来的中年危机
  10. mysql koa2的分页查询_koa2 快速实现注册、登录+分页(一)