0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CW32定时器及其中断介绍

武汉芯源半导体有限公司 2023-02-28 16:32 次阅读

以CW32L083为例,其定时器分为6种:

基本定时器:CW32L083 内部集成 3 个基本定时器 (BTIM),每个 BTIM 完全独立且功能完全相同,各包含一个 16bit 自动重装 载计数器并由一个可编程预分频器驱动。BTIM 支持定时器模式、计数器模式、触发启动模式和门控模式 4 种工作模式,支持溢出事件触发中断请求和 DMA 请求。得益于对触发信号的精细处理设计,使得 BTIM 可以由硬件自 动执行触发信号的滤波操作,还能令触发事件产生中断和 DMA 请求。

低功耗定时器:CW32L083 内部集成 1 个 16 位低功耗定时器(LPTIM),可以以很低的功耗实现定时或对外部脉冲计数的功能。通过选择合适的时钟源和触发信号,可以实现系统低功耗休眠时将MCU唤醒的功能。LPTIM 内部具有一个比较寄存器,可实现比较输出和 PWM 输出,并可以控制输出波形的极性。此外,LPTIM 还可以与正交编码器连接,自动 实现递增计数和递减计数。

通用定时器:CW32L083 内部集成 4 个通用定时器(GTIM),每个 GTIM 完全独立且功能完全相同,各包含一个16bit 自动重 装载计数器并由一个可编程预分频器驱动。GTIM 支持定时器模式、计数器模式、触发启动模式和门控模式 4 种基本工作模式,每组带4 路独立的捕获 / 比较通道,可以测量输入信号的脉冲宽度(输入捕获)或者产生输出波形(输出比较和 PWM)。

高级定时器:高级定时器 (ATIM) 由一个 16 位的自动重载计数器和 7 个比较单元组成,并由一个可编程的预分频器驱动。ATIM 支持 6 个独立的捕获 / 比较通道,可实现 6 路独立 PWM 输出或 3 对互补 PWM 输出或对 6 路输入进行捕获。可 用于基本的定时 / 计数、测量输入信号的脉冲宽度和周期、产生输出波形(PWM、单脉冲、插入死区时间的互补 PWM 等)。

独立看门狗定时器 (IWDT):CW32L083 内部集成独立看门狗定时器 (IWDT),使用专门的内部 RC 时钟源 RC10K,可避免运行时受到外部因素 影响。一旦启动 IWDT,用户需要在规定时间间隔内对 IWDT 的计数器进行重载,否则计数器溢出会触发复位或 产生中断信号。IWDT 启动后,可停止计数。可选择在深度休眠模式下 IWDT 保持运行或暂停计数。专门设置的键值寄存器,可以锁定 IWDT 的关键寄存器,防止寄存器被意外修改。

窗口看门狗定时器 (WWDT):CW32L083 内部集成窗口看门狗定时器 (WWDT),用户需要在设定的时间窗口内进行刷新,否则将触发系统复位。WWDT 通常被用来监测有严格时间要求的程序执行流程,防止由外部干扰或未知条件造成应用程序的执行异常, 导致发生系统故障。

01

CW32定时器中断

定时器中断是由CW32中的定时器引起的中断,所谓中断就是程序正常顺序执行的时候,出现了突发事件,CPU停止当前的程序的执行,转去处理突发事件,处理完毕后又返回原程序被中断的位置继续执行。

02

CW32定时器中断源

定时器主要中断源包括如下:

基本定时器(BTIM): 计数器(ARR/TOP)溢出中断、计数器触发中断。

低功耗定时器(LPTIM): 计数方向反向中断、ARR更新完成中断、比较寄存器更新完成中断、计数器触发中断、ARR自动重载匹配中断、比较匹配中断。

通用定时器(GTIM): 编码器计数方向变化中断、CHx捕获比较中断、计数器下溢中断、计数器触发中断、计数器ARR溢出中断。

高级定时器(ATIM): CHxA/B捕获比较中断、CHxA/B捕获数据丢失中断、计数器上溢中断、计数器下溢中断、刹车中断、CH4比较匹配中断、事件更新中断。

更新事件, 触发事件。

独立看门狗定时器(IWDT): 计数器溢出中断。

