Browse Source

Added an LED blinking example

Based on ChibiOS's RT-STM32F103RB-NUCLEO64 example, reconfigured for the
STM32F103C8_MINIMAL board and organized the way I like to organize my
ChibiOS projects.
Clara Hobbs 7 years ago
parent
commit
a90daee407
7 changed files with 1437 additions and 1 deletions
  1. 3
    0
      .gitignore
  2. 218
    0
      Makefile
  3. 5
    1
      README.md
  4. 520
    0
      chconf.h
  5. 388
    0
      halconf.h
  6. 214
    0
      mcuconf.h
  7. 89
    0
      src/main.c

+ 3
- 0
.gitignore View File

@@ -32,3 +32,6 @@
32 32
 # Debug files
33 33
 *.dSYM/
34 34
 
35
+# ChibiOS build
36
+.dep/
37
+build/

+ 218
- 0
Makefile View File

@@ -0,0 +1,218 @@
1
+##############################################################################
2
+# Build global options
3
+# NOTE: Can be overridden externally.
4
+#
5
+
6
+# Compiler options here.
7
+ifeq ($(USE_OPT),)
8
+  USE_OPT = -O2 -ggdb -fomit-frame-pointer -falign-functions=16
9
+endif
10
+
11
+# C specific options here (added to USE_OPT).
12
+ifeq ($(USE_COPT),)
13
+  USE_COPT = 
14
+endif
15
+
16
+# C++ specific options here (added to USE_OPT).
17
+ifeq ($(USE_CPPOPT),)
18
+  USE_CPPOPT = -fno-rtti
19
+endif
20
+
21
+# Enable this if you want the linker to remove unused code and data
22
+ifeq ($(USE_LINK_GC),)
23
+  USE_LINK_GC = yes
24
+endif
25
+
26
+# Linker extra options here.
27
+ifeq ($(USE_LDOPT),)
28
+  USE_LDOPT = 
29
+endif
30
+
31
+# Enable this if you want link time optimizations (LTO)
32
+ifeq ($(USE_LTO),)
33
+  USE_LTO = yes
34
+endif
35
+
36
+# If enabled, this option allows to compile the application in THUMB mode.
37
+ifeq ($(USE_THUMB),)
38
+  USE_THUMB = yes
39
+endif
40
+
41
+# Enable this if you want to see the full log while compiling.
42
+ifeq ($(USE_VERBOSE_COMPILE),)
43
+  USE_VERBOSE_COMPILE = no
44
+endif
45
+
46
+# If enabled, this option makes the build process faster by not compiling
47
+# modules not used in the current configuration.
48
+ifeq ($(USE_SMART_BUILD),)
49
+  USE_SMART_BUILD = yes
50
+endif
51
+
52
+#
53
+# Build global options
54
+##############################################################################
55
+
56
+##############################################################################
57
+# Architecture or project specific options
58
+#
59
+
60
+# Stack size to be allocated to the Cortex-M process stack. This stack is
61
+# the stack used by the main() thread.
62
+ifeq ($(USE_PROCESS_STACKSIZE),)
63
+  USE_PROCESS_STACKSIZE = 0x400
64
+endif
65
+
66
+# Stack size to the allocated to the Cortex-M main/exceptions stack. This
67
+# stack is used for processing interrupts and exceptions.
68
+ifeq ($(USE_EXCEPTIONS_STACKSIZE),)
69
+  USE_EXCEPTIONS_STACKSIZE = 0x400
70
+endif
71
+
72
+# Enables the use of FPU (no, softfp, hard).
73
+ifeq ($(USE_FPU),)
74
+  USE_FPU = no
75
+endif
76
+
77
+#
78
+# Architecture or project specific options
79
+##############################################################################
80
+
81
+##############################################################################
82
+# Project, sources and paths
83
+#
84
+
85
+# Define project name here
86
+PROJECT = remote-control-translator-firmware
87
+
88
+# Imported source files and paths
89
+CHIBIOS = ChibiOS
90
+# Startup files.
91
+include $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk/startup_stm32f1xx.mk
92
+# HAL-OSAL files (optional).
93
+include $(CHIBIOS)/os/hal/hal.mk
94
+include $(CHIBIOS)/os/hal/ports/STM32/STM32F1xx/platform.mk
95
+include $(CHIBIOS)/os/hal/boards/STM32F103C8_MINIMAL/board.mk
96
+include $(CHIBIOS)/os/hal/osal/rt/osal.mk
97
+# RTOS files (optional).
98
+include $(CHIBIOS)/os/rt/rt.mk
99
+include $(CHIBIOS)/os/common/ports/ARMCMx/compilers/GCC/mk/port_v7m.mk
100
+# Other files (optional).
101
+include $(CHIBIOS)/test/rt/test.mk
102
+
103
+# Define linker script file here
104
+LDSCRIPT= $(STARTUPLD)/STM32F103xB.ld
105
+
106
+# C sources that can be compiled in ARM or THUMB mode depending on the global
107
+# setting.
108
+CSRC = $(STARTUPSRC) \
109
+       $(KERNSRC) \
110
+       $(PORTSRC) \
111
+       $(OSALSRC) \
112
+       $(HALSRC) \
113
+       $(PLATFORMSRC) \
114
+       $(BOARDSRC) \
115
+       $(TESTSRC) \
116
+       $(wildcard src/*.c)
117
+
118
+# C++ sources that can be compiled in ARM or THUMB mode depending on the global
119
+# setting.
120
+CPPSRC =
121
+
122
+# C sources to be compiled in ARM mode regardless of the global setting.
123
+# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
124
+#       option that results in lower performance and larger code size.
125
+ACSRC =
126
+
127
+# C++ sources to be compiled in ARM mode regardless of the global setting.
128
+# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
129
+#       option that results in lower performance and larger code size.
130
+ACPPSRC =
131
+
132
+# C sources to be compiled in THUMB mode regardless of the global setting.
133
+# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
134
+#       option that results in lower performance and larger code size.
135
+TCSRC =
136
+
137
+# C sources to be compiled in THUMB mode regardless of the global setting.
138
+# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler
139
+#       option that results in lower performance and larger code size.
140
+TCPPSRC =
141
+
142
+# List ASM source files here
143
+ASMSRC =
144
+ASMXSRC = $(STARTUPASM) $(PORTASM) $(OSALASM)
145
+
146
+INCDIR = $(CHIBIOS)/os/license \
147
+         $(STARTUPINC) $(KERNINC) $(PORTINC) $(OSALINC) \
148
+         $(HALINC) $(PLATFORMINC) $(BOARDINC) $(TESTINC) \
149
+         $(CHIBIOS)/os/various
150
+
151
+#
152
+# Project, sources and paths
153
+##############################################################################
154
+
155
+##############################################################################
156
+# Compiler settings
157
+#
158
+
159
+MCU  = cortex-m3
160
+
161
+#TRGT = arm-elf-
162
+TRGT = arm-none-eabi-
163
+CC   = $(TRGT)gcc
164
+CPPC = $(TRGT)g++
165
+# Enable loading with g++ only if you need C++ runtime support.
166
+# NOTE: You can use C++ even without C++ support if you are careful. C++
167
+#       runtime support makes code size explode.
168
+LD   = $(TRGT)gcc
169
+#LD   = $(TRGT)g++
170
+CP   = $(TRGT)objcopy
171
+AS   = $(TRGT)gcc -x assembler-with-cpp
172
+AR   = $(TRGT)ar
173
+OD   = $(TRGT)objdump
174
+SZ   = $(TRGT)size
175
+HEX  = $(CP) -O ihex
176
+BIN  = $(CP) -O binary
177
+
178
+# ARM-specific options here
179
+AOPT =
180
+
181
+# THUMB-specific options here
182
+TOPT = -mthumb -DTHUMB
183
+
184
+# Define C warning options here
185
+CWARN = -Wall -Wextra -Wundef -Wstrict-prototypes
186
+
187
+# Define C++ warning options here
188
+CPPWARN = -Wall -Wextra -Wundef
189
+
190
+#
191
+# Compiler settings
192
+##############################################################################
193
+
194
+##############################################################################
195
+# Start of user section
196
+#
197
+
198
+# List all user C define here, like -D_DEBUG=1
199
+UDEFS =
200
+
201
+# Define ASM defines here
202
+UADEFS =
203
+
204
+# List all user directories here
205
+UINCDIR =
206
+
207
+# List the user directory to look for the libraries here
208
+ULIBDIR =
209
+
210
+# List all user libraries here
211
+ULIBS =
212
+
213
+#
214
+# End of user defines
215
+##############################################################################
216
+
217
+RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC
218
+include $(RULESPATH)/rules.mk

+ 5
- 1
README.md View File

@@ -1,3 +1,7 @@
1 1
 # remote-control-translator-firmware
2 2
 
3
-Firmware for the remote control translator
3
+Firmware for the remote control translator
4
+
5
+## Flashing
6
+
7
+    openocd -f interface/stlink-v2.cfg -f target/stm32f1x.cfg -c "adapter_khz 4000; program build/remote-control-translator-firmware.elf verify reset exit"

+ 520
- 0
chconf.h View File

@@ -0,0 +1,520 @@
1
+/*
2
+    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
3
+
4
+    Licensed under the Apache License, Version 2.0 (the "License");
5
+    you may not use this file except in compliance with the License.
6
+    You may obtain a copy of the License at
7
+
8
+        http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+    Unless required by applicable law or agreed to in writing, software
11
+    distributed under the License is distributed on an "AS IS" BASIS,
12
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+    See the License for the specific language governing permissions and
14
+    limitations under the License.
15
+*/
16
+
17
+/**
18
+ * @file    templates/chconf.h
19
+ * @brief   Configuration file template.
20
+ * @details A copy of this file must be placed in each project directory, it
21
+ *          contains the application specific kernel settings.
22
+ *
23
+ * @addtogroup config
24
+ * @details Kernel related settings and hooks.
25
+ * @{
26
+ */
27
+
28
+#ifndef CHCONF_H
29
+#define CHCONF_H
30
+
31
+#define _CHIBIOS_RT_CONF_
32
+
33
+/*===========================================================================*/
34
+/**
35
+ * @name System timers settings
36
+ * @{
37
+ */
38
+/*===========================================================================*/
39
+
40
+/**
41
+ * @brief   System time counter resolution.
42
+ * @note    Allowed values are 16 or 32 bits.
43
+ */
44
+#define CH_CFG_ST_RESOLUTION                16
45
+
46
+/**
47
+ * @brief   System tick frequency.
48
+ * @details Frequency of the system timer that drives the system ticks. This
49
+ *          setting also defines the system tick time unit.
50
+ */
51
+#define CH_CFG_ST_FREQUENCY                 2000
52
+
53
+/**
54
+ * @brief   Time delta constant for the tick-less mode.
55
+ * @note    If this value is zero then the system uses the classic
56
+ *          periodic tick. This value represents the minimum number
57
+ *          of ticks that is safe to specify in a timeout directive.
58
+ *          The value one is not valid, timeouts are rounded up to
59
+ *          this value.
60
+ */
61
+#define CH_CFG_ST_TIMEDELTA                 2
62
+
63
+/** @} */
64
+
65
+/*===========================================================================*/
66
+/**
67
+ * @name Kernel parameters and options
68
+ * @{
69
+ */
70
+/*===========================================================================*/
71
+
72
+/**
73
+ * @brief   Round robin interval.
74
+ * @details This constant is the number of system ticks allowed for the
75
+ *          threads before preemption occurs. Setting this value to zero
76
+ *          disables the preemption for threads with equal priority and the
77
+ *          round robin becomes cooperative. Note that higher priority
78
+ *          threads can still preempt, the kernel is always preemptive.
79
+ * @note    Disabling the round robin preemption makes the kernel more compact
80
+ *          and generally faster.
81
+ * @note    The round robin preemption is not supported in tickless mode and
82
+ *          must be set to zero in that case.
83
+ */
84
+#define CH_CFG_TIME_QUANTUM                 0
85
+
86
+/**
87
+ * @brief   Managed RAM size.
88
+ * @details Size of the RAM area to be managed by the OS. If set to zero
89
+ *          then the whole available RAM is used. The core memory is made
90
+ *          available to the heap allocator and/or can be used directly through
91
+ *          the simplified core memory allocator.
92
+ *
93
+ * @note    In order to let the OS manage the whole RAM the linker script must
94
+ *          provide the @p __heap_base__ and @p __heap_end__ symbols.
95
+ * @note    Requires @p CH_CFG_USE_MEMCORE.
96
+ */
97
+#define CH_CFG_MEMCORE_SIZE                 0
98
+
99
+/**
100
+ * @brief   Idle thread automatic spawn suppression.
101
+ * @details When this option is activated the function @p chSysInit()
102
+ *          does not spawn the idle thread. The application @p main()
103
+ *          function becomes the idle thread and must implement an
104
+ *          infinite loop.
105
+ */
106
+#define CH_CFG_NO_IDLE_THREAD               FALSE
107
+
108
+/** @} */
109
+
110
+/*===========================================================================*/
111
+/**
112
+ * @name Performance options
113
+ * @{
114
+ */
115
+/*===========================================================================*/
116
+
117
+/**
118
+ * @brief   OS optimization.
119
+ * @details If enabled then time efficient rather than space efficient code
120
+ *          is used when two possible implementations exist.
121
+ *
122
+ * @note    This is not related to the compiler optimization options.
123
+ * @note    The default is @p TRUE.
124
+ */
125
+#define CH_CFG_OPTIMIZE_SPEED               TRUE
126
+
127
+/** @} */
128
+
129
+/*===========================================================================*/
130
+/**
131
+ * @name Subsystem options
132
+ * @{
133
+ */
134
+/*===========================================================================*/
135
+
136
+/**
137
+ * @brief   Time Measurement APIs.
138
+ * @details If enabled then the time measurement APIs are included in
139
+ *          the kernel.
140
+ *
141
+ * @note    The default is @p TRUE.
142
+ */
143
+#define CH_CFG_USE_TM                       TRUE
144
+
145
+/**
146
+ * @brief   Threads registry APIs.
147
+ * @details If enabled then the registry APIs are included in the kernel.
148
+ *
149
+ * @note    The default is @p TRUE.
150
+ */
151
+#define CH_CFG_USE_REGISTRY                 TRUE
152
+
153
+/**
154
+ * @brief   Threads synchronization APIs.
155
+ * @details If enabled then the @p chThdWait() function is included in
156
+ *          the kernel.
157
+ *
158
+ * @note    The default is @p TRUE.
159
+ */
160
+#define CH_CFG_USE_WAITEXIT                 TRUE
161
+
162
+/**
163
+ * @brief   Semaphores APIs.
164
+ * @details If enabled then the Semaphores APIs are included in the kernel.
165
+ *
166
+ * @note    The default is @p TRUE.
167
+ */
168
+#define CH_CFG_USE_SEMAPHORES               TRUE
169
+
170
+/**
171
+ * @brief   Semaphores queuing mode.
172
+ * @details If enabled then the threads are enqueued on semaphores by
173
+ *          priority rather than in FIFO order.
174
+ *
175
+ * @note    The default is @p FALSE. Enable this if you have special
176
+ *          requirements.
177
+ * @note    Requires @p CH_CFG_USE_SEMAPHORES.
178
+ */
179
+#define CH_CFG_USE_SEMAPHORES_PRIORITY      FALSE
180
+
181
+/**
182
+ * @brief   Mutexes APIs.
183
+ * @details If enabled then the mutexes APIs are included in the kernel.
184
+ *
185
+ * @note    The default is @p TRUE.
186
+ */
187
+#define CH_CFG_USE_MUTEXES                  TRUE
188
+
189
+/**
190
+ * @brief   Enables recursive behavior on mutexes.
191
+ * @note    Recursive mutexes are heavier and have an increased
192
+ *          memory footprint.
193
+ *
194
+ * @note    The default is @p FALSE.
195
+ * @note    Requires @p CH_CFG_USE_MUTEXES.
196
+ */
197
+#define CH_CFG_USE_MUTEXES_RECURSIVE        FALSE
198
+
199
+/**
200
+ * @brief   Conditional Variables APIs.
201
+ * @details If enabled then the conditional variables APIs are included
202
+ *          in the kernel.
203
+ *
204
+ * @note    The default is @p TRUE.
205
+ * @note    Requires @p CH_CFG_USE_MUTEXES.
206
+ */
207
+#define CH_CFG_USE_CONDVARS                 TRUE
208
+
209
+/**
210
+ * @brief   Conditional Variables APIs with timeout.
211
+ * @details If enabled then the conditional variables APIs with timeout
212
+ *          specification are included in the kernel.
213
+ *
214
+ * @note    The default is @p TRUE.
215
+ * @note    Requires @p CH_CFG_USE_CONDVARS.
216
+ */
217
+#define CH_CFG_USE_CONDVARS_TIMEOUT         TRUE
218
+
219
+/**
220
+ * @brief   Events Flags APIs.
221
+ * @details If enabled then the event flags APIs are included in the kernel.
222
+ *
223
+ * @note    The default is @p TRUE.
224
+ */
225
+#define CH_CFG_USE_EVENTS                   TRUE
226
+
227
+/**
228
+ * @brief   Events Flags APIs with timeout.
229
+ * @details If enabled then the events APIs with timeout specification
230
+ *          are included in the kernel.
231
+ *
232
+ * @note    The default is @p TRUE.
233
+ * @note    Requires @p CH_CFG_USE_EVENTS.
234
+ */
235
+#define CH_CFG_USE_EVENTS_TIMEOUT           TRUE
236
+
237
+/**
238
+ * @brief   Synchronous Messages APIs.
239
+ * @details If enabled then the synchronous messages APIs are included
240
+ *          in the kernel.
241
+ *
242
+ * @note    The default is @p TRUE.
243
+ */
244
+#define CH_CFG_USE_MESSAGES                 TRUE
245
+
246
+/**
247
+ * @brief   Synchronous Messages queuing mode.
248
+ * @details If enabled then messages are served by priority rather than in
249
+ *          FIFO order.
250
+ *
251
+ * @note    The default is @p FALSE. Enable this if you have special
252
+ *          requirements.
253
+ * @note    Requires @p CH_CFG_USE_MESSAGES.
254
+ */
255
+#define CH_CFG_USE_MESSAGES_PRIORITY        FALSE
256
+
257
+/**
258
+ * @brief   Mailboxes APIs.
259
+ * @details If enabled then the asynchronous messages (mailboxes) APIs are
260
+ *          included in the kernel.
261
+ *
262
+ * @note    The default is @p TRUE.
263
+ * @note    Requires @p CH_CFG_USE_SEMAPHORES.
264
+ */
265
+#define CH_CFG_USE_MAILBOXES                TRUE
266
+
267
+/**
268
+ * @brief   Core Memory Manager APIs.
269
+ * @details If enabled then the core memory manager APIs are included
270
+ *          in the kernel.
271
+ *
272
+ * @note    The default is @p TRUE.
273
+ */
274
+#define CH_CFG_USE_MEMCORE                  TRUE
275
+
276
+/**
277
+ * @brief   Heap Allocator APIs.
278
+ * @details If enabled then the memory heap allocator APIs are included
279
+ *          in the kernel.
280
+ *
281
+ * @note    The default is @p TRUE.
282
+ * @note    Requires @p CH_CFG_USE_MEMCORE and either @p CH_CFG_USE_MUTEXES or
283
+ *          @p CH_CFG_USE_SEMAPHORES.
284
+ * @note    Mutexes are recommended.
285
+ */
286
+#define CH_CFG_USE_HEAP                     TRUE
287
+
288
+/**
289
+ * @brief   Memory Pools Allocator APIs.
290
+ * @details If enabled then the memory pools allocator APIs are included
291
+ *          in the kernel.
292
+ *
293
+ * @note    The default is @p TRUE.
294
+ */
295
+#define CH_CFG_USE_MEMPOOLS                 TRUE
296
+
297
+/**
298
+ * @brief   Dynamic Threads APIs.
299
+ * @details If enabled then the dynamic threads creation APIs are included
300
+ *          in the kernel.
301
+ *
302
+ * @note    The default is @p TRUE.
303
+ * @note    Requires @p CH_CFG_USE_WAITEXIT.
304
+ * @note    Requires @p CH_CFG_USE_HEAP and/or @p CH_CFG_USE_MEMPOOLS.
305
+ */
306
+#define CH_CFG_USE_DYNAMIC                  TRUE
307
+
308
+/** @} */
309
+
310
+/*===========================================================================*/
311
+/**
312
+ * @name Debug options
313
+ * @{
314
+ */
315
+/*===========================================================================*/
316
+
317
+/**
318
+ * @brief   Debug option, kernel statistics.
319
+ *
320
+ * @note    The default is @p FALSE.
321
+ */
322
+#define CH_DBG_STATISTICS                   FALSE
323
+
324
+/**
325
+ * @brief   Debug option, system state check.
326
+ * @details If enabled the correct call protocol for system APIs is checked
327
+ *          at runtime.
328
+ *
329
+ * @note    The default is @p FALSE.
330
+ */
331
+#define CH_DBG_SYSTEM_STATE_CHECK           FALSE
332
+
333
+/**
334
+ * @brief   Debug option, parameters checks.
335
+ * @details If enabled then the checks on the API functions input
336
+ *          parameters are activated.
337
+ *
338
+ * @note    The default is @p FALSE.
339
+ */
340
+#define CH_DBG_ENABLE_CHECKS                FALSE
341
+
342
+/**
343
+ * @brief   Debug option, consistency checks.
344
+ * @details If enabled then all the assertions in the kernel code are
345
+ *          activated. This includes consistency checks inside the kernel,
346
+ *          runtime anomalies and port-defined checks.
347
+ *
348
+ * @note    The default is @p FALSE.
349
+ */
350
+#define CH_DBG_ENABLE_ASSERTS               FALSE
351
+
352
+/**
353
+ * @brief   Debug option, trace buffer.
354
+ * @details If enabled then the trace buffer is activated.
355
+ *
356
+ * @note    The default is @p CH_DBG_TRACE_MASK_DISABLED.
357
+ */
358
+#define CH_DBG_TRACE_MASK                   CH_DBG_TRACE_MASK_DISABLED
359
+
360
+/**
361
+ * @brief   Trace buffer entries.
362
+ * @note    The trace buffer is only allocated if @p CH_DBG_TRACE_MASK is
363
+ *          different from @p CH_DBG_TRACE_MASK_DISABLED.
364
+ */
365
+#define CH_DBG_TRACE_BUFFER_SIZE            128
366
+
367
+/**
368
+ * @brief   Debug option, stack checks.
369
+ * @details If enabled then a runtime stack check is performed.
370
+ *
371
+ * @note    The default is @p FALSE.
372
+ * @note    The stack check is performed in a architecture/port dependent way.
373
+ *          It may not be implemented or some ports.
374
+ * @note    The default failure mode is to halt the system with the global
375
+ *          @p panic_msg variable set to @p NULL.
376
+ */
377
+#define CH_DBG_ENABLE_STACK_CHECK           FALSE
378
+
379
+/**
380
+ * @brief   Debug option, stacks initialization.
381
+ * @details If enabled then the threads working area is filled with a byte
382
+ *          value when a thread is created. This can be useful for the
383
+ *          runtime measurement of the used stack.
384
+ *
385
+ * @note    The default is @p FALSE.
386
+ */
387
+#define CH_DBG_FILL_THREADS                 FALSE
388
+
389
+/**
390
+ * @brief   Debug option, threads profiling.
391
+ * @details If enabled then a field is added to the @p thread_t structure that
392
+ *          counts the system ticks occurred while executing the thread.
393
+ *
394
+ * @note    The default is @p FALSE.
395
+ * @note    This debug option is not currently compatible with the
396
+ *          tickless mode.
397
+ */
398
+#define CH_DBG_THREADS_PROFILING            FALSE
399
+
400
+/** @} */
401
+
402
+/*===========================================================================*/
403
+/**
404
+ * @name Kernel hooks
405
+ * @{
406
+ */
407
+/*===========================================================================*/
408
+
409
+/**
410
+ * @brief   Threads descriptor structure extension.
411
+ * @details User fields added to the end of the @p thread_t structure.
412
+ */
413
+#define CH_CFG_THREAD_EXTRA_FIELDS                                          \
414
+  /* Add threads custom fields here.*/
415
+
416
+/**
417
+ * @brief   Threads initialization hook.
418
+ * @details User initialization code added to the @p chThdInit() API.
419
+ *
420
+ * @note    It is invoked from within @p chThdInit() and implicitly from all
421
+ *          the threads creation APIs.
422
+ */
423
+#define CH_CFG_THREAD_INIT_HOOK(tp) {                                       \
424
+  /* Add threads initialization code here.*/                                \
425
+}
426
+
427
+/**
428
+ * @brief   Threads finalization hook.
429
+ * @details User finalization code added to the @p chThdExit() API.
430
+ */
431
+#define CH_CFG_THREAD_EXIT_HOOK(tp) {                                       \
432
+  /* Add threads finalization code here.*/                                  \
433
+}
434
+
435
+/**
436
+ * @brief   Context switch hook.
437
+ * @details This hook is invoked just before switching between threads.
438
+ */
439
+#define CH_CFG_CONTEXT_SWITCH_HOOK(ntp, otp) {                              \
440
+  /* Context switch code here.*/                                            \
441
+}
442
+
443
+/**
444
+ * @brief   ISR enter hook.
445
+ */
446
+#define CH_CFG_IRQ_PROLOGUE_HOOK() {                                        \
447
+  /* IRQ prologue code here.*/                                              \
448
+}
449
+
450
+/**
451
+ * @brief   ISR exit hook.
452
+ */
453
+#define CH_CFG_IRQ_EPILOGUE_HOOK() {                                        \
454
+  /* IRQ epilogue code here.*/                                              \
455
+}
456
+
457
+/**
458
+ * @brief   Idle thread enter hook.
459
+ * @note    This hook is invoked within a critical zone, no OS functions
460
+ *          should be invoked from here.
461
+ * @note    This macro can be used to activate a power saving mode.
462
+ */
463
+#define CH_CFG_IDLE_ENTER_HOOK() {                                          \
464
+  /* Idle-enter code here.*/                                                \
465
+}
466
+
467
+/**
468
+ * @brief   Idle thread leave hook.
469
+ * @note    This hook is invoked within a critical zone, no OS functions
470
+ *          should be invoked from here.
471
+ * @note    This macro can be used to deactivate a power saving mode.
472
+ */
473
+#define CH_CFG_IDLE_LEAVE_HOOK() {                                          \
474
+  /* Idle-leave code here.*/                                                \
475
+}
476
+
477
+/**
478
+ * @brief   Idle Loop hook.
479
+ * @details This hook is continuously invoked by the idle thread loop.
480
+ */
481
+#define CH_CFG_IDLE_LOOP_HOOK() {                                           \
482
+  /* Idle loop code here.*/                                                 \
483
+}
484
+
485
+/**
486
+ * @brief   System tick event hook.
487
+ * @details This hook is invoked in the system tick handler immediately
488
+ *          after processing the virtual timers queue.
489
+ */
490
+#define CH_CFG_SYSTEM_TICK_HOOK() {                                         \
491
+  /* System tick event code here.*/                                         \
492
+}
493
+
494
+/**
495
+ * @brief   System halt hook.
496
+ * @details This hook is invoked in case to a system halting error before
497
+ *          the system is halted.
498
+ */
499
+#define CH_CFG_SYSTEM_HALT_HOOK(reason) {                                   \
500
+  /* System halt code here.*/                                               \
501
+}
502
+
503
+/**
504
+ * @brief   Trace hook.
505
+ * @details This hook is invoked each time a new record is written in the
506
+ *          trace buffer.
507
+ */
508
+#define CH_CFG_TRACE_HOOK(tep) {                                            \
509
+  /* Trace code here.*/                                                     \
510
+}
511
+
512
+/** @} */
513
+
514
+/*===========================================================================*/
515
+/* Port-specific settings (override port settings defaulted in chcore.h).    */
516
+/*===========================================================================*/
517
+
518
+#endif  /* CHCONF_H */
519
+
520
+/** @} */

