RX62NのタイマMTUを使いmsオーダーで時間待ちするプログラムです。割り込みを使用していません。
- #include "iodefine.h"
- /*
- * タイマの初期化
- * 使用タイマ MTU8
- * 割込みは使用しないがフラグは使用する。
- */
- void initTimer(void)
- {
- MSTP(MTU8) = 0;
- MTU8.TCR.BYTE = 0x43;
- MTU8.TIER.BIT.TGIEB = 1;
- MTU8.TCNT = 0;
- MTU8.TGRB = 750 - 1; /* PCLK = 48MHzで1msecごとに割り込み */
- IR(MTU8,TGIB8) = 0;
- }
- /*
- * タイマスタート
- */
- void startMTU(void)
- {
- MTU8.TCNT = 0;
- MTUB.TSTR.BIT.CST2 = 1; /* Start MTU2_8 */
- }
- /*
- * タイマストップ
- */
- void stopMTU(void)
- {
- MTUB.TSTR.BIT.CST2 = 0; /* Stop MTU2_8 */
- }
- /*
- * 1msec経過したかチェック(割込みフラグをポーリング)
- */
- unsigned char checkIRFlag(void)
- {
- if(IR(MTU8,TGIB8) == 1)
- {
- IR(MTU8,TGIB8) = 0;
- return(1);
- }
- else
- {
- return(0);
- }
- }
- /*
- * msecオーダーでの時間待ち
- */
- void delay_ms(unsigned int ms)
- {
- startMTU();
- while(ms > 0) {
- if( checkIRFlag() == 1 ) {
- ms--;
- }
- }
- stopMTU();
- }
※コメント投稿者のブログIDはブログ作成者のみに通知されます