nuc123的timer操作

#include "NUC123.h"
static uint32_t modulate = 0;
// Time-out period = (Period of Timer clock input) * (8-bit PRESCALE + 1) * (24-bit TCMP).(在NUC123.h文件TIMER_T::TCMPR寄存器的描述中有此公式)
// 调制频率定时器,0-300Hz
void Timer1_Init(void)
{
    CLK_SetModuleClock(TMR1_MODULE, CLK_CLKSEL1_TMR1_S_HCLK, 0);
    CLK_EnableModuleClock(TMR1_MODULE);
    SYS_ResetModule(TMR1_RST);
    /* Initial Timer1 default setting */
    TIMER_Open(TIMER1, TIMER_CONTINUOUS_MODE, 4000);    // 默认是8分频,即72MHz / 8 = 9MHz
    TIMER1->TCSR |= 1 << 16;    // TDR寄存器自动向上计数
    TIMER_SET_CMP_VALUE(TIMER1, 0xAFC8);    // f = 100Hz, T = 1 / f = 0.01s
    TIMER_EnableInt(TIMER1);
    NVIC_EnableIRQ(TMR1_IRQn);
    TIMER_Start(TIMER1);
}

void TMR1_IRQHandler(void)
{
    modulate += 0xAFC8;
    if(TIMER_GetIntFlag(TIMER1) == 1)
    {
        TIMER_ClearIntFlag(TIMER1);
        TIMER_SET_CMP_VALUE(TIMER1, modulate);
    }
}

这样初始化timer1之后,就可以动态的修改modulate的值,从而达到修改定时器频率的目的。也可以使用TIMER_Delay()函数了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值