+ 388
- 0
halconf.h View File

@@ -0,0 +1,388 @@
1
+/*
2
+    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
3
+
4
+    Licensed under the Apache License, Version 2.0 (the "License");
5
+    you may not use this file except in compliance with the License.
6
+    You may obtain a copy of the License at
7
+
8
+        http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+    Unless required by applicable law or agreed to in writing, software
11
+    distributed under the License is distributed on an "AS IS" BASIS,
12
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+    See the License for the specific language governing permissions and
14
+    limitations under the License.
15
+*/
16
+
17
+/**
18
+ * @file    templates/halconf.h
19
+ * @brief   HAL configuration header.
20
+ * @details HAL configuration file, this file allows to enable or disable the
21
+ *          various device drivers from your application. You may also use
22
+ *          this file in order to override the device drivers default settings.
23
+ *
24
+ * @addtogroup HAL_CONF
25
+ * @{
26
+ */
27
+
28
+#ifndef HALCONF_H
29
+#define HALCONF_H
30
+
31
+#include "mcuconf.h"
32
+
33
+/**
34
+ * @brief   Enables the PAL subsystem.
35
+ */
36
+#if !defined(HAL_USE_PAL) || defined(__DOXYGEN__)
37
+#define HAL_USE_PAL                 TRUE
38
+#endif
39
+
40
+/**
41
+ * @brief   Enables the ADC subsystem.
42
+ */
43
+#if !defined(HAL_USE_ADC) || defined(__DOXYGEN__)
44
+#define HAL_USE_ADC                 FALSE
45
+#endif
46
+
47
+/**
48
+ * @brief   Enables the CAN subsystem.
49
+ */
50
+#if !defined(HAL_USE_CAN) || defined(__DOXYGEN__)
51
+#define HAL_USE_CAN                 FALSE
52
+#endif
53
+
54
+/**
55
+ * @brief   Enables the DAC subsystem.
56
+ */
57
+#if !defined(HAL_USE_DAC) || defined(__DOXYGEN__)
58
+#define HAL_USE_DAC                 FALSE
59
+#endif
60
+
61
+/**
62
+ * @brief   Enables the EXT subsystem.
63
+ */
64
+#if !defined(HAL_USE_EXT) || defined(__DOXYGEN__)
65
+#define HAL_USE_EXT                 FALSE
66
+#endif
67
+
68
+/**
69
+ * @brief   Enables the GPT subsystem.
70
+ */
71
+#if !defined(HAL_USE_GPT) || defined(__DOXYGEN__)
72
+#define HAL_USE_GPT                 FALSE
73
+#endif
74
+
75
+/**
76
+ * @brief   Enables the I2C subsystem.
77
+ */
78
+#if !defined(HAL_USE_I2C) || defined(__DOXYGEN__)
79
+#define HAL_USE_I2C                 FALSE
80
+#endif
81
+
82
+/**
83
+ * @brief   Enables the I2S subsystem.
84
+ */
85
+#if !defined(HAL_USE_I2S) || defined(__DOXYGEN__)
86
+#define HAL_USE_I2S                 FALSE
87
+#endif
88
+
89
+/**
90
+ * @brief   Enables the ICU subsystem.
91
+ */
92
+#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__)
93
+#define HAL_USE_ICU                 FALSE
94
+#endif
95
+
96
+/**
97
+ * @brief   Enables the MAC subsystem.
98
+ */
99
+#if !defined(HAL_USE_MAC) || defined(__DOXYGEN__)
100
+#define HAL_USE_MAC                 FALSE
101
+#endif
102
+
103
+/**
104
+ * @brief   Enables the MMC_SPI subsystem.
105
+ */
106
+#if !defined(HAL_USE_MMC_SPI) || defined(__DOXYGEN__)
107
+#define HAL_USE_MMC_SPI             FALSE
108
+#endif
109
+
110
+/**
111
+ * @brief   Enables the PWM subsystem.
112
+ */
113
+#if !defined(HAL_USE_PWM) || defined(__DOXYGEN__)
114
+#define HAL_USE_PWM                 FALSE
115
+#endif
116
+
117
+/**
118
+ * @brief   Enables the QSPI subsystem.
119
+ */
120
+#if !defined(HAL_USE_QSPI) || defined(__DOXYGEN__)
121
+#define HAL_USE_QSPI                FALSE
122
+#endif
123
+
124
+/**
125
+ * @brief   Enables the RTC subsystem.
126
+ */
127
+#if !defined(HAL_USE_RTC) || defined(__DOXYGEN__)
128
+#define HAL_USE_RTC                 FALSE
129
+#endif
130
+
131
+/**
132
+ * @brief   Enables the SDC subsystem.
133
+ */
134
+#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__)
135
+#define HAL_USE_SDC                 FALSE
136
+#endif
137
+
138
+/**
139
+ * @brief   Enables the SERIAL subsystem.
140
+ */
141
+#if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__)
142
+#define HAL_USE_SERIAL              TRUE
143
+#endif
144
+
145
+/**
146
+ * @brief   Enables the SERIAL over USB subsystem.
147
+ */
148
+#if !defined(HAL_USE_SERIAL_USB) || defined(__DOXYGEN__)
149
+#define HAL_USE_SERIAL_USB          FALSE
150
+#endif
151
+
152
+/**
153
+ * @brief   Enables the SPI subsystem.
154
+ */
155
+#if !defined(HAL_USE_SPI) || defined(__DOXYGEN__)
156
+#define HAL_USE_SPI                 FALSE
157
+#endif
158
+
159
+/**
160
+ * @brief   Enables the UART subsystem.
161
+ */
162
+#if !defined(HAL_USE_UART) || defined(__DOXYGEN__)
163
+#define HAL_USE_UART                FALSE
164
+#endif
165
+
166
+/**
167
+ * @brief   Enables the USB subsystem.
168
+ */
169
+#if !defined(HAL_USE_USB) || defined(__DOXYGEN__)
170
+#define HAL_USE_USB                 FALSE
171
+#endif
172
+
173
+/**
174
+ * @brief   Enables the WDG subsystem.
175
+ */
176
+#if !defined(HAL_USE_WDG) || defined(__DOXYGEN__)
177
+#define HAL_USE_WDG                 FALSE
178
+#endif
179
+
180
+/*===========================================================================*/
181
+/* ADC driver related settings.                                              */
182
+/*===========================================================================*/
183
+
184
+/**
185
+ * @brief   Enables synchronous APIs.
186
+ * @note    Disabling this option saves both code and data space.
187
+ */
188
+#if !defined(ADC_USE_WAIT) || defined(__DOXYGEN__)
189
+#define ADC_USE_WAIT                TRUE
190
+#endif
191
+
192
+/**
193
+ * @brief   Enables the @p adcAcquireBus() and @p adcReleaseBus() APIs.
194
+ * @note    Disabling this option saves both code and data space.
195
+ */
196
+#if !defined(ADC_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
197
+#define ADC_USE_MUTUAL_EXCLUSION    TRUE
198
+#endif
199
+
200
+/*===========================================================================*/
201
+/* CAN driver related settings.                                              */
202
+/*===========================================================================*/
203
+
204
+/**
205
+ * @brief   Sleep mode related APIs inclusion switch.
206
+ */
207
+#if !defined(CAN_USE_SLEEP_MODE) || defined(__DOXYGEN__)
208
+#define CAN_USE_SLEEP_MODE          TRUE
209
+#endif
210
+
211
+/*===========================================================================*/
212
+/* I2C driver related settings.                                              */
213
+/*===========================================================================*/
214
+
215
+/**
216
+ * @brief   Enables the mutual exclusion APIs on the I2C bus.
217
+ */
218
+#if !defined(I2C_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
219
+#define I2C_USE_MUTUAL_EXCLUSION    TRUE
220
+#endif
221
+
222
+/*===========================================================================*/
223
+/* MAC driver related settings.                                              */
224
+/*===========================================================================*/
225
+
226
+/**
227
+ * @brief   Enables an event sources for incoming packets.
228
+ */
229
+#if !defined(MAC_USE_ZERO_COPY) || defined(__DOXYGEN__)
230
+#define MAC_USE_ZERO_COPY           FALSE
231
+#endif
232
+
233
+/**
234
+ * @brief   Enables an event sources for incoming packets.
235
+ */
236
+#if !defined(MAC_USE_EVENTS) || defined(__DOXYGEN__)
237
+#define MAC_USE_EVENTS              TRUE
238
+#endif
239
+
240
+/*===========================================================================*/
241
+/* MMC_SPI driver related settings.                                          */
242
+/*===========================================================================*/
243
+
244
+/**
245
+ * @brief   Delays insertions.
246
+ * @details If enabled this options inserts delays into the MMC waiting
247
+ *          routines releasing some extra CPU time for the threads with
248
+ *          lower priority, this may slow down the driver a bit however.
249
+ *          This option is recommended also if the SPI driver does not
250
+ *          use a DMA channel and heavily loads the CPU.
251
+ */
252
+#if !defined(MMC_NICE_WAITING) || defined(__DOXYGEN__)
253
+#define MMC_NICE_WAITING            TRUE
254
+#endif
255
+
256
+/*===========================================================================*/
257
+/* SDC driver related settings.                                              */
258
+/*===========================================================================*/
259
+
260
+/**
261
+ * @brief   Number of initialization attempts before rejecting the card.
262
+ * @note    Attempts are performed at 10mS intervals.
263
+ */
264
+#if !defined(SDC_INIT_RETRY) || defined(__DOXYGEN__)
265
+#define SDC_INIT_RETRY              100
266
+#endif
267
+
268
+/**
269
+ * @brief   Include support for MMC cards.
270
+ * @note    MMC support is not yet implemented so this option must be kept
271
+ *          at @p FALSE.
272
+ */
273
+#if !defined(SDC_MMC_SUPPORT) || defined(__DOXYGEN__)
274
+#define SDC_MMC_SUPPORT             FALSE
275
+#endif
276
+
277
+/**
278
+ * @brief   Delays insertions.
279
+ * @details If enabled this options inserts delays into the MMC waiting
280
+ *          routines releasing some extra CPU time for the threads with
281
+ *          lower priority, this may slow down the driver a bit however.
282
+ */
283
+#if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__)
284
+#define SDC_NICE_WAITING            TRUE
285
+#endif
286
+
287
+/*===========================================================================*/
288
+/* SERIAL driver related settings.                                           */
289
+/*===========================================================================*/
290
+
291
+/**
292
+ * @brief   Default bit rate.
293
+ * @details Configuration parameter, this is the baud rate selected for the
294
+ *          default configuration.
295
+ */
296
+#if !defined(SERIAL_DEFAULT_BITRATE) || defined(__DOXYGEN__)
297
+#define SERIAL_DEFAULT_BITRATE      38400
298
+#endif
299
+
300
+/**
301
+ * @brief   Serial buffers size.
302
+ * @details Configuration parameter, you can change the depth of the queue
303
+ *          buffers depending on the requirements of your application.
304
+ * @note    The default is 16 bytes for both the transmission and receive
305
+ *          buffers.
306
+ */
307
+#if !defined(SERIAL_BUFFERS_SIZE) || defined(__DOXYGEN__)
308
+#define SERIAL_BUFFERS_SIZE         16
309
+#endif
310
+
311
+/*===========================================================================*/
312
+/* SERIAL_USB driver related setting.                                        */
313
+/*===========================================================================*/
314
+
315
+/**
316
+ * @brief   Serial over USB buffers size.
317
+ * @details Configuration parameter, the buffer size must be a multiple of
318
+ *          the USB data endpoint maximum packet size.
319
+ * @note    The default is 256 bytes for both the transmission and receive
320
+ *          buffers.
321
+ */
322
+#if !defined(SERIAL_USB_BUFFERS_SIZE) || defined(__DOXYGEN__)
323
+#define SERIAL_USB_BUFFERS_SIZE     256
324
+#endif
325
+
326
+/**
327
+ * @brief   Serial over USB number of buffers.
328
+ * @note    The default is 2 buffers.
329
+ */
330
+#if !defined(SERIAL_USB_BUFFERS_NUMBER) || defined(__DOXYGEN__)
331
+#define SERIAL_USB_BUFFERS_NUMBER   2
332
+#endif
333
+
334
+/*===========================================================================*/
335
+/* SPI driver related settings.                                              */
336
+/*===========================================================================*/
337
+
338
+/**
339
+ * @brief   Enables synchronous APIs.
340
+ * @note    Disabling this option saves both code and data space.
341
+ */
342
+#if !defined(SPI_USE_WAIT) || defined(__DOXYGEN__)
343
+#define SPI_USE_WAIT                TRUE
344
+#endif
345
+
346
+/**
347
+ * @brief   Enables the @p spiAcquireBus() and @p spiReleaseBus() APIs.
348
+ * @note    Disabling this option saves both code and data space.
349
+ */
350
+#if !defined(SPI_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
351
+#define SPI_USE_MUTUAL_EXCLUSION    TRUE
352
+#endif
353
+
354
+/*===========================================================================*/
355
+/* UART driver related settings.                                             */
356
+/*===========================================================================*/
357
+
358
+/**
359
+ * @brief   Enables synchronous APIs.
360
+ * @note    Disabling this option saves both code and data space.
361
+ */
362
+#if !defined(UART_USE_WAIT) || defined(__DOXYGEN__)
363
+#define UART_USE_WAIT               FALSE
364
+#endif
365
+
366
+/**
367
+ * @brief   Enables the @p uartAcquireBus() and @p uartReleaseBus() APIs.
368
+ * @note    Disabling this option saves both code and data space.
369
+ */
370
+#if !defined(UART_USE_MUTUAL_EXCLUSION) || defined(__DOXYGEN__)
371
+#define UART_USE_MUTUAL_EXCLUSION   FALSE
372
+#endif
373
+
374
+/*===========================================================================*/
375
+/* USB driver related settings.                                              */
376
+/*===========================================================================*/
377
+
378
+/**
379
+ * @brief   Enables synchronous APIs.
380
+ * @note    Disabling this option saves both code and data space.
381
+ */
382
+#if !defined(USB_USE_WAIT) || defined(__DOXYGEN__)
383
+#define USB_USE_WAIT                FALSE
384
+#endif
385
+
386
+#endif /* HALCONF_H */
387
+
388
+/** @} */

