STM8学习笔记12:基本定时器

基本定时器(TIM4)

Gitee 空间跳转:https://gitee.com/galoc/stm8.git

1 概述

基本定时器是由一个 4 位可编程的预分频器和 8 位自动重装载向上计数器组成。它可以用于时基生成,并在定时器溢出时产生中断。

2 特性

  1. 8位自动重装载向上计数器(计数值:0-255),可计数236个。
  2. 4位可编程的预分频器(分频系数:1-32768之间任意2的指数幂(1、2、4、8…32768)),预分频器最大值计算方式为:2^ (2n -1)待确认
  3. 在更新事件 UEV(计数器溢出)时,可产生中断/DMA请求 UIF

3 基本定时器事如何工作的?(基本定时器框图)

在这里插入图片描述

① 时钟源
基本定时器的时钟源来自于内部时钟,由外设总线提供
②控制器
可以控制计数器复位、使能和计数
③计数器(时基单元)
溢出条件:CNT == ARR(影子)
影子寄存器是实际起作用的寄存器,不可直接访问。
写入 ARR 寄存器或 PSC 预分频器的值不能生效,要转移至ARR影子寄存器或 PSC 影子 PSC 预分频器才能生效。
当设置 ARR 具有缓冲作用时,更新事件(UEV)产生时,预装载寄存器的值才加载到对应的影子寄存器。ARR 无缓冲作用,会马上转移至影子寄存器。PSC预分频器类似。

4 相关寄存器

  1. TIMx_CR1.ARPE 自动重装载预装载使能(Aoto-reload preload enable)
    0:TIMx_ARR 寄存器没有缓冲
    1:TIMx_ARR 寄存器具有缓冲(ARR寄存器的值在运行中做变更,如小灯泡亮 1s,灭 2s)
  2. TIMx_CR1.CEN 计数器使能(Counter enable)
    0:关闭计数器
    1:使能计数器
    作用:用于设置 ARR 寄存器是否具有缓冲,以及使能/关闭计数器
  3. TIMx_DER.UDE DMA 请求使能寄存器(Updata DMA request enable)
    0:禁止更新DMA请求
    1:使能更新DMA请求,可以产生 DMA请求
    作用:用于使能DMA请求
  4. TIMx_IER.UIE 中断使能寄存器 (Updata interrupt enable)
    0:禁止更新中断
    1:使能更新中断,可以产生更新中断
    作用:用于使能更新中断
  5. TIMx_SR.UIF 更新中断标志(Update interrupt falg)
    0:没有产生更新
    1:产生了更新中断
    作用:用于判断是否发生了更新中断,有硬件置1,软件清零
  6. TIMx_CNTR.CNT[7:0] 计数器数值(Counter Value)
    作用:计数器实时数值,可用于设置计数器初始值,范围:0-255 (28-1)
  7. TIM_PSCR.PSC[3:0] 预分频器值(Prescaler Value)
    计数器的时钟频率 CK_CNT 等于 fck_psc/2(PSC[3:0]),预分频系数2(PSC[3:0])可以配置为 1-32768 之间的 2 的任意次幂(包括1、2、4、8…32768)
    作用:用于设置预分频系数,范围:1-32748
  8. TIMx_ARR.ARR[7:0] 自动重装载数值(Auto-reload Value)
    作用:用于设置自动重装载值,范围:0-255

5 定时器溢出时间计算

Tout = (ARR + 1)*(PSC)/fck_psc
Tout 是定时器溢出时间
fck_psc 是定时器的时钟源频率
ARR 是自动重装载寄存器的值
PSC 是预分频寄存器的值

Note

  1. ARR为啥要+1?
    因为预装载值至少为1。如果自动重装载值为0,则计数器停止。

6 定时器中断实验配置步骤(先配置后使能)

使用定时器 4,实现 1ms 定时器更新中断,在中断里反转 Led_Blue

  1. 配置时钟源并使能相关外设时钟
  2. 配置定时器基本工作参数(预分频系数 PSC、自动重装载值 ARR、自动重装载预装载使能)
  3. 使能更新中断并启动计数器
  4. 设置优先级并使能中断
  5. 编写中断服务函数
  6. 编写定时器更新中断回调函数

相关函数介绍如下表:

函数主要寄存器主要功能
Timer4_Base_Clock_Config配置时钟源并使能相关外设时钟
Timer4_Base_InitCR1、ARR、PSCR初始化定时器基本参数
Timer4_Base_Start_ITIER、CR1使能更新中断并启动计数器
TIM4_UPD_OVF_TRG_IRQHandlerSR定时器中断处理函数
__weak void Timer4_Callback()定时器更新中断回调函数,由用户重定义

7 结果

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据引用内容,STM32C8T6是一款通用增强型的48脚单片机,具有64K闪存和LQFP封装。它适用于工业级温度范围-40~85度。下面是一些关于STM32C8T6学习笔记: 1. 学习资料:可以从ST官方网站下载STM32C8T6的数据手册和参考手册,这些手册包含了该单片机的详细信息和使用方法。 2. 开发环境:为了开始学习STM32C8T6,你需要安装相应的开发环境。ST官方提供了一款免费的集成开发环境(IDE)——STM32CubeIDE,它可以帮助你进行代码编写、调试和下载。 3. 编程语言:STM32C8T6可以使用多种编程语言进行开发,包括C语言和汇编语言。C语言是最常用的编程语言,它可以通过STM32CubeIDE进行编写和调试。 4. 引脚配置:在使用STM32C8T6之前,你需要了解每个引脚的功能和配置。数据手册中有一张引脚功能表,可以帮助你了解每个引脚的用途和配置方法。 5. 时钟配置:STM32C8T6具有多个时钟源和时钟分频器,你需要根据自己的需求配置正确的时钟。时钟配置对于外设的正常工作非常重要。 6. 中断和定时器STM32C8T6支持中断和定时器功能,这些功能可以帮助你实现各种任务和功能。你可以通过配置中断和定时器来实现外设的响应和定时操作。 7. 外设驱动:STM32C8T6具有丰富的外设,包括GPIO、UART、SPI、I2C等。你可以根据自己的需求选择合适的外设,并学习如何配置和驱动这些外设。 8. 调试和下载:在开发过程中,你可以使用STM32CubeIDE提供的调试功能来调试你的代码。一旦代码调试完成,你可以使用ST-Link或其他下载器将代码下载到STM32C8T6上运行。 希望以上笔记对你学习STM32C8T6有所帮助!如果你有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值