3 * Toyohashi Open Platform for Embedded Real-Time Systems/
4 * Just Standard Profile Kernel
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/
13 * 上記著作権者は,Free Software Foundation によって公表されている
14 * GNU General Public License の Version 2 に記述されている条件か,以
15 * 下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェア(本ソフトウェ
16 * アを改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
18 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
19 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
21 * (2) 本ソフトウェアを再利用可能なバイナリコード(リロケータブルオブ
22 * ジェクトファイルやライブラリなど)の形で利用する場合には,利用
23 * に伴うドキュメント(利用者マニュアルなど)に,上記の著作権表示,
24 * この利用条件および下記の無保証規定を掲載すること.
25 * (3) 本ソフトウェアを再利用不可能なバイナリコードの形または機器に組
26 * み込んだ形で利用する場合には,次のいずれかの条件を満たすこと.
27 * (a) 利用に伴うドキュメント(利用者マニュアルなど)に,上記の著作
28 * 権表示,この利用条件および下記の無保証規定を掲載すること.
29 * (b) 利用の形態を,別に定める方法によって,上記著作権者に報告する
31 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者は,
35 * 本ソフトウェアに関して,その適用可能性も含めて,いかなる保証も行わ
36 * ない.また,本ソフトウェアの利用により直接的または間接的に生じたい
37 * かなる損害に関しても,その責任を負わない.
42 * \ingroup TOPPERS_ASP
43 * \defgroup TOPPERS_CHIP LPC17XX チップ依存部
48 * \details NXP LPC1700シリーズのハードウェア宣言
50 #ifndef TOPPERS_CHIP_LPC1700_H
51 #define TOPPERS_CHIP_LPC1700_H
56 * CORTEX-M3 CPUの依存部のインクルード
58 #include "arm_m_gcc/arm_m.h"
59 #ifndef TOPPERS_MACRO_ONLY
66 * CORTEX-M3のNVIC割り込みコントローラは任意個の割り込み源を持つ。このマクロは、
69 #define TMAX_INTNO (16 + 34) // LPC1768の最大割り込み番号は16+32
74 * CORTEX-M3のNVIC割り込みコントローラはSoC実装者の判断で最大8bitの割り込み優先値を
75 * 持つことができる。TBITW_IPRIは、その優先値を表すフィールドの幅を示す。フィールド幅は
76 * SoC設計者が決める。通常はユーザーズマニュアルなどに書いてある。
80 #define TBITW_IPRI 5 // LPC1768 の優先度は32順位5bit
83 * \brief 割込み優先度ビット幅中のサブ優先度のビット幅
85 * サブ優先度はAIRCRレジスタで指定できる。無指定の場合、0ビットが使われる。
87 #define TBITW_SUBIPRI 0
92 * NXP提供のCMSIS LPC17xx.hで宣言されているXXXX_IRQnに以下のスクリプトを適応して生成した。irqsは、宣言を格納したファイル名である。
94 * sed -e "s/ //" < irqs | sed -e "s/_.*$//" | awk '{print("#define IRQ_VECTOR_"$1"\t\t(16+"$1"_IRQn)")}' -
96 * XXX_IRQnはCMSISの定義により、NVICの割り込み番号である。これはCORTEX-M3の例外番号から16を引いたものである。TOPPERS/ASPのCORTEX-M3実装では
97 * IRQ_VECTOR_XXXXを例外番号として宣言している。つまりXXX_IRQnに16を足す。
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)
139 * NXP提供のCMSIS LPC17xx.hで宣言されているXXXX_IRQnに以下のスクリプトを適応して生成した。irqsは、宣言を格納したファイル名である。
141 * sed -e "s/ //" < irqs | sed -e "s/_.*$//" | awk '{print("#define INHNO_"$1"\t\tIRQ_VECTOR_"$1)}' -
143 * XXX_IRQnはCMSISの定義により、NVICの割り込み番号である。これはCORTEX-M3の例外番号から16を引いたものである。TOPPERS/ASPのCORTEX-M3実装では
144 * INHNO_XXXXを例外番号として宣言している。つまりIRQ_VECTOR_XXXと同じ値である
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
184 * \brief TOPPERS/ASP割込み番号定義
186 * NXP提供のCMSIS LPC17xx.hで宣言されているXXXX_IRQnに以下のスクリプトを適応して生成した。irqsは、宣言を格納したファイル名である。
188 * sed -e "s/ //" < irqs | sed -e "s/_.*$//" | awk '{print("#define INTNO_"$1"\t\tIRQ_VECTOR_"$1)}' -
190 * XXX_IRQnはCMSISの定義により、NVICの割り込み番号である。これはCORTEX-M3の例外番号から16を引いたものである。TOPPERS/ASPのCORTEX-M3実装では
191 * INTNO_XXXXを例外番号として宣言している。つまりIRQ_VECTOR_XXXと同じ値である
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
229 #ifndef TOPPERS_MACRO_ONLY
231 #endif /* TOPPERS_MACRO_ONLY */
232 #endif /* TOPPERS_CHIP_LPC17XX_H */