|
- Files for each peripheral (examples given for STM32 GPIO)
- ---------------------------------------------------------
-
- In include/libopencm3/stm32.
- A "dispatch" header to point to the subfamily header (gpio.h)
-
- In include/libopencm3/stm32/f*
- A file with defines that are specific to the subfamily, and an include of
- needed common header files (gpio.h).
-
- In include/libopencm3/stm32/common
- A file with defines common to all subfamilies. Includes the cm3 common header
- (gpio_common_all.h).
-
- In include/libopencm3/stm32/common
- May be one other file with defines common to a subgroup of devices.
- This includes the file common to all (gpio_common_f24.h).
-
- In lib/stm32/f*
- A file with functions specific to the subfamily. Includes the "dispatch" header
- and any common headers needed (gpio.c).
-
- In lib/stm32/common
- Has functions common to all subfamilies. Includes the "dispatch" header
- (gpio_common_all.c).
-
- In lib/stm32/common
- May be one other file with functions common to a group of subfamilies. Includes
- the "dispatch" header and the file common to all (gpio_common_f24.h).
-
- Makefiles in lib/stm32/f? have the common object files added and the
- common directory added to VPATH.
-
- NOTE: The common source files MUST have the "dispatch" header so that
- compilation will use the specific defines for the subfamily being compiled.
- These can differ between subfamilies.
-
- NOTE: The common source files must have a line of the form
-
- #ifdef LIBOPENCM3_xxx_H
-
- where xxx is the associated peripheral name. This prevents the common files
- from being included accidentally into a user's application. This however
- causes doxygen to skip processing of the remainder of the file. Thus a
-
- @cond ... @endcond
-
- directive must be placed around the statement to prevent doxygen from
- processing it. This works only for doxygen 1.8.4 or later. At the present
- time most distros have an earlier buggy version.
-
- Documentation
- -------------
-
- In include/libopencm3/stm32/f*
- A file doc-stm32f*.h contains a definition of the particular family grouping.
- This grouping will appear in the main index of the resulting document with all
- documentation under it.
-
- All header files for a peripheral (common or otherwise) will subgroup under a
- name which is the same in all families (such as gpio_defines). The peripheral
- header file in include/libopencm3/stm32/f* will then include this group as a
- subgroup under the specific family group. Doxygen is run separately for each
- family so there is no danger of accidentally including the wrong stuff.
-
- Similarly for the source files for a peripheral which will subgroup under a
- same name (such as gpio_files). The peripheral source file in lib/stm32/f*
- will include this as a subgroup under the specific family group.
-
- DOXYFILE for a particular family will list the family specific and common files
- (headers and source) that are to be included. The result (in the long run) will
- be that all peripherals will appear under the same family grouping in the
- documentation, even if they are identical over a number of families. That is
- probably most useful to end users who only need to see the documentation for
- one family.
|