SPIKE-RT C API Reference [Japanese]
An RTOS-based software platform for LEGO® Education SPIKE™.
pybricks.h
1/*
2 * SPDX-License-Identifier: MIT
3 *
4 * Header for Pybricks Task.
5 *
6 * Copyright (c) 2022 Embedded and Real-Time Systems Laboratory,
7 * Graduate School of Information Science, Nagoya Univ., JAPAN
8 */
9
10#include <kernel.h>
11
12/*
13 * Macro definitions
14 */
15#ifndef TOPPERS_USE_QEMU
16#define PYBRICKS_TASK_ATR TA_ACT
17#else
18#define PYBRICKS_TASK_ATR TA_NULL
19#endif
20
21#define PYBRICKS_PRIORITY 4 /* タスクの優先度 */
22
23#define PYBRICKS_STACK_SIZE 0x2000 /* タスクのスタックサイズ 8KB */
24
25#define INHNO_DMA1_STREAM3 (DMA1_Stream3_IRQn + 16) /* 割込みハンドラ番号 */
26#define INTNO_DMA1_STREAM3 (DMA1_Stream3_IRQn + 16) /* 割込み番号 */
27#define INTPRI_DMA1_STREAM3 (TMIN_INTPRI + 5) /* 割込み優先度 */
28#define INTATR_DMA1_STREAM3 TA_NULL /* 割込み属性 */
29
30#define INHNO_DMA1_STREAM4 (DMA1_Stream4_IRQn + 16) /* 割込みハンドラ番号 */
31#define INTNO_DMA1_STREAM4 (DMA1_Stream4_IRQn + 16) /* 割込み番号 */
32#define INTPRI_DMA1_STREAM4 (TMIN_INTPRI + 5) /* 割込み優先度 */
33#define INTATR_DMA1_STREAM4 TA_NULL /* 割込み属性 */
34
35#define INHNO_DMA1_STREAM5 (DMA1_Stream5_IRQn + 16) /* 割込みハンドラ番号 */
36#define INTNO_DMA1_STREAM5 (DMA1_Stream5_IRQn + 16) /* 割込み番号 */
37#define INTPRI_DMA1_STREAM5 (TMIN_INTPRI + 4) /* 割込み優先度 */
38#define INTATR_DMA1_STREAM5 TA_NULL /* 割込み属性 */
39
40#define INHNO_DMA1_STREAM6 (DMA1_Stream6_IRQn + 16) /* 割込みハンドラ番号 */
41#define INTNO_DMA1_STREAM6 (DMA1_Stream6_IRQn + 16) /* 割込み番号 */
42#define INTPRI_DMA1_STREAM6 (TMIN_INTPRI + 1) /* 割込み優先度 */
43#define INTATR_DMA1_STREAM6 TA_NULL /* 割込み属性 */
44
45#define INHNO_DMA1_STREAM7 (DMA1_Stream7_IRQn + 16) /* 割込みハンドラ番号 */
46#define INTNO_DMA1_STREAM7 (DMA1_Stream7_IRQn + 16) /* 割込み番号 */
47#define INTPRI_DMA1_STREAM7 (TMIN_INTPRI + 1) /* 割込み優先度 */
48#define INTATR_DMA1_STREAM7 TA_NULL /* 割込み属性 */
49
50#define INHNO_DMA2_STREAM0 (DMA2_Stream0_IRQn + 16) /* 割込みハンドラ番号 */
51#define INTNO_DMA2_STREAM0 (DMA2_Stream0_IRQn + 16) /* 割込み番号 */
52#define INTPRI_DMA2_STREAM0 (TMIN_INTPRI + 7) /* 割込み優先度 */
53#define INTATR_DMA2_STREAM0 TA_NULL /* 割込み属性 */
54
55#define INHNO_DMA2_STREAM2 (DMA2_Stream2_IRQn + 16) /* 割込みハンドラ番号 */
56#define INTNO_DMA2_STREAM2 (DMA2_Stream2_IRQn + 16) /* 割込み番号 */
57#define INTPRI_DMA2_STREAM2 (TMIN_INTPRI + 7) /* 割込み優先度 */
58#define INTATR_DMA2_STREAM2 TA_NULL /* 割込み属性 */
59
60#define INHNO_DMA2_STREAM3 (DMA2_Stream3_IRQn + 16) /* 割込みハンドラ番号 */
61#define INTNO_DMA2_STREAM3 (DMA2_Stream3_IRQn + 16) /* 割込み番号 */
62#define INTPRI_DMA2_STREAM3 (TMIN_INTPRI + 7) /* 割込み優先度 */
63#define INTATR_DMA2_STREAM3 TA_NULL /* 割込み属性 */
64
65#define INHNO_USART2 (USART2_IRQn + 16) /* 割込みハンドラ番号 */
66#define INTNO_USART2 (USART2_IRQn + 16) /* 割込み番号 */
67#define INTPRI_USART2 (TMIN_INTPRI + 1) /* 割込み優先度 */
68#define INTATR_USART2 TA_NULL /* 割込み属性 */
69
70#define INHNO_UART4 (UART4_IRQn + 16) /* 割込みハンドラ番号 */
71#define INTNO_UART4 (UART4_IRQn + 16) /* 割込み番号 */
72#define INTPRI_UART4 (TMIN_INTPRI + 0) /* 割込み優先度 */
73#define INTATR_UART4 TA_NULL /* 割込み属性 */
74
75#define INHNO_UART5 (UART5_IRQn + 16) /* 割込みハンドラ番号 */
76#define INTNO_UART5 (UART5_IRQn + 16) /* 割込み番号 */
77#define INTPRI_UART5 (TMIN_INTPRI + 0) /* 割込み優先度 */
78#define INTATR_UART5 TA_NULL /* 割込み属性 */
79
80#define INHNO_UART7 (UART7_IRQn + 16) /* 割込みハンドラ番号 */
81#define INTNO_UART7 (UART7_IRQn + 16) /* 割込み番号 */
82#define INTPRI_UART7 (TMIN_INTPRI + 0) /* 割込み優先度 */
83#define INTATR_UART7 TA_NULL /* 割込み属性 */
84
85#define INHNO_UART8 (UART8_IRQn + 16) /* 割込みハンドラ番号 */
86#define INTNO_UART8 (UART8_IRQn + 16) /* 割込み番号 */
87#define INTPRI_UART8 (TMIN_INTPRI + 0) /* 割込み優先度 */
88#define INTATR_UART8 TA_NULL /* 割込み属性 */
89
90#define INHNO_UART9 (UART9_IRQn + 16) /* 割込みハンドラ番号 */
91#define INTNO_UART9 (UART9_IRQn + 16) /* 割込み番号 */
92#define INTPRI_UART9 (TMIN_INTPRI + 0) /* 割込み優先度 */
93#define INTATR_UART9 TA_NULL /* 割込み属性 */
94
95#define INHNO_UART10 (UART10_IRQn + 16) /* 割込みハンドラ番号 */
96#define INTNO_UART10 (UART10_IRQn + 16) /* 割込み番号 */
97#define INTPRI_UART10 (TMIN_INTPRI + 0) /* 割込み優先度 */
98#define INTATR_UART10 TA_NULL /* 割込み属性 */
99
100#define INHNO_SPI1 (SPI1_IRQn + 16) /* 割込みハンドラ番号 */
101#define INTNO_SPI1 (SPI1_IRQn + 16) /* 割込み番号 */
102#define INTPRI_SPI1 (TMIN_INTPRI + 7) /* 割込み優先度 */
103#define INTATR_SPI1 TA_NULL /* 割込み属性 */
104
105#define INHNO_SPI2 (SPI2_IRQn + 16) /* 割込みハンドラ番号 */
106#define INTNO_SPI2 (SPI2_IRQn + 16) /* 割込み番号 */
107#define INTPRI_SPI2 (TMIN_INTPRI + 6) /* 割込み優先度 */
108#define INTATR_SPI2 TA_NULL /* 割込み属性 */
109
110#define INHNO_OTG_FS (OTG_FS_IRQn + 16) /* 割込みハンドラ番号 */
111#define INTNO_OTG_FS (OTG_FS_IRQn + 16) /* 割込み番号 */
112#define INTPRI_OTG_FS (TMIN_INTPRI + 6) /* 割込み優先度 */
113#define INTATR_OTG_FS TA_NULL /* 割込み属性 */
114
115#define INHNO_I2C2_ER (I2C2_ER_IRQn + 16) /* 割込みハンドラ番号 */
116#define INTNO_I2C2_ER (I2C2_ER_IRQn + 16) /* 割込み番号 */
117#define INTPRI_I2C2_ER (TMIN_INTPRI + 3) /* 割込み優先度 */
118#define INTATR_I2C2_ER TA_NULL /* 割込み属性 */
119
120#define INHNO_I2C2_EV (I2C2_EV_IRQn + 16) /* 割込みハンドラ番号 */
121#define INTNO_I2C2_EV (I2C2_EV_IRQn + 16) /* 割込み番号 */
122#define INTPRI_I2C2_EV (TMIN_INTPRI + 3) /* 割込み優先度 */
123#define INTATR_I2C2_EV TA_NULL /* 割込み属性 */
124
125#define INHNO_EXTI9_5 (EXTI9_5_IRQn + 16) /* 割込みハンドラ番号 */
126#define INTNO_EXTI9_5 (EXTI9_5_IRQn + 16) /* 割込み番号 */
127#define INTPRI_EXTI9_5 (TMIN_INTPRI + 6) /* 割込み優先度 */
128#define INTATR_EXTI9_5 TA_NULL /* 割込み属性 */
129
130
131/*
132 * Prototype declarations
133 */
134#ifndef TOPPERS_MACRO_ONLY
135
136extern void pb_main_task(intptr_t exinf);
137extern void pbdrv_timer_handler(void);
138
139#endif /* TOPPERS_MACRO_ONLY */