RT-AICHIP-sample
timer.c
[詳解]
1 /* ------------------------------------------------------------ *
2 File Timer.c
3 
4 32bitタイマーの初期化関数群
5 タイマ割り込みの割り込み関数はmain.cに記述
6 * ------------------------------------------------------------ */
7 #include "timer.h"
8 #include "LPC13xx.h" // LPC13xx Peripheral Registers
9 
10 /*----------------------------------------------------------------------------
11  Input void
12  Output void
13 
14  32bitタイマー0の割り込みの設定
15  対応する割り込み関数:void TIMER32_0_IRQHandler(void)
16  *---------------------------------------------------------------------------*/
17 void initTimer32_0 (void)
18 {
19  NVIC_EnableIRQ(TIMER_32_0_IRQn);
20  NVIC_SetPriority(TIMER_32_0_IRQn, 4);
21 
22  LPC_SYSCON->SYSAHBCLKCTRL |= (1<<9);
23  LPC_TMR32B0->PR =7200-1; // 7200-1 = 10kHzでカウント
24  LPC_TMR32B0->MCR =0x600;
25  LPC_TMR32B0->MR3 = 10; // 10kHzカウントでMR3=10:割り込み周期は1000Hzに設定
26  LPC_TMR32B0->TCR =2; // TCR Reset
27 }
28 
29 /*----------------------------------------------------------------------------
30  Input void
31  Output void
32 
33  32bitタイマー0のカウントスタート
34  *---------------------------------------------------------------------------*/
35 void startTimer32_0(void)
36 {
37  LPC_TMR32B0->TCR = 1;
38 }
39 
40 /*----------------------------------------------------------------------------
41  Input void
42  Output void
43 
44  32bitタイマー0のカウントストップ
45  *---------------------------------------------------------------------------*/
46 void stopTimer32_0(void)
47 {
48  LPC_TMR32B0->TCR = 0;
49 }
50 
51 /*----------------------------------------------------------------------------
52  Input void
53  Output void
54 
55  32bitタイマー1の割り込みの設定
56  対応する割り込み関数:void TIMER32_1_IRQHandler(void)
57  *---------------------------------------------------------------------------*/
58 void initTimer32_1 (void)
59 {
60  NVIC_EnableIRQ(TIMER_32_1_IRQn);
61  NVIC_SetPriority(TIMER_32_1_IRQn, 5);
62 
63  LPC_SYSCON->SYSAHBCLKCTRL |= (1<<10);
64  LPC_TMR32B1->PR = 7200-1; // 7200-1 = 10kHzでカウント
65  LPC_TMR32B1->MCR = 0x600;
66  LPC_TMR32B1->MR3 = 100; // 10kHzカウントでMR3=100: 割り込み周期は100Hzに設定
67  LPC_TMR32B1->TCR = 2; // TCR Reset
68 }
69 
70 /*----------------------------------------------------------------------------
71  Input void
72  Output void
73 
74  32bitタイマー1のカウントスタート
75  *---------------------------------------------------------------------------*/
76 void startTimer32_1(void)
77 {
78  LPC_TMR32B1->TCR = 1;
79 }
80 
81 /*----------------------------------------------------------------------------
82  Input void
83  Output void
84 
85  32bitタイマー1のカウントストップ
86  *---------------------------------------------------------------------------*/
87 void stopTimer32_1(void)
88 {
89  LPC_TMR32B1->TCR = 0;
90 }
91 
92 /******************************************************************************
93 ** End Of File
94 ******************************************************************************/
void startTimer32_1(void)
Definition: timer.c:76
void initTimer32_0(void)
Definition: timer.c:17
void stopTimer32_1(void)
Definition: timer.c:87
void startTimer32_0(void)
Definition: timer.c:35
void stopTimer32_0(void)
Definition: timer.c:46
void initTimer32_1(void)
Definition: timer.c:58