CH573-04-定时器——RISC-V内核BLE MCU快速开发教程

在这里插入图片描述

1. 简介

  芯片提供了 4 个 26 位定时器,TMR0、TMR1、TMR2 和 TMR3,最长定时时间为 226个时钟周期。(如果系统时钟周期为 32MHz,则最长定时时间为:31.25nS*2^26≈2S),可完成测量输入信号脉冲长度(输入捕捉)或者产生输出波形(PWM),另外 TMR1和 TMR2 支持 DMA 功能。每个定时器都是完全独立的,可以一起同步操作。

2. 新建工程

  复制并粘贴上一讲的中断工程,并重命名为“CH573_04_TIMER”。
在这里插入图片描述

3. 参加编译CH57x_timer0.c

  在项目工程的驱动文件夹”StdPeriphDriver“中找到”CH57x_timer0.c“文件,当前未参与编译,右键”参与/排除编译“。
在这里插入图片描述

4. 定时器初始化与定时器中断函数

   1) 定时器初始化

    CH57x_timer0.c中包含的定时器0初始化的函数实体:
在这里插入图片描述
    我们使用时只需要调用TMR0_TimerInit()函数然后打开中断即可,例如:

    uint32_t time=500;//定时500ms
    TMR0_TimerInit(FREQ_SYS/(1000/time));//定时器0初始化:
    TMR0_ITCfg(ENABLE, TMR0_3_IT_CYC_END); // 开启中断
    PFIC_EnableIRQ(TMR0_IRQn);

   2) 定时器中断函数

      在main.c的最后重写定时器中断函数:

//设置定时器中断相关函数属性,指定声明相关特征
__attribute__((interrupt("WCH-Interrupt-fast")))
__attribute__((section(".highcode")))
/*********************************************************************************************************
* 函 数 名: TMR0_IRQHandler()
* 功能说明: 定时器TMR0中断函数(LED翻转电平)
* 形 参:无
* 返 回 值: 无
*********************************************************************************************************/
void TMR0_IRQHandler(void)
{
    if(TMR0_GetITFlag(TMR0_3_IT_CYC_END))
    {
        TMR0_ClearITFlag(TMR0_3_IT_CYC_END); // 清除中断标志
        //定时的任务
        LED_Toggle();

    }
}

   3) main函数

/*********************************************************************
 * @fn      main
 *
 * @brief   主函数
 *
 * @return  none
 */

int main()
{
    SetSysClock(CLK_SOURCE_PLL_60MHz);
    LED_init();//LED初始化
   // KEY_init();//按键初始化
   // KEY_interrupt_init();   //中断初始化

    uint32_t time=500;//定时500ms
    TMR0_TimerInit(FREQ_SYS/(1000/time));//定时器0初始化:
    TMR0_ITCfg(ENABLE, TMR0_3_IT_CYC_END); // 开启中断
    PFIC_EnableIRQ(TMR0_IRQn);

    while(1)
    {
        DelayMs(50);
    }
}

5. 编译烧录运行

在这里插入图片描述

   现象:LED间隔500ms翻转亮灭状态。


    如果LED间隔500ms翻转LED状态,即达到本实验的目的,如果异常,请检查源代码,如有疑问可关注公众号 “IOT趣制作”,将您遇到的问题描述出来,平台收到您的留言后会第一时间进行解决。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IOT趣制作

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值