OSDN Git Service

マルチプロジェクト型にレポジトリを変更するために移動した
[toppersasp4lpc/asp.git] / asp / chip / lpc1700_gcc / lpc1700.h
1 /*
2  *  TOPPERS/JSP Kernel
3  *      Toyohashi Open Platform for Embedded Real-Time Systems/
4  *      Just Standard Profile Kernel
5  *
6  *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7  *                              Toyohashi Univ. of Technology, JAPAN
8  *  Copyright (C) 2005-2007 by Embedded and Real-Time Systems Laboratory
9  *              Graduate School of Information Science, Nagoya Univ., JAPAN
10  *  Copyright (C) 2010 by TOPPERS/ASP for LPC project
11  *              http://sourceforge.jp/projects/toppersasp4lpc/
12  * 
13  *  上記著作権者は,Free Software Foundation によって公表されている 
14  *  GNU General Public License の Version 2 に記述されている条件か,以
15  *  下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェア(本ソフトウェ
16  *  アを改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
17  *  利用と呼ぶ)することを無償で許諾する.
18  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
19  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
20  *      スコード中に含まれていること.
21  *  (2) 本ソフトウェアを再利用可能なバイナリコード(リロケータブルオブ
22  *      ジェクトファイルやライブラリなど)の形で利用する場合には,利用
23  *      に伴うドキュメント(利用者マニュアルなど)に,上記の著作権表示,
24  *      この利用条件および下記の無保証規定を掲載すること.
25  *  (3) 本ソフトウェアを再利用不可能なバイナリコードの形または機器に組
26  *      み込んだ形で利用する場合には,次のいずれかの条件を満たすこと.
27  *    (a) 利用に伴うドキュメント(利用者マニュアルなど)に,上記の著作
28  *        権表示,この利用条件および下記の無保証規定を掲載すること.
29  *    (b) 利用の形態を,別に定める方法によって,上記著作権者に報告する
30  *        こと.
31  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
32  *      害からも,上記著作権者を免責すること.
33  * 
34  *  本ソフトウェアは,無保証で提供されているものである.上記著作権者は,
35  *  本ソフトウェアに関して,その適用可能性も含めて,いかなる保証も行わ
36  *  ない.また,本ソフトウェアの利用により直接的または間接的に生じたい
37  *  かなる損害に関しても,その責任を負わない.
38  * 
39  */
40
41 /**
42  * \ingroup TOPPERS_ASP
43  * \defgroup TOPPERS_CHIP LPC17XX チップ依存部
44  * \{
45  */
46 /**
47  * \file lpc1700.h
48  * \details NXP LPC1700シリーズのハードウェア宣言
49  */
50 #ifndef TOPPERS_CHIP_LPC1700_H
51 #define TOPPERS_CHIP_LPC1700_H
52
53 #include <sil.h>
54
55 /*
56  * CORTEX-M3 CPUの依存部のインクルード
57  */
58 #include "arm_m_gcc/arm_m.h"
59 #ifndef TOPPERS_MACRO_ONLY
60 #include "LPC17xx.h"
61 #endif
62
63 /**
64  * \brief 割込み番号の最大値
65  * \details
66  * CORTEX-M3のNVIC割り込みコントローラは任意個の割り込み源を持つ。このマクロは、
67  * 最大の割り込み番号の値を表す。
68  */
69 #define TMAX_INTNO   (16 + 34)                  // LPC1768の最大割り込み番号は16+32
70
71 /**
72  * \brief 割込み優先度のビット幅
73  * \details
74  * CORTEX-M3のNVIC割り込みコントローラはSoC実装者の判断で最大8bitの割り込み優先値を
75  * 持つことができる。TBITW_IPRIは、その優先値を表すフィールドの幅を示す。フィールド幅は
76  * SoC設計者が決める。通常はユーザーズマニュアルなどに書いてある。
77  *
78  * LPC17xxでは5bitである。
79  */
80 #define TBITW_IPRI     5                                        // LPC1768      の優先度は32順位5bit
81
82 /**
83  * \brief 割込み優先度ビット幅中のサブ優先度のビット幅
84  * \details
85  * サブ優先度はAIRCRレジスタで指定できる。無指定の場合、0ビットが使われる。
86  */
87 #define TBITW_SUBIPRI  0
88
89 /**
90  *  \brief 割込みベクタ番号定義
91  *  \details
92  *  NXP提供のCMSIS LPC17xx.hで宣言されているXXXX_IRQnに以下のスクリプトを適応して生成した。irqsは、宣言を格納したファイル名である。
93  *  \code
94  *  sed -e "s/  //" < irqs | sed -e "s/_.*$//" | awk '{print("#define IRQ_VECTOR_"$1"\t\t(16+"$1"_IRQn)")}' -
95  *  \endcode
96  *  XXX_IRQnはCMSISの定義により、NVICの割り込み番号である。これはCORTEX-M3の例外番号から16を引いたものである。TOPPERS/ASPのCORTEX-M3実装では
97  *  IRQ_VECTOR_XXXXを例外番号として宣言している。つまりXXX_IRQnに16を足す。
98  */
99 #define IRQ_VECTOR_WDT          (16+WDT_IRQn)
100 #define IRQ_VECTOR_TIMER0               (16+TIMER0_IRQn)
101 #define IRQ_VECTOR_TIMER1               (16+TIMER1_IRQn)
102 #define IRQ_VECTOR_TIMER2               (16+TIMER2_IRQn)
103 #define IRQ_VECTOR_TIMER3               (16+TIMER3_IRQn)
104 #define IRQ_VECTOR_UART0                (16+UART0_IRQn)
105 #define IRQ_VECTOR_UART1                (16+UART1_IRQn)
106 #define IRQ_VECTOR_UART2                (16+UART2_IRQn)
107 #define IRQ_VECTOR_UART3                (16+UART3_IRQn)
108 #define IRQ_VECTOR_PWM1         (16+PWM1_IRQn)
109 #define IRQ_VECTOR_I2C0         (16+I2C0_IRQn)
110 #define IRQ_VECTOR_I2C1         (16+I2C1_IRQn)
111 #define IRQ_VECTOR_I2C2         (16+I2C2_IRQn)
112 #define IRQ_VECTOR_SPI          (16+SPI_IRQn)
113 #define IRQ_VECTOR_SSP0         (16+SSP0_IRQn)
114 #define IRQ_VECTOR_SSP1         (16+SSP1_IRQn)
115 #define IRQ_VECTOR_PLL0         (16+PLL0_IRQn)
116 #define IRQ_VECTOR_RTC          (16+RTC_IRQn)
117 #define IRQ_VECTOR_EINT0                (16+EINT0_IRQn)
118 #define IRQ_VECTOR_EINT1                (16+EINT1_IRQn)
119 #define IRQ_VECTOR_EINT2                (16+EINT2_IRQn)
120 #define IRQ_VECTOR_EINT3                (16+EINT3_IRQn)
121 #define IRQ_VECTOR_ADC          (16+ADC_IRQn)
122 #define IRQ_VECTOR_BOD          (16+BOD_IRQn)
123 #define IRQ_VECTOR_USB          (16+USB_IRQn)
124 #define IRQ_VECTOR_CAN          (16+CAN_IRQn)
125 #define IRQ_VECTOR_DMA          (16+DMA_IRQn)
126 #define IRQ_VECTOR_I2S          (16+I2S_IRQn)
127 #define IRQ_VECTOR_ENET         (16+ENET_IRQn)
128 #define IRQ_VECTOR_RIT          (16+RIT_IRQn)
129 #define IRQ_VECTOR_MCPWM                (16+MCPWM_IRQn)
130 #define IRQ_VECTOR_QEI          (16+QEI_IRQn)
131 #define IRQ_VECTOR_PLL1         (16+PLL1_IRQn)
132 #define IRQ_VECTOR_USBActivity          (16+USBActivity_IRQn)
133 #define IRQ_VECTOR_CANActivity          (16+CANActivity_IRQn)
134
135
136 /**
137  *  \brief 割込みハンドラ番号定義
138  *  \details
139  *  NXP提供のCMSIS LPC17xx.hで宣言されているXXXX_IRQnに以下のスクリプトを適応して生成した。irqsは、宣言を格納したファイル名である。
140  *  \code
141  *  sed -e "s/  //" < irqs | sed -e "s/_.*$//" | awk '{print("#define INHNO_"$1"\t\tIRQ_VECTOR_"$1)}' -
142  *  \endcode
143  *  XXX_IRQnはCMSISの定義により、NVICの割り込み番号である。これはCORTEX-M3の例外番号から16を引いたものである。TOPPERS/ASPのCORTEX-M3実装では
144  *  INHNO_XXXXを例外番号として宣言している。つまりIRQ_VECTOR_XXXと同じ値である
145  */
146
147 #define INHNO_WDT               IRQ_VECTOR_WDT
148 #define INHNO_TIMER0            IRQ_VECTOR_TIMER0
149 #define INHNO_TIMER1            IRQ_VECTOR_TIMER1
150 #define INHNO_TIMER2            IRQ_VECTOR_TIMER2
151 #define INHNO_TIMER3            IRQ_VECTOR_TIMER3
152 #define INHNO_UART0             IRQ_VECTOR_UART0
153 #define INHNO_UART1             IRQ_VECTOR_UART1
154 #define INHNO_UART2             IRQ_VECTOR_UART2
155 #define INHNO_UART3             IRQ_VECTOR_UART3
156 #define INHNO_PWM1              IRQ_VECTOR_PWM1
157 #define INHNO_I2C0              IRQ_VECTOR_I2C0
158 #define INHNO_I2C1              IRQ_VECTOR_I2C1
159 #define INHNO_I2C2              IRQ_VECTOR_I2C2
160 #define INHNO_SPI               IRQ_VECTOR_SPI
161 #define INHNO_SSP0              IRQ_VECTOR_SSP0
162 #define INHNO_SSP1              IRQ_VECTOR_SSP1
163 #define INHNO_PLL0              IRQ_VECTOR_PLL0
164 #define INHNO_RTC               IRQ_VECTOR_RTC
165 #define INHNO_EINT0             IRQ_VECTOR_EINT0
166 #define INHNO_EINT1             IRQ_VECTOR_EINT1
167 #define INHNO_EINT2             IRQ_VECTOR_EINT2
168 #define INHNO_EINT3             IRQ_VECTOR_EINT3
169 #define INHNO_ADC               IRQ_VECTOR_ADC
170 #define INHNO_BOD               IRQ_VECTOR_BOD
171 #define INHNO_USB               IRQ_VECTOR_USB
172 #define INHNO_CAN               IRQ_VECTOR_CAN
173 #define INHNO_DMA               IRQ_VECTOR_DMA
174 #define INHNO_I2S               IRQ_VECTOR_I2S
175 #define INHNO_ENET              IRQ_VECTOR_ENET
176 #define INHNO_RIT               IRQ_VECTOR_RIT
177 #define INHNO_MCPWM             IRQ_VECTOR_MCPWM
178 #define INHNO_QEI               IRQ_VECTOR_QEI
179 #define INHNO_PLL1              IRQ_VECTOR_PLL1
180 #define INHNO_USBActivity               IRQ_VECTOR_USBActivity
181 #define INHNO_CANActivity               IRQ_VECTOR_CANActivity
182
183 /**
184  *  \brief TOPPERS/ASP割込み番号定義
185  *  \details
186  *  NXP提供のCMSIS LPC17xx.hで宣言されているXXXX_IRQnに以下のスクリプトを適応して生成した。irqsは、宣言を格納したファイル名である。
187  *  \code
188  *  sed -e "s/  //" < irqs | sed -e "s/_.*$//" | awk '{print("#define INTNO_"$1"\t\tIRQ_VECTOR_"$1)}' -
189  *  \endcode
190  *  XXX_IRQnはCMSISの定義により、NVICの割り込み番号である。これはCORTEX-M3の例外番号から16を引いたものである。TOPPERS/ASPのCORTEX-M3実装では
191  *  INTNO_XXXXを例外番号として宣言している。つまりIRQ_VECTOR_XXXと同じ値である
192  */
193 #define INTNO_WDT               IRQ_VECTOR_WDT
194 #define INTNO_TIMER0            IRQ_VECTOR_TIMER0
195 #define INTNO_TIMER1            IRQ_VECTOR_TIMER1
196 #define INTNO_TIMER2            IRQ_VECTOR_TIMER2
197 #define INTNO_TIMER3            IRQ_VECTOR_TIMER3
198 #define INTNO_UART0             IRQ_VECTOR_UART0
199 #define INTNO_UART1             IRQ_VECTOR_UART1
200 #define INTNO_UART2             IRQ_VECTOR_UART2
201 #define INTNO_UART3             IRQ_VECTOR_UART3
202 #define INTNO_PWM1              IRQ_VECTOR_PWM1
203 #define INTNO_I2C0              IRQ_VECTOR_I2C0
204 #define INTNO_I2C1              IRQ_VECTOR_I2C1
205 #define INTNO_I2C2              IRQ_VECTOR_I2C2
206 #define INTNO_SPI               IRQ_VECTOR_SPI
207 #define INTNO_SSP0              IRQ_VECTOR_SSP0
208 #define INTNO_SSP1              IRQ_VECTOR_SSP1
209 #define INTNO_PLL0              IRQ_VECTOR_PLL0
210 #define INTNO_RTC               IRQ_VECTOR_RTC
211 #define INTNO_EINT0             IRQ_VECTOR_EINT0
212 #define INTNO_EINT1             IRQ_VECTOR_EINT1
213 #define INTNO_EINT2             IRQ_VECTOR_EINT2
214 #define INTNO_EINT3             IRQ_VECTOR_EINT3
215 #define INTNO_ADC               IRQ_VECTOR_ADC
216 #define INTNO_BOD               IRQ_VECTOR_BOD
217 #define INTNO_USB               IRQ_VECTOR_USB
218 #define INTNO_CAN               IRQ_VECTOR_CAN
219 #define INTNO_DMA               IRQ_VECTOR_DMA
220 #define INTNO_I2S               IRQ_VECTOR_I2S
221 #define INTNO_ENET              IRQ_VECTOR_ENET
222 #define INTNO_RIT               IRQ_VECTOR_RIT
223 #define INTNO_MCPWM             IRQ_VECTOR_MCPWM
224 #define INTNO_QEI               IRQ_VECTOR_QEI
225 #define INTNO_PLL1              IRQ_VECTOR_PLL1
226 #define INTNO_USBActivity               IRQ_VECTOR_USBActivity
227 #define INTNO_CANActivity               IRQ_VECTOR_CANActivity
228
229 #ifndef TOPPERS_MACRO_ONLY
230
231 #endif /* TOPPERS_MACRO_ONLY */
232 #endif /* TOPPERS_CHIP_LPC17XX_H */
233
234 /**
235  * \}
236  */