+ 214
- 0
mcuconf.h View File

@@ -0,0 +1,214 @@
1
+/*
2
+    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
3
+
4
+    Licensed under the Apache License, Version 2.0 (the "License");
5
+    you may not use this file except in compliance with the License.
6
+    You may obtain a copy of the License at
7
+
8
+        http://www.apache.org/licenses/LICENSE-2.0
9
+
10
+    Unless required by applicable law or agreed to in writing, software
11
+    distributed under the License is distributed on an "AS IS" BASIS,
12
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+    See the License for the specific language governing permissions and
14
+    limitations under the License.
15
+*/
16
+
17
+#ifndef MCUCONF_H
18
+#define MCUCONF_H
19
+
20
+#define STM32F103_MCUCONF
21
+
22
+/*
23
+ * STM32F103 drivers configuration.
24
+ * The following settings override the default settings present in
25
+ * the various device driver implementation headers.
26
+ * Note that the settings for each driver only have effect if the whole
27
+ * driver is enabled in halconf.h.
28
+ *
29
+ * IRQ priorities:
30
+ * 15...0       Lowest...Highest.
31
+ *
32
+ * DMA priorities:
33
+ * 0...3        Lowest...Highest.
34
+ */
35
+
36
+/*
37
+ * HAL driver system settings.
38
+ */
39
+#define STM32_NO_INIT                       FALSE
40
+#define STM32_HSI_ENABLED                   TRUE
41
+#define STM32_LSI_ENABLED                   FALSE
42
+#define STM32_HSE_ENABLED                   TRUE
43
+#define STM32_LSE_ENABLED                   TRUE
44
+#define STM32_SW                            STM32_SW_PLL
45
+#define STM32_PLLSRC                        STM32_PLLSRC_HSE
46
+#define STM32_PLLXTPRE                      STM32_PLLXTPRE_DIV1
47
+#define STM32_PLLMUL_VALUE                  9
48
+#define STM32_HPRE                          STM32_HPRE_DIV1
49
+#define STM32_PPRE1                         STM32_PPRE1_DIV2
50
+#define STM32_PPRE2                         STM32_PPRE2_DIV2
51
+#define STM32_ADCPRE                        STM32_ADCPRE_DIV4
52
+#define STM32_USB_CLOCK_REQUIRED            TRUE
53
+#define STM32_USBPRE                        STM32_USBPRE_DIV1P5
54
+#define STM32_MCOSEL                        STM32_MCOSEL_NOCLOCK
55
+#define STM32_RTCSEL                        STM32_RTCSEL_LSE
56
+#define STM32_PVD_ENABLE                    FALSE
57
+#define STM32_PLS                           STM32_PLS_LEV0
58
+
59
+/*
60
+ * ADC driver system settings.
61
+ */
62
+#define STM32_ADC_USE_ADC1                  FALSE
63
+#define STM32_ADC_ADC1_DMA_PRIORITY         2
64
+#define STM32_ADC_ADC1_IRQ_PRIORITY         6
65
+
66
+/*
67
+ * CAN driver system settings.
68
+ */
69
+#define STM32_CAN_USE_CAN1                  FALSE
70
+#define STM32_CAN_CAN1_IRQ_PRIORITY         11
71
+
72
+/*
73
+ * EXT driver system settings.
74
+ */
75
+#define STM32_EXT_EXTI0_IRQ_PRIORITY        6
76
+#define STM32_EXT_EXTI1_IRQ_PRIORITY        6
77
+#define STM32_EXT_EXTI2_IRQ_PRIORITY        6
78
+#define STM32_EXT_EXTI3_IRQ_PRIORITY        6
79
+#define STM32_EXT_EXTI4_IRQ_PRIORITY        6
80
+#define STM32_EXT_EXTI5_9_IRQ_PRIORITY      6
81
+#define STM32_EXT_EXTI10_15_IRQ_PRIORITY    6
82
+#define STM32_EXT_EXTI16_IRQ_PRIORITY       6
83
+#define STM32_EXT_EXTI17_IRQ_PRIORITY       6
84
+#define STM32_EXT_EXTI18_IRQ_PRIORITY       6
85
+#define STM32_EXT_EXTI19_IRQ_PRIORITY       6
86
+
87
+/*
88
+ * GPT driver system settings.
89
+ */
90
+#define STM32_GPT_USE_TIM1                  FALSE
91
+#define STM32_GPT_USE_TIM2                  FALSE
92
+#define STM32_GPT_USE_TIM3                  FALSE
93
+#define STM32_GPT_USE_TIM4                  FALSE
94
+#define STM32_GPT_USE_TIM5                  FALSE
95
+#define STM32_GPT_USE_TIM8                  FALSE
96
+#define STM32_GPT_TIM1_IRQ_PRIORITY         7
97
+#define STM32_GPT_TIM2_IRQ_PRIORITY         7
98
+#define STM32_GPT_TIM3_IRQ_PRIORITY         7
99
+#define STM32_GPT_TIM4_IRQ_PRIORITY         7
100
+#define STM32_GPT_TIM5_IRQ_PRIORITY         7
101
+#define STM32_GPT_TIM8_IRQ_PRIORITY         7
102
+
103
+/*
104
+ * I2C driver system settings.
105
+ */
106
+#define STM32_I2C_USE_I2C1                  FALSE
107
+#define STM32_I2C_USE_I2C2                  FALSE
108
+#define STM32_I2C_BUSY_TIMEOUT              50
109
+#define STM32_I2C_I2C1_IRQ_PRIORITY         5
110
+#define STM32_I2C_I2C2_IRQ_PRIORITY         5
111
+#define STM32_I2C_I2C1_DMA_PRIORITY         3
112
+#define STM32_I2C_I2C2_DMA_PRIORITY         3
113
+#define STM32_I2C_DMA_ERROR_HOOK(i2cp)      osalSysHalt("DMA failure")
114
+
115
+/*
116
+ * ICU driver system settings.
117
+ */
118
+#define STM32_ICU_USE_TIM1                  FALSE
119
+#define STM32_ICU_USE_TIM2                  FALSE
120
+#define STM32_ICU_USE_TIM3                  FALSE
121
+#define STM32_ICU_USE_TIM4                  FALSE
122
+#define STM32_ICU_USE_TIM5                  FALSE
123
+#define STM32_ICU_USE_TIM8                  FALSE
124
+#define STM32_ICU_TIM1_IRQ_PRIORITY         7
125
+#define STM32_ICU_TIM2_IRQ_PRIORITY         7
126
+#define STM32_ICU_TIM3_IRQ_PRIORITY         7
127
+#define STM32_ICU_TIM4_IRQ_PRIORITY         7
128
+#define STM32_ICU_TIM5_IRQ_PRIORITY         7
129
+#define STM32_ICU_TIM8_IRQ_PRIORITY         7
130
+
131
+/*
132
+ * PWM driver system settings.
133
+ */
134
+#define STM32_PWM_USE_ADVANCED              FALSE
135
+#define STM32_PWM_USE_TIM1                  FALSE
136
+#define STM32_PWM_USE_TIM2                  FALSE
137
+#define STM32_PWM_USE_TIM3                  FALSE
138
+#define STM32_PWM_USE_TIM4                  FALSE
139
+#define STM32_PWM_USE_TIM5                  FALSE
140
+#define STM32_PWM_USE_TIM8                  FALSE
141
+#define STM32_PWM_TIM1_IRQ_PRIORITY         7
142
+#define STM32_PWM_TIM2_IRQ_PRIORITY         7
143
+#define STM32_PWM_TIM3_IRQ_PRIORITY         7
144
+#define STM32_PWM_TIM4_IRQ_PRIORITY         7
145
+#define STM32_PWM_TIM5_IRQ_PRIORITY         7
146
+#define STM32_PWM_TIM8_IRQ_PRIORITY         7
147
+
148
+/*
149
+ * RTC driver system settings.
150
+ */
151
+#define STM32_RTC_IRQ_PRIORITY              15
152
+
153
+/*
154
+ * SERIAL driver system settings.
155
+ */
156
+#define STM32_SERIAL_USE_USART1             FALSE
157
+#define STM32_SERIAL_USE_USART2             TRUE
158
+#define STM32_SERIAL_USE_USART3             FALSE
159
+#define STM32_SERIAL_USE_UART4              FALSE
160
+#define STM32_SERIAL_USE_UART5              FALSE
161
+#define STM32_SERIAL_USART1_PRIORITY        12
162
+#define STM32_SERIAL_USART2_PRIORITY        12
163
+#define STM32_SERIAL_USART3_PRIORITY        12
164
+#define STM32_SERIAL_UART4_PRIORITY         12
165
+#define STM32_SERIAL_UART5_PRIORITY         12
166
+
167
+/*
168
+ * SPI driver system settings.
169
+ */
170
+#define STM32_SPI_USE_SPI1                  FALSE
171
+#define STM32_SPI_USE_SPI2                  FALSE
172
+#define STM32_SPI_USE_SPI3                  FALSE
173
+#define STM32_SPI_SPI1_DMA_PRIORITY         1
174
+#define STM32_SPI_SPI2_DMA_PRIORITY         1
175
+#define STM32_SPI_SPI3_DMA_PRIORITY         1
176
+#define STM32_SPI_SPI1_IRQ_PRIORITY         10
177
+#define STM32_SPI_SPI2_IRQ_PRIORITY         10
178
+#define STM32_SPI_SPI3_IRQ_PRIORITY         10
179
+#define STM32_SPI_DMA_ERROR_HOOK(spip)      osalSysHalt("DMA failure")
180
+
181
+/*
182
+ * ST driver system settings.
183
+ */
184
+#define STM32_ST_IRQ_PRIORITY               8
185
+#define STM32_ST_USE_TIMER                  2
186
+
187
+/*
188
+ * UART driver system settings.
189
+ */
190
+#define STM32_UART_USE_USART1               FALSE
191
+#define STM32_UART_USE_USART2               FALSE
192
+#define STM32_UART_USE_USART3               FALSE
193
+#define STM32_UART_USART1_IRQ_PRIORITY      12
194
+#define STM32_UART_USART2_IRQ_PRIORITY      12
195
+#define STM32_UART_USART3_IRQ_PRIORITY      12
196
+#define STM32_UART_USART1_DMA_PRIORITY      0
197
+#define STM32_UART_USART2_DMA_PRIORITY      0
198
+#define STM32_UART_USART3_DMA_PRIORITY      0
199
+#define STM32_UART_DMA_ERROR_HOOK(uartp)    osalSysHalt("DMA failure")
200
+
201
+/*
202
+ * USB driver system settings.
203
+ */
204
+#define STM32_USB_USE_USB1                  FALSE
205
+#define STM32_USB_LOW_POWER_ON_SUSPEND      FALSE
206
+#define STM32_USB_USB1_HP_IRQ_PRIORITY      13
207
+#define STM32_USB_USB1_LP_IRQ_PRIORITY      14
208
+
209
+/*
210
+ * WDG driver system settings.
211
+ */
212
+#define STM32_WDG_USE_IWDG                  FALSE
213
+
214
+#endif /* MCUCONF_H */

