STM32F103定时器定时间隔验证

才学会使用定时器中断方式点灯,害怕频率不准,所以使用示波器对点灯频率进行测量。代码如下:

#define TIM2_FRQ   100000    //每次触发回调函数的间隔为10us   示波器测量出频率49.558KHZ 约20us(这是因为使用了翻转指令触发电平转换)
#define TIM2_Period (1.0/(float)TIM2_FRQ)
    
bool adcEnableFlag;
uint32_t data_interval;
bool enable_count;
uint32_t timev;

//Timer timer1(TIM1);
extern Timer timer1;

void t2it0()
{
    LED1.toggle();
}
class Test
{
public:
    void event()
    {
        LED1.toggle();
    }
};
Test test;

void setup()
{
    ebox_init();
    UART.begin(9600);
    print_log(EXAMPLE_NAME, EXAMPLE_DATE);

    LED1.mode(OUTPUT_PP);

    timer1.begin(TIM2_FRQ);
    //    timer1.attach(t2it);
    timer1.attach(&test, &Test::event);
    timer1.interrupt(ENABLE);
    timer1.start();
    UART.printf("\r\ntimer clock       = %dMhz", timer1.get_timer_source_clock() / 1000000);
    UART.printf("\r\nmax interrupt frq = %dKhz", timer1.get_max_frq() / 1000);
    UART.printf("\r\ntimer2 frq = %dKhz", TIM2_FRQ / 1000);
    UART.printf("\r\ntimer2 interval = %0.6Fs  ", TIM2_Period );
    UART.printf("\r\ntimer2 interval = %0.2Fms  ", TIM2_Period * 1000);
    UART.printf("\r\ntimer2 interval = %0.1Fus  ", TIM2_Period * 1000000);
}


int main(void)
{
    setup();
    while(1)
    {

    }


}

示波器测量:

定时间隔确实时10us,频率100KHZ,这下心里有底了。u

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值