stm32f103c8t6中无TIM6,TIM7

使用TIM2完成定时1ms中断

//设置中断产生间隔为1ms,CLK_INT=72,预分频系数 = 1000
/**********************************************************
** 函数名: TIM2_Int_Init
** 功能描述:  基本定时器配置
** 输入参数: 无
** 输出参数: 无
** 说明:定时时间=(预分频数+1)*(计数值+1) /TIM5时钟(72MHz),单位(s)这里溢出时间t=(7200*10000)/72000000s=1s
***********************************************************/
void TIM2_Config(u16 arr,u16 psc)
{TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure;NVIC_InitTypeDef           NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //使能TIM2时钟//清除中断标志位TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//TIM_ClearFlag(TIM2,TIM_FLAG_Update);//两者作用相同TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值  TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);  //根据指定的参数初始化TIMx的时间基数单位TIM_ITConfig(TIM2,TIM_IT_Update, ENABLE);     //使能指定的TIM2中断,允许更新中断//中断优先级NVIC设置NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;  //TIM2中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占优先级0级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //从优先级3级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能NVIC_Init(&NVIC_InitStructure);TIM_Cmd(TIM2, ENABLE);     //使能定时器2
}
//设置中断产生间隔为1ms,CLK_INT=72,预分频系数 = 1000
/**********************************************************
** 函数名: TIM4_Int_Init
** 功能描述:  基本定时器配置
** 输入参数: 无
** 输出参数: 无
** 说明:定时时间=(预分频数+1)*(计数值+1) /TIM6时钟(72MHz),单位(s)这里溢出时间t=(7200*10000)/72000000s=1s
***********************************************************/
void TIM4_Config(u16 arr,u16 psc)
{TIM_TimeBaseInitTypeDef    TIM_TimeBaseStructure;NVIC_InitTypeDef           NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //使能TIM4时钟//清除中断标志位TIM_ClearITPendingBit(TIM4,TIM_IT_Update);//TIM_ClearFlag(TIM2,TIM_FLAG_Update);//两者作用相同TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值  TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);  //根据指定的参数初始化TIMx的时间基数单位TIM_ITConfig(TIM4,TIM_IT_Update, ENABLE);     //使能指定的TIM4中断,允许更新中断//中断优先级NVIC设置NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;  //TIM4中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占优先级0级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //从优先级3级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能NVIC_Init(&NVIC_InitStructure);TIM_Cmd(TIM4, ENABLE);     //使能定时器4
}/**********************************************************
** 函数名: TIM2_IRQHandler
** 功能描述: 定时器2的更新中断服务程序
** 输入参数: 无
** 输出参数: 无
***********************************************************/
void TIM2_IRQHandler(void)
{if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET){Time_1ms+=1;TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清除更新中断标志位}
}/**********************************************************
** 函数名: TIM4_IRQHandler
** 功能描述: 定时器4的更新中断服务程序
** 输入参数: 无
** 输出参数: 无
***********************************************************/
void TIM4_IRQHandler(void)
{if(TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET){Time_1s+=1;TIM_ClearITPendingBit(TIM4,TIM_IT_Update);//清除更新中断标志位}
}
/**************************主函数******************************************/
int main(void)
{TIM2_Config(1000-1,72-1);              //((1+arr )/72M)*(1+psc )=((1+999)/72M)*(1+71)=1msTIM4_Config(2000-1,36000-1);            //((1+arr )/72M)*(1+psc )=((1+1999)/72M)*(1+35999)=1s}

stm32f103c8t6 TIM2定时器1ms中断相关推荐

  1. STM32 定时器的简单应用 1ms中断代码

    引言:利用定时器TIM8产生1ms中断,每中断一次,全局变量+1,计数到10即10ms,使得输出引脚翻转一次.芯片采用STM32F103VCT6,系统输入时钟12MHz,完成代码并用示波器输出. 根据 ...

  2. 51单片机复习:外部中断,定时器/计数器中断

    中断: 什么是中断,就是打断,你一开始在做一件事,突然意外发生(中断源),你不得不停止手中的事,(中断响应),去处理那 件意外(中断服务),处理完意外后你继续做刚才那件事(中断返回),这就是中断,而单 ...

  3. STM32F4---通用定时器更新中断

    STM32F4 的定时器功能十分强大,有TIME1 和 TIME8 等高级定时器,也有 TIME2-TIME5,TIM9-TIM14 等通用定时器,还有 TIME6 和 TIME7 等基本定时器,总共 ...

  4. 设计分享 | STM32F103RCT6定时器定时中断原理

    wx:嵌入式工程师成长日记 https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484146&idx=1&sn= ...

  5. 【STM32】通用定时器TIM2-TIM5中断配置方式+继电器控制

    继电器是我们生活中常用的一种控制设备,通俗的意义上来说就是开关,在条件满足的情况下关闭或者开启.继电器的开关特性在很多控制系统尤其是离散的控制系统中得到广泛的应用.从另一个角度来说,由于为某一个用途设 ...

  6. 【STM32】HAL库——定时器溢出中断

    经过多次调试,我发现Proteus 8的仿真效果并不是很理想,所以接下来的例程将改用STM32F103RCT6单片机实物进行讲解. 前期准备: STM32CubeMX STM32RCT6核心板 IDE ...

  7. 51单片机学习-5定时器与中断

    5 定时器与中断 [toc] 注:笔记主要参考B站江科大自化协教学视频"51单片机入门教程-2020版 程序全程纯手打 从零开始入门". 注:工程及代码文件放在了本人的Github ...

  8. STM32入门笔记04_TIM定时器+案例:TIM定时器定时中断、定时器外部时钟

    TIM定时器 TIM简介 TIM(Timer) 定时器 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 16位计数器.预分频器.自动重装寄存器的时基单元,在72MHz(系统主频)计数时 ...

  9. linux驱动开发5 按键中断实验(定时器和中断)

    led:IO的输出 :key:IO的输入 法一:直接读写IO 使用while(1)无限读取,但CPU占用达到了99.6%,所以不行 #include <linux/types.h>#inc ...

最新文章

  1. 新建了一个英文Blog
  2. python copytree_python shutil.copytree 强制复制目录,源目录存在且有多个文件替代方案....
  3. java des加密解密
  4. 单链表删除所有值为x的元素_线性表之单链表
  5. Acwing 1088.旅行问题
  6. c语言中的所有代码大全,C语言库函数代码大全
  7. 《构建之法》 读书笔记(4)
  8. Qt4_快速设计对话框
  9. maven scope范围
  10. 洛谷——P1296 奶牛的耳语
  11. [bzoj4826][Hnoi2017]影魔
  12. Java全栈开发---Java ERP系统开发:商业ERP(十二)数据的导入导出(Excel)
  13. ARC120F Wine Thief (组合数学)
  14. linux压缩文件和命令
  15. 羽毛球业余分级新标准
  16. Argo CD系列视频图文版之安装 argocd 并运行示例
  17. Linux环境下制作启动U盘
  18. 简单左拉菜单栏-css+js
  19. 迅捷CAD编辑器哪些功能比较好用
  20. 虚幻引擎水材质制作_UE5

热门文章

  1. 如何写英文科技论文 (Unit2 主动语态与动词使用)
  2. “六面魔方”里的浪潮
  3. sass导入sass_SASS的力量
  4. WPF控件库MaterialDesignInXamlToolkit
  5. 使用enumerate造成行距过大,如何缩小列表环境的行距?如何自定义有序列表和无序列表的符号?
  6. USB descriptor
  7. ArcGIS Online上场景图层的性能提升
  8. ie11和edge浏览器下REM的bug
  9. 解决Request method 'POST' not supported问题
  10. 程序员大牛们的经典语录