+ 89
- 0
src/main.c View File

@@ -0,0 +1,89 @@
1
+/*
2
+ * Remote Control Translator Firmware
3
+ * Copyright (C) 2017 Clayton G. Hobbs <clay@lakeserv.net>
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU General Public License as published by
7
+ * the Free Software Foundation, either version 3 of the License, or
8
+ * (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
+ * GNU General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU General Public License
16
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+
19
+/*
20
+    ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio
21
+
22
+    Licensed under the Apache License, Version 2.0 (the "License");
23
+    you may not use this file except in compliance with the License.
24
+    You may obtain a copy of the License at
25
+
26
+        http://www.apache.org/licenses/LICENSE-2.0
27
+
28
+    Unless required by applicable law or agreed to in writing, software
29
+    distributed under the License is distributed on an "AS IS" BASIS,
30
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31
+    See the License for the specific language governing permissions and
32
+    limitations under the License.
33
+*/
34
+
35
+#include "ch.h"
36
+#include "hal.h"
37
+#include "ch_test.h"
38
+
39
+/*
40
+ * Green LED blinker thread, times are in milliseconds.
41
+ */
42
+static THD_WORKING_AREA(waThread1, 128);
43
+static THD_FUNCTION(Thread1, arg) {
44
+
45
+    (void)arg;
46
+    chRegSetThreadName("blinker");
47
+    while (true) {
48
+        palClearPad(GPIOC, GPIOC_LED);
49
+        chThdSleepMilliseconds(500);
50
+        palSetPad(GPIOC, GPIOC_LED);
51
+        chThdSleepMilliseconds(500);
52
+    }
53
+}
54
+
55
+/*
56
+ * Application entry point.
57
+ */
58
+int main(void) {
59
+
60
+    /*
61
+     * System initializations.
62
+     * - HAL initialization, this also initializes the configured device drivers
63
+     *   and performs the board-specific initializations.
64
+     * - Kernel initialization, the main() function becomes a thread and the
65
+     *   RTOS is active.
66
+     */
67
+    halInit();
68
+    chSysInit();
69
+
70
+    /*
71
+     * Activates the serial driver 2 using the driver default configuration.
72
+     */
73
+    sdStart(&SD2, NULL);
74
+
75
+    /*
76
+     * Creates the blinker thread.
77
+     */
78
+    chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL);
79
+
80
+    /*
81
+     * Normal main() thread activity, in this demo it does nothing except
82
+     * sleeping in a loop and check the button state.
83
+     */
84
+    while (true) {
85
+        //if (!palReadPad(GPIOC, GPIOC_BUTTON))
86
+        //  test_execute((BaseSequentialStream *)&SD2);
87
+        chThdSleepMilliseconds(500);
88
+    }
89
+}

Loading…
Cancel
Save