窗口看门狗定时器(WWDT):计数器溢出中断。

各中断源的含义详细描述参见对应产品的用户手册内容。

03

实际操作

以CW32L083为例,控制基本定时器BTIM1以固定的时间间隔产生中断,并在ARR溢出中断中控制口线电平翻转。

1. RCC时钟初始化

void RCC_Configuration(void)
{
RCC_HSI_Enable(RCC_HSIOSC_DIV6);
//系统时钟设置为HSI时钟6分频,8MHz, PCLK、HCLK不分频,PCLK=HCLK=SysClk=8MHz
__RCC_BTIM_CLK_ENABLE();
__RCC_GPIOB_CLK_ENABLE();
}

2.初始化GPIO口

void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.IT = GPIO_IT_NONE;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pins = GPIO_PIN_8;
GPIO_Init(CW_GPIOB, &GPIO_InitStruct);
}

3.配置嵌套矢量中断控制器

void NVIC_Configuration(void)
{
    __disable_irq();
    NVIC_EnableIRQ(BTIM1_IRQn);
    __enable_irq();
} 

4.主函数

int32_t main(void)
{
BTIM_TimeBaseInitTypeDef BTIM_TimeBaseInitStruct = {0};

/* System Clocks Configuration */
    RCC_Configuration();

    /* NVIC Configuration */
    NVIC_Configuration();

    /* GPIO Configuration */
    GPIO_Configuration();

BTIM_TimeBaseInitStruct.BTIM_Mode = BTIM_Mode_TIMER;
/* 工作模式,00:定时器模式01:计数器模式10:触发计数模式11:门控计数模式 */
BTIM_TimeBaseInitStruct.BTIM_Period = 49999;
/* 计数重载周期,取值范围0x0000 到 0xFFFF. */
    BTIM_TimeBaseInitStruct.BTIM_Prescaler = 7;   // 8分频
/*8分频, 预分配系数,取值范围2的n次幂,n=0,1,2…15 */
BTIM_TimeBaseInit(CW_BTIM1, &BTIM_TimeBaseInitStruct);
//BTIM基本定时器初始化
    BTIM_ITConfig(CW_BTIM1, BTIM_IT_OV, ENABLE);  // 使能BTIMx的溢出中断
    BTIM_Cmd(CW_BTIM1, ENABLE);
    /*BTIM1以1MHz时钟进行计数,设置ARR寄存器为49999,则BTIM1将每50ms溢出一次,并触发中断服务程序。*/
    while (1)
    {
        /* 中断服务程序中 PB8输出翻转 */
    }
}

5.中断函数:PB08输出翻转

void BTIM1_IRQHandler(void)
{
    /* USER CODE BEGIN */
if (BTIM_GetITStatus(CW_BTIM1, BTIM_IT_OV))
// 检查BTIM的状态寄存器的各状态位是否置位
    {
        BTIM_ClearITPendingBit(CW_BTIM1, BTIM_IT_OV); 
// 清除BTIM的状态寄存器的各状态位
        PB08_TOG();
//PB08口信号翻转
    }

    /* USER CODE END */
}

6.实验验证

示波器检测PB08口的信号输出,示波器波形图呈周期性翻转。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7552

    浏览量

    151417
  • 单片机
    +关注

    关注

    6037

    文章

    44558

    浏览量

    635245
  • mcu
    mcu
    +关注

    关注

    146

    文章

    17148

    浏览量

    351191
  • 国产替代
    +关注

    关注

    0

    文章

    166

    浏览量

    1770
收藏 人收藏

    评论

    相关推荐

    定时器的工作方式介绍

    或实现周期性事件的硬件模块。它可以用于实现各种定时任务,如定时中断、PWM(脉冲宽度调制)输出、频率测量等。定时器通常由一个计数、一个时钟源和一个控制寄存
    的头像 发表于 07-12 10:29 952次阅读

    定时器相关的寄存有哪些类型

    在微控制编程中,定时器是一种非常常见的功能模块,用于实现各种定时和计数功能。定时器的工作原理是通过内部的计数来跟踪时间的流逝,当计数
    的头像 发表于 07-12 10:25 934次阅读

    【项目展示】基于CW32的遥控循迹小车

    CW32循迹小车.zip_免费高速下载|百度网盘-分享无限制  一、概述 CW32循迹、遥控小车具有循迹和遥控两种功能,小车的硬件模块由CW32F030C8T6小蓝板、智能小车控制底板、BT04-E
    的头像 发表于 05-31 17:33 1316次阅读
    【项目展示】基于<b class='flag-5'>CW32</b>的遥控循迹小车

    CW32数字电压电流表软件教程-实验四:数码管动态显示

    显示不同的值需要用到CW32定时器功能,在定时器中断服务程序里面执行显示刷新的动作。有关CW32
    的头像 发表于 05-31 15:23 519次阅读
    <b class='flag-5'>CW32</b>数字电压电流表软件教程-实验四:数码管动态显示

    CW32使用DMA单通道、定时器触发ADC实现了多路AD采集

    本测试样例基于CW32F030C8T6MCU,使用DMA单通道、定时器触发ADC实现了12路AD采集。
    的头像 发表于 05-24 09:29 846次阅读
    <b class='flag-5'>CW32</b>使用DMA单通道、<b class='flag-5'>定时器</b>触发ADC实现了多路AD采集

    使用定时器的编码接口模式,打开定时器的溢出中断,当定时器上溢出和下溢出是,是否都会产生溢出中断

    使用定时器的编码接口模式,打开定时器的溢出中断,当定时器上溢出和下溢出是,是否都会产生溢出中断
    发表于 05-24 07:41

    如何实现一个软件定时器

    在Linux,uC/OS,FreeRTOS等操作系统中,都带有软件定时器,原理大同小异。典型的实现方法是:通过一个硬件定时器产生固定的时钟节拍,每次硬件定时器中断到,就对一个全局的时间
    的头像 发表于 04-29 11:00 652次阅读

    CW32量产烧录工具

    本节主要介绍CW32微控制的烧录CW-Writer,以及与之配合的软件CW-Programm
    的头像 发表于 04-25 15:22 1405次阅读
    <b class='flag-5'>CW32</b>量产烧录工具

    CW32快速开发入门

    CW32快速开发入门
    的头像 发表于 04-24 18:56 1966次阅读
    <b class='flag-5'>CW32</b>快速开发入门

    s7200定时器的五种故障介绍

    定时器或CPU故障:如果定时器本身或PLC的CPU出现故障,也可能导致定时器无法复位。此时,需要检查定时器和CPU的工作状态,确保其正常运行。
    的头像 发表于 04-03 17:08 2472次阅读

    ​PLC定时器介绍

    定时器是PLC中重要的编程元件,是累计时间增量的内部器件。大部分自动控制领域都需要定时器进行延时控制,灵活地使用定时器可以编制出复杂的控制程序。
    发表于 03-22 12:36 2387次阅读
    ​PLC<b class='flag-5'>定时器</b><b class='flag-5'>介绍</b>

    使用555定时器的可调双定时器电路

    定时器 IC 555 是最通用和最常用的 IC 之一,因为它的应用范围更广,如 PWM放大器、延迟定时器、开关电路、占空比选择、时钟脉冲发生等。这也可用于各种应用,如精确
    的头像 发表于 02-25 15:16 2223次阅读
    使用555<b class='flag-5'>定时器</b>的可调双<b class='flag-5'>定时器</b>电路

    单片机外部中断定时器中断的区别和用法

    单片机外部中断定时器中断在触发来源、应用场景以及功能特点上存在明显差异** **。
    的头像 发表于 01-28 17:35 3125次阅读

    555定时器的基本功能 555定时器的工作原理及其应用

    555定时器是一种非常常见和常用的集成电路,它具有广泛的应用领域,例如计时、频率分频、脉冲宽度调制等。本文将详细介绍555定时器的基本功能、工作原理以及应用。 一、555定时器的基本功
    的头像 发表于 01-18 11:12 1.5w次阅读

    单片机定时器的用法

    本章以CW32通用定时器为例介绍单片机定时器的用法。
    的头像 发表于 01-04 10:37 1412次阅读
    单片机<b class='flag-5'>定时器</b>的用法