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