忘備録-備忘録

技術的な備忘録

RX62Nのタイマを使うその3

2015-11-26 09:37:31 | RX62N
RX62NのタイマMTUを使いusオーダーで時間待ちするプログラムです。割り込みを使用しないバージョンです。

  1. #include "iodefine.h"
  2. #define PCLK    48    //PCLK = 48MHz
  3. unsigned int usecCount;
  4. /*
  5.  * タイマの初期化
  6.  *  使用タイマ MTU10
  7.  * 割込みは使用しないフラグは使用する。
  8.  */
  9. void initTimer(void)
  10. {
  11.     MSTP(MTU10) = 0;
  12.     MTU10.TCR.BIT.TPSC = 0x02;    // PCLK/16でカウント
  13.     MTU10.TCNT = 0;                //フリーランカウンタ
  14.     usecCount = PCLK*1000000L/1000000L/16L;    //1usecのカウント値
  15. }
  16. /*
  17.  * タイマスタート
  18.  */
  19. void startMTU(void)
  20. {
  21.     MTU10.TCNT = 0;
  22.     MTUB.TSTR.BIT.CST4 = 1;            /* Start MTU2_8 */
  23. }
  24. /*
  25.  * タイマストップ
  26.  */
  27. void stopMTU(void)
  28. {
  29.     MTUB.TSTR.BIT.CST4 = 0;            /* Stop MTU2_8 */
  30. }
  31. /*
  32.  * usecオーダーでの時間待ち
  33.  */
  34. void delay_us(unsigned int us)
  35. {
  36.     unsigned int waitCount;
  37.     waitCount = us * usecCount;    //カウンタの値がいくつになれば指定した時間が来たか
  38.                                 //16bitなのでオーバーフローに注意
  39.     startMTU();
  40.     while(MTU10.TCNT <waitCount);
  41.     stopMTU();
  42. }
  43. /*
  44.  * msecオーダーでの時間待ち
  45.  */
  46. void delay_ms(unsigned int ms)
  47. {
  48.     unsigned int i;
  49.     for(i=0;i<ms;i++) {
  50.         delay_us(1000);
  51.     }
  52. }


最新の画像もっと見る

コメントを投稿