网站首页 > 技术教程 正文
在STM32超低功耗系列的STM32L4系列的MCU中,包含以下系列的芯片:
STM32L41xxx,L42xxx,L43xxx,L44xxx,L45xxx,L46xxx;
STM32L47xxx,L48xxx,L49xxx,L4Axxx。
这些芯片中具备2个基本定时器(Basic timers):TIM6和TIM7。
TIM6存在于上述所有系列芯片中。TIM7只存在于:L43xxx,L44xxx 这2个系列中。
TIM6和TIM7由可编程预分频器驱动的16位自动重载计数器组成。
其输入时钟源为PCLK1,PCLK1的来源如下图:
注意:当HCLK分频为PLCK1的分频系数=1时,输入TIM6和TIM7的时钟=PCLK1,
当HCLK分频为PLCK1的分频系数不等于1时,输入TIM6和TIM7的时钟=PCLK1*2。
在使用TIM6,TIM7之前需要将其时钟使能。
TIM6的时钟使能控制位:RCC_APB1ENR1[4].TIM6EN = 1
TIM7的时钟使能控制位:RCC_APB1ENR1[5].TIM7EN = 1
这2个定时器只可以增计数,当计数器的值从0增计数到自动重载值TIM6->ARR时产生中断。当重载值设置到TIM6->ARR后,会把这个值加载到影子寄存器里面,计数器的实时计数值是和影子寄存器的内容来比较的,当计数器的值达到影子寄存器的值时,会产生中断。
下面是TIM6产生1 ms中断的例子代码:
//-----------------------------------------------------------------------------
// TIM6通用定时器
//
// 时钟源: APB1-PCLK1 = 18.432MHz【80 MHz Max】
//
// RCC_CFGR_PPRE1 的分频系数 = 1 时 CLK = APB1-PCLK1
// RCC_CFGR_PPRE1 的分频系数 != 1 时 CLK = APB1-PCLK1 * 2
//-----------------------------------------------------------------------------
void TIM6_Init(void)
{
// 允许TIM6时钟
RCC->APB1ENR1 |= RCC_APB1ENR1_TIM6EN;
// 清除:中断标志
TIM6->SR &= ~TIM_DIER_UIF;
// 允许:中断
TIM6->DIER |= TIM_DIER_UIE;
// 中断源:只有当计数器溢出时产生中断
TIM6->CR1 |= TIM_CR1_URS;
// 计数器溢出时,允许将TIM6->ARR的值更新到影子寄存器
TIM6->CR1 &= ~TIM_CR1_UDIS;
// 启用预加载:TIM6->ARR到影子寄存器
TIM6->CR1 |= TIM_CR1_ARPE;
// 对输入时钟预分频,这里设输入时钟 = APB1-PCLK1 * 2 = 36.864
// 定时器的时钟 = 36.864 / (PSC+1) = 18.432 MHz
TIM6->PSC = 1;
// 计数值 = 18432,因为时钟是18.432 MHz,定时器增计数到18432产生中断,时间是1ms
TIM6->ARR = 18432;
// 启动TIM6计数器
TIM6->CR1 |= TIM_CR1_CEN;
// 开TIM6中断
NVIC_EnableIRQ(TIM6_DAC_IRQn);
}
//-----------------------------------------------------------------------------
// TIM6中断处理程序
// 中断时间 = 18432 / 18.432 MHz = 1ms
//-----------------------------------------------------------------------------
void TIM6_DAC_IRQHandler(void)
{
// 清除:中断标志
TIM6->SR &= ~TIM_DIER_UIF;
// 此处可以添加自己的处理程序
// ...
}
/////////////////////////////////////////////////////////////////////////////////////////////// 2ms
猜你喜欢
- 2025-07-01 类似于STM32之类的单片机,RTOS比裸机真有那么大优势?
- 2025-07-01 单片机系统按键硬件、软件设计技巧
- 2025-07-01 单片机键盘消抖“独门”汇编方案分享,不用延时还能用什么?
- 2025-07-01 单片机引脚功能介绍(单片机引脚工作原理)
- 2025-07-01 单片机与外设的交互(单片机与电脑交互)
- 2025-07-01 26单片机的最小电路介绍(单片机最小电路图pcb)
- 2025-07-01 汇编入门第一篇,小白也能看懂(汇编rl)
- 2025-07-01 单片机简介(arm单片机)
- 2025-07-01 51单片机可以用来做什么?单片机可以做的小产品
- 2025-07-01 我在高职教STM32——02一览STM32的重要功能
你 发表评论:
欢迎- 最近发表
-
- Android 16评测:热潮之后(16x安卓10)
- 新功能很赞!Android 7.0上手体验:系统巨流畅
- 解决Windows下linux子系统WSL无法使用reboot重启的问题
- Python 的 init 方法:深入对象初始化
- 【开源】基于 Vue 和 Gin 开发的前后端分离的开源框架
- 全面解析 Linux 中的运行级别,从 SysV init 到 systemd
- Android 开机启动流程分析(06)init.rc解析流程
- 399元,魅族推出智能手表inWatch(魅族的手表)
- Android 开机启动流程分析(01) init之前启动说明
- Android 开机启动流程分析(03)init启动关键进程uevent&watchdog
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)