公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

TLE9879 Evaluation Kit 评估板-智能引擎冷却风扇-软件篇之定时器

TLE9879 Evaluation Kit 评估板-智能引擎冷却风扇-软件篇之定时器

我是爆米花啊
Level 0

        辛苦码完一篇帖子,提交时弹出登录界面。只能重新写一份了。。。我也不记得之前说啥了。前面2篇介绍了系统框架和硬件组成。这篇开始分享软件编写。为了赶工,无刷电机驱动直接用的FOC例程。以下是程序的基本框架。


QQ截图20200110110125.png


        整个系统涉及的内容还是比较大,业余时间搞有点吃力呀。先从TLE9879的定时器开始吧。这里使用定时器作为ModBus数据帧断帧依据。


        之前用过英飞凌的XMC4700,资源丰富性能强悍的一款MCU。这次拿到TLE9879QXA40,打开参考手册之后还是有点点小震惊的,十分简洁,让我有种用51的错觉。不过TLE9879QXA40集成了LIN收发器和MOSFET驱动器,花里胡哨的外设可能没那么丰富,总之我们先来体验一下。

定时器的使用

 

图片1.png


从手册看十分简洁。只有控制,模式,重载,计数等几个寄存器。没什么特别需要研究的。直接结合例程去看,方便更快速上手。

void TIMER2_Init(void)

{

#if (TIMER2_Configuration_En == 1)

  TIMER2->RC2H.reg = (uint8) TIMER2_RC2H;

  TIMER2->RC2L.reg = (uint8) TIMER2_RC2L;

  TIMER2->T2H.reg = (uint8) TIMER2_T2H;

  TIMER2->T2L.reg = (uint8) TIMER2_T2L;

  TIMER2->T2MOD.reg = (uint8) TIMER2_T2MOD;

  TIMER2->T2CON.reg = (uint8) TIMER2_T2CON;

  TIMER2->T2CON1.reg = (uint8) TIMER2_T2CON1;

#endif

}

 

首先配置重载值,这里配置为3036,计数器写入初值为0xFFFF。模式寄存器写入0x1F,使能分频并设置分频系数128。通过配置寄存器关闭一些特殊功能并打开中断。

void UART1_IRQHandler(void)

{

if ((uint8)TIMER2->T2CON1.bit.TF2EN == (uint8)1)

  {

    if ((uint8)TIMER2->T2CON.bit.TF2 == (uint8)1)

    {

      PORT_ChangePin(0x01, PORT_ACTION_TOGGLE);

      TIMER2_Overflow_Int_Clr();

    }

  }

}

测试定时器程序,在定时器中断函数里写一个点灯的语句,就可以让LED闪烁起来了。



0 点赞
1706 次查看
2 评论