请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: 你好! 我 尝试使用计时器4生成1MHz 中断、以精确地对微秒进行计数、但它的工作效果不好。 以下是我的代码:
//计时器4设置函数 void Timer4_init (void) { //******** Timer4、通道 //定时器4通道0比较值。 CLKCONCMD =(CLKCONCMD &~CLKCON_TICKSPD)| CLKCON_TICKSPD_32M; T4IE = 1; /********* *计时器4设置 * *定时器4通道0比较值。 启动计时器终端计数值 *更改为224。 在每个定时器比较匹配中断时重置该值。 * T4CC0 = e0;/224 -> 256 -(32MHz/(预分频器*目标频率)):TARGET_FREQUENCY = 1MHz /*定时器4通道0 (T4CCTL0)配置: *-通道0中断被启用。 *-比较模式。 * T4CCTL0 = T4CCTLn_IM | T4CCTLn_MODE; /*定时器4控制(T4CTL)配置: *-预分频器值:1. *-模数模式。 *计时器也会被清除并启动。 * T4CTL = T4CTL_DIV_1 | T4CTL_MODE_modulo | T4CTL_CLR | T4CTL_START; } //中断函 数#pragma vector = T4_vector _ interrupt void T4_ISR (void) { // //清除模块中断标志。 T4OVFIF = 0; 静态 uint16微秒= 0; Micros ++; //清除 CPU 中断标志。 T4IF = 0; }