git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2850 35acf78f-673a-0410-8e92-d51de3d6d3f4
parent
94d34da7f1
commit
f5ae255230
|
@ -1,4 +1,4 @@
|
||||||
# Doxyfile 1.7.3
|
# Doxyfile 1.7.4
|
||||||
|
|
||||||
# This file describes the settings to be used by the documentation system
|
# This file describes the settings to be used by the documentation system
|
||||||
# doxygen (www.doxygen.org) for a project.
|
# doxygen (www.doxygen.org) for a project.
|
||||||
|
@ -33,7 +33,9 @@ PROJECT_NAME = ChibiOS/RT
|
||||||
|
|
||||||
PROJECT_NUMBER = 2.3.1
|
PROJECT_NUMBER = 2.3.1
|
||||||
|
|
||||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description for a project that appears at the top of each page and should give viewer a quick idea about the purpose of the project. Keep the description short.
|
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||||
|
# for a project that appears at the top of each page and should give viewer
|
||||||
|
# a quick idea about the purpose of the project. Keep the description short.
|
||||||
|
|
||||||
PROJECT_BRIEF =
|
PROJECT_BRIEF =
|
||||||
|
|
||||||
|
@ -304,6 +306,13 @@ DISTRIBUTE_GROUP_DOC = NO
|
||||||
|
|
||||||
SUBGROUPING = YES
|
SUBGROUPING = YES
|
||||||
|
|
||||||
|
# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
|
||||||
|
# unions are shown inside the group in which they are included (e.g. using
|
||||||
|
# @ingroup) instead of on a separate page (for HTML and Man pages) or
|
||||||
|
# section (for LaTeX and RTF).
|
||||||
|
|
||||||
|
INLINE_GROUPED_CLASSES = NO
|
||||||
|
|
||||||
# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
|
# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
|
||||||
# is documented as struct, union, or enum with the name of the typedef. So
|
# is documented as struct, union, or enum with the name of the typedef. So
|
||||||
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
|
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
|
||||||
|
@ -479,8 +488,11 @@ SORT_GROUP_NAMES = NO
|
||||||
|
|
||||||
SORT_BY_SCOPE_NAME = NO
|
SORT_BY_SCOPE_NAME = NO
|
||||||
|
|
||||||
# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper type resolution of all parameters of a function it will reject a
|
# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
|
||||||
# match between the prototype and the implementation of a member function even if there is only one candidate or it is obvious which candidate to choose by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
|
# do proper type resolution of all parameters of a function it will reject a
|
||||||
|
# match between the prototype and the implementation of a member function even
|
||||||
|
# if there is only one candidate or it is obvious which candidate to choose
|
||||||
|
# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
|
||||||
# will still accept a match between prototype and implementation in such cases.
|
# will still accept a match between prototype and implementation in such cases.
|
||||||
|
|
||||||
STRICT_PROTO_MATCHING = NO
|
STRICT_PROTO_MATCHING = NO
|
||||||
|
@ -924,7 +936,13 @@ HTML_FILE_EXTENSION = .html
|
||||||
|
|
||||||
# The HTML_HEADER tag can be used to specify a personal HTML header for
|
# The HTML_HEADER tag can be used to specify a personal HTML header for
|
||||||
# each generated HTML page. If it is left blank doxygen will generate a
|
# each generated HTML page. If it is left blank doxygen will generate a
|
||||||
# standard header.
|
# standard header. Note that when using a custom header you are responsible
|
||||||
|
# for the proper inclusion of any scripts and style sheets that doxygen
|
||||||
|
# needs, which is dependent on the configuration options used.
|
||||||
|
# It is adviced to generate a default header using "doxygen -w html
|
||||||
|
# header.html footer.html stylesheet.css YourConfigFile" and then modify
|
||||||
|
# that header. Note that the header is subject to change so you typically
|
||||||
|
# have to redo this when upgrading to a newer version of doxygen or when changing the value of configuration settings such as GENERATE_TREEVIEW!
|
||||||
|
|
||||||
HTML_HEADER = ./rsc/header_chm.html
|
HTML_HEADER = ./rsc/header_chm.html
|
||||||
|
|
||||||
|
@ -943,6 +961,15 @@ HTML_FOOTER = ./rsc/footer_chm.html
|
||||||
|
|
||||||
HTML_STYLESHEET =
|
HTML_STYLESHEET =
|
||||||
|
|
||||||
|
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
|
||||||
|
# other source files which should be copied to the HTML output directory. Note
|
||||||
|
# that these files will be copied to the base HTML output directory. Use the
|
||||||
|
# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
|
||||||
|
# files. In the HTML_STYLESHEET file, use the file name only. Also note that
|
||||||
|
# the files will be copied as-is; there are no commands or markers available.
|
||||||
|
|
||||||
|
HTML_EXTRA_FILES =
|
||||||
|
|
||||||
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
|
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
|
||||||
# Doxygen will adjust the colors in the stylesheet and background images
|
# Doxygen will adjust the colors in the stylesheet and background images
|
||||||
# according to this color. Hue is specified as an angle on a colorwheel,
|
# according to this color. Hue is specified as an angle on a colorwheel,
|
||||||
|
@ -1145,9 +1172,10 @@ ECLIPSE_DOC_ID = org.doxygen.Project
|
||||||
|
|
||||||
DISABLE_INDEX = NO
|
DISABLE_INDEX = NO
|
||||||
|
|
||||||
# This tag can be used to set the number of enum values (range [0,1..20])
|
# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
|
||||||
# that doxygen will group on one line in the generated HTML documentation.
|
# (range [0,1..20]) that doxygen will group on one line in the generated HTML
|
||||||
# Note that a value of 0 will completely suppress the enum values from appearing in the overview section.
|
# documentation. Note that a value of 0 will completely suppress the enum
|
||||||
|
# values from appearing in the overview section.
|
||||||
|
|
||||||
ENUM_VALUES_PER_LINE = 4
|
ENUM_VALUES_PER_LINE = 4
|
||||||
|
|
||||||
|
@ -1206,7 +1234,8 @@ USE_MATHJAX = NO
|
||||||
# HTML output directory using the MATHJAX_RELPATH option. The destination
|
# HTML output directory using the MATHJAX_RELPATH option. The destination
|
||||||
# directory should contain the MathJax.js script. For instance, if the mathjax
|
# directory should contain the MathJax.js script. For instance, if the mathjax
|
||||||
# directory is located at the same level as the HTML output directory, then
|
# directory is located at the same level as the HTML output directory, then
|
||||||
# MATHJAX_RELPATH should be ../mathjax. The default value points to the mathjax.org site, so you can quickly see the result without installing
|
# MATHJAX_RELPATH should be ../mathjax. The default value points to the
|
||||||
|
# mathjax.org site, so you can quickly see the result without installing
|
||||||
# MathJax, but it is strongly recommended to install a local copy of MathJax
|
# MathJax, but it is strongly recommended to install a local copy of MathJax
|
||||||
# before deployment.
|
# before deployment.
|
||||||
|
|
||||||
|
@ -1285,6 +1314,13 @@ EXTRA_PACKAGES =
|
||||||
|
|
||||||
LATEX_HEADER =
|
LATEX_HEADER =
|
||||||
|
|
||||||
|
# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
|
||||||
|
# the generated latex document. The footer should contain everything after
|
||||||
|
# the last chapter. If it is left blank doxygen will generate a
|
||||||
|
# standard footer. Notice: only use this tag if you know what you are doing!
|
||||||
|
|
||||||
|
LATEX_FOOTER =
|
||||||
|
|
||||||
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
|
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
|
||||||
# is prepared for conversion to pdf (using ps2pdf). The pdf file will
|
# is prepared for conversion to pdf (using ps2pdf). The pdf file will
|
||||||
# contain links (just like the HTML output) instead of page references
|
# contain links (just like the HTML output) instead of page references
|
||||||
|
@ -1494,7 +1530,7 @@ MACRO_EXPANSION = YES
|
||||||
EXPAND_ONLY_PREDEF = YES
|
EXPAND_ONLY_PREDEF = YES
|
||||||
|
|
||||||
# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
|
# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
|
||||||
# in the INCLUDE_PATH (see below) will be search if a #include is found.
|
# pointed to by INCLUDE_PATH will be searched when a #include is found.
|
||||||
|
|
||||||
SEARCH_INCLUDES = YES
|
SEARCH_INCLUDES = YES
|
||||||
|
|
||||||
|
@ -1524,7 +1560,8 @@ PREDEFINED = __DOXYGEN__
|
||||||
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
|
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
|
||||||
# this tag can be used to specify a list of macro names that should be expanded.
|
# this tag can be used to specify a list of macro names that should be expanded.
|
||||||
# The macro definition that is found in the sources will be used.
|
# The macro definition that is found in the sources will be used.
|
||||||
# Use the PREDEFINED tag if you want to use a different macro definition that overrules the definition found in the source code.
|
# Use the PREDEFINED tag if you want to use a different macro definition that
|
||||||
|
# overrules the definition found in the source code.
|
||||||
|
|
||||||
EXPAND_AS_DEFINED =
|
EXPAND_AS_DEFINED =
|
||||||
|
|
||||||
|
@ -1717,7 +1754,7 @@ GRAPHICAL_HIERARCHY = YES
|
||||||
DIRECTORY_GRAPH = NO
|
DIRECTORY_GRAPH = NO
|
||||||
|
|
||||||
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
|
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
|
||||||
# generated by dot. Possible values are png, svg, gif or svg.
|
# generated by dot. Possible values are svg, png, jpg, or gif.
|
||||||
# If left blank png will be used.
|
# If left blank png will be used.
|
||||||
|
|
||||||
DOT_IMAGE_FORMAT = png
|
DOT_IMAGE_FORMAT = png
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# Doxyfile 1.7.3
|
# Doxyfile 1.7.4
|
||||||
|
|
||||||
# This file describes the settings to be used by the documentation system
|
# This file describes the settings to be used by the documentation system
|
||||||
# doxygen (www.doxygen.org) for a project.
|
# doxygen (www.doxygen.org) for a project.
|
||||||
|
@ -33,7 +33,9 @@ PROJECT_NAME = ChibiOS/RT
|
||||||
|
|
||||||
PROJECT_NUMBER = 2.3.1
|
PROJECT_NUMBER = 2.3.1
|
||||||
|
|
||||||
# Using the PROJECT_BRIEF tag one can provide an optional one line description for a project that appears at the top of each page and should give viewer a quick idea about the purpose of the project. Keep the description short.
|
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
||||||
|
# for a project that appears at the top of each page and should give viewer
|
||||||
|
# a quick idea about the purpose of the project. Keep the description short.
|
||||||
|
|
||||||
PROJECT_BRIEF =
|
PROJECT_BRIEF =
|
||||||
|
|
||||||
|
@ -304,6 +306,13 @@ DISTRIBUTE_GROUP_DOC = NO
|
||||||
|
|
||||||
SUBGROUPING = YES
|
SUBGROUPING = YES
|
||||||
|
|
||||||
|
# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and
|
||||||
|
# unions are shown inside the group in which they are included (e.g. using
|
||||||
|
# @ingroup) instead of on a separate page (for HTML and Man pages) or
|
||||||
|
# section (for LaTeX and RTF).
|
||||||
|
|
||||||
|
INLINE_GROUPED_CLASSES = NO
|
||||||
|
|
||||||
# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
|
# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
|
||||||
# is documented as struct, union, or enum with the name of the typedef. So
|
# is documented as struct, union, or enum with the name of the typedef. So
|
||||||
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
|
# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
|
||||||
|
@ -479,8 +488,11 @@ SORT_GROUP_NAMES = NO
|
||||||
|
|
||||||
SORT_BY_SCOPE_NAME = NO
|
SORT_BY_SCOPE_NAME = NO
|
||||||
|
|
||||||
# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper type resolution of all parameters of a function it will reject a
|
# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to
|
||||||
# match between the prototype and the implementation of a member function even if there is only one candidate or it is obvious which candidate to choose by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
|
# do proper type resolution of all parameters of a function it will reject a
|
||||||
|
# match between the prototype and the implementation of a member function even
|
||||||
|
# if there is only one candidate or it is obvious which candidate to choose
|
||||||
|
# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen
|
||||||
# will still accept a match between prototype and implementation in such cases.
|
# will still accept a match between prototype and implementation in such cases.
|
||||||
|
|
||||||
STRICT_PROTO_MATCHING = NO
|
STRICT_PROTO_MATCHING = NO
|
||||||
|
@ -924,7 +936,13 @@ HTML_FILE_EXTENSION = .html
|
||||||
|
|
||||||
# The HTML_HEADER tag can be used to specify a personal HTML header for
|
# The HTML_HEADER tag can be used to specify a personal HTML header for
|
||||||
# each generated HTML page. If it is left blank doxygen will generate a
|
# each generated HTML page. If it is left blank doxygen will generate a
|
||||||
# standard header.
|
# standard header. Note that when using a custom header you are responsible
|
||||||
|
# for the proper inclusion of any scripts and style sheets that doxygen
|
||||||
|
# needs, which is dependent on the configuration options used.
|
||||||
|
# It is adviced to generate a default header using "doxygen -w html
|
||||||
|
# header.html footer.html stylesheet.css YourConfigFile" and then modify
|
||||||
|
# that header. Note that the header is subject to change so you typically
|
||||||
|
# have to redo this when upgrading to a newer version of doxygen or when changing the value of configuration settings such as GENERATE_TREEVIEW!
|
||||||
|
|
||||||
HTML_HEADER = ./rsc/header_html.html
|
HTML_HEADER = ./rsc/header_html.html
|
||||||
|
|
||||||
|
@ -943,6 +961,15 @@ HTML_FOOTER = ./rsc/footer_html.html
|
||||||
|
|
||||||
HTML_STYLESHEET =
|
HTML_STYLESHEET =
|
||||||
|
|
||||||
|
# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
|
||||||
|
# other source files which should be copied to the HTML output directory. Note
|
||||||
|
# that these files will be copied to the base HTML output directory. Use the
|
||||||
|
# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
|
||||||
|
# files. In the HTML_STYLESHEET file, use the file name only. Also note that
|
||||||
|
# the files will be copied as-is; there are no commands or markers available.
|
||||||
|
|
||||||
|
HTML_EXTRA_FILES =
|
||||||
|
|
||||||
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
|
# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output.
|
||||||
# Doxygen will adjust the colors in the stylesheet and background images
|
# Doxygen will adjust the colors in the stylesheet and background images
|
||||||
# according to this color. Hue is specified as an angle on a colorwheel,
|
# according to this color. Hue is specified as an angle on a colorwheel,
|
||||||
|
@ -1145,9 +1172,10 @@ ECLIPSE_DOC_ID = org.doxygen.Project
|
||||||
|
|
||||||
DISABLE_INDEX = NO
|
DISABLE_INDEX = NO
|
||||||
|
|
||||||
# This tag can be used to set the number of enum values (range [0,1..20])
|
# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values
|
||||||
# that doxygen will group on one line in the generated HTML documentation.
|
# (range [0,1..20]) that doxygen will group on one line in the generated HTML
|
||||||
# Note that a value of 0 will completely suppress the enum values from appearing in the overview section.
|
# documentation. Note that a value of 0 will completely suppress the enum
|
||||||
|
# values from appearing in the overview section.
|
||||||
|
|
||||||
ENUM_VALUES_PER_LINE = 4
|
ENUM_VALUES_PER_LINE = 4
|
||||||
|
|
||||||
|
@ -1206,7 +1234,8 @@ USE_MATHJAX = NO
|
||||||
# HTML output directory using the MATHJAX_RELPATH option. The destination
|
# HTML output directory using the MATHJAX_RELPATH option. The destination
|
||||||
# directory should contain the MathJax.js script. For instance, if the mathjax
|
# directory should contain the MathJax.js script. For instance, if the mathjax
|
||||||
# directory is located at the same level as the HTML output directory, then
|
# directory is located at the same level as the HTML output directory, then
|
||||||
# MATHJAX_RELPATH should be ../mathjax. The default value points to the mathjax.org site, so you can quickly see the result without installing
|
# MATHJAX_RELPATH should be ../mathjax. The default value points to the
|
||||||
|
# mathjax.org site, so you can quickly see the result without installing
|
||||||
# MathJax, but it is strongly recommended to install a local copy of MathJax
|
# MathJax, but it is strongly recommended to install a local copy of MathJax
|
||||||
# before deployment.
|
# before deployment.
|
||||||
|
|
||||||
|
@ -1285,6 +1314,13 @@ EXTRA_PACKAGES =
|
||||||
|
|
||||||
LATEX_HEADER =
|
LATEX_HEADER =
|
||||||
|
|
||||||
|
# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for
|
||||||
|
# the generated latex document. The footer should contain everything after
|
||||||
|
# the last chapter. If it is left blank doxygen will generate a
|
||||||
|
# standard footer. Notice: only use this tag if you know what you are doing!
|
||||||
|
|
||||||
|
LATEX_FOOTER =
|
||||||
|
|
||||||
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
|
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
|
||||||
# is prepared for conversion to pdf (using ps2pdf). The pdf file will
|
# is prepared for conversion to pdf (using ps2pdf). The pdf file will
|
||||||
# contain links (just like the HTML output) instead of page references
|
# contain links (just like the HTML output) instead of page references
|
||||||
|
@ -1494,7 +1530,7 @@ MACRO_EXPANSION = YES
|
||||||
EXPAND_ONLY_PREDEF = YES
|
EXPAND_ONLY_PREDEF = YES
|
||||||
|
|
||||||
# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
|
# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
|
||||||
# in the INCLUDE_PATH (see below) will be search if a #include is found.
|
# pointed to by INCLUDE_PATH will be searched when a #include is found.
|
||||||
|
|
||||||
SEARCH_INCLUDES = YES
|
SEARCH_INCLUDES = YES
|
||||||
|
|
||||||
|
@ -1524,7 +1560,8 @@ PREDEFINED = __DOXYGEN__
|
||||||
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
|
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
|
||||||
# this tag can be used to specify a list of macro names that should be expanded.
|
# this tag can be used to specify a list of macro names that should be expanded.
|
||||||
# The macro definition that is found in the sources will be used.
|
# The macro definition that is found in the sources will be used.
|
||||||
# Use the PREDEFINED tag if you want to use a different macro definition that overrules the definition found in the source code.
|
# Use the PREDEFINED tag if you want to use a different macro definition that
|
||||||
|
# overrules the definition found in the source code.
|
||||||
|
|
||||||
EXPAND_AS_DEFINED =
|
EXPAND_AS_DEFINED =
|
||||||
|
|
||||||
|
@ -1717,7 +1754,7 @@ GRAPHICAL_HIERARCHY = YES
|
||||||
DIRECTORY_GRAPH = NO
|
DIRECTORY_GRAPH = NO
|
||||||
|
|
||||||
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
|
# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
|
||||||
# generated by dot. Possible values are png, svg, gif or svg.
|
# generated by dot. Possible values are svg, png, jpg, or gif.
|
||||||
# If left blank png will be used.
|
# If left blank png will be used.
|
||||||
|
|
||||||
DOT_IMAGE_FORMAT = png
|
DOT_IMAGE_FORMAT = png
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
*** Documentation build procedure ***
|
*** Documentation build procedure ***
|
||||||
|
|
||||||
The following software must be installed:
|
The following software must be installed:
|
||||||
- Doxygen 1.7.3 or later.
|
- Doxygen 1.7.4 or later.
|
||||||
- Graphviz 2.26.3 or later. The ./bin directory must be specified in the path
|
- Graphviz 2.26.3 or later. The ./bin directory must be specified in the path
|
||||||
in order to make Graphviz accessible by Doxygen.
|
in order to make Graphviz accessible by Doxygen.
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,8 @@
|
||||||
|
|
||||||
<!-- Layout definition for a class page -->
|
<!-- Layout definition for a class page -->
|
||||||
<class>
|
<class>
|
||||||
<briefdescription visible="yes"/>
|
<briefdescription visible="no"/>
|
||||||
|
<detaileddescription title=""/>
|
||||||
<includes visible="$SHOW_INCLUDE_FILES"/>
|
<includes visible="$SHOW_INCLUDE_FILES"/>
|
||||||
<inheritancegraph visible="$CLASS_GRAPH"/>
|
<inheritancegraph visible="$CLASS_GRAPH"/>
|
||||||
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
|
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
|
||||||
|
@ -61,7 +62,6 @@
|
||||||
<related title="" subtitle=""/>
|
<related title="" subtitle=""/>
|
||||||
<membergroups visible="yes"/>
|
<membergroups visible="yes"/>
|
||||||
</memberdecl>
|
</memberdecl>
|
||||||
<detaileddescription title=""/>
|
|
||||||
<memberdef>
|
<memberdef>
|
||||||
<typedefs title=""/>
|
<typedefs title=""/>
|
||||||
<enums title=""/>
|
<enums title=""/>
|
||||||
|
@ -78,7 +78,8 @@
|
||||||
|
|
||||||
<!-- Layout definition for a namespace page -->
|
<!-- Layout definition for a namespace page -->
|
||||||
<namespace>
|
<namespace>
|
||||||
<briefdescription visible="yes"/>
|
<briefdescription visible="no"/>
|
||||||
|
<detaileddescription title=""/>
|
||||||
<memberdecl>
|
<memberdecl>
|
||||||
<nestednamespaces visible="yes" title=""/>
|
<nestednamespaces visible="yes" title=""/>
|
||||||
<classes visible="yes" title=""/>
|
<classes visible="yes" title=""/>
|
||||||
|
@ -88,7 +89,6 @@
|
||||||
<variables title=""/>
|
<variables title=""/>
|
||||||
<membergroups visible="yes"/>
|
<membergroups visible="yes"/>
|
||||||
</memberdecl>
|
</memberdecl>
|
||||||
<detaileddescription title=""/>
|
|
||||||
<memberdef>
|
<memberdef>
|
||||||
<typedefs title=""/>
|
<typedefs title=""/>
|
||||||
<enums title=""/>
|
<enums title=""/>
|
||||||
|
@ -100,7 +100,8 @@
|
||||||
|
|
||||||
<!-- Layout definition for a file page -->
|
<!-- Layout definition for a file page -->
|
||||||
<file>
|
<file>
|
||||||
<briefdescription visible="yes"/>
|
<briefdescription visible="no"/>
|
||||||
|
<detaileddescription title=""/>
|
||||||
<includes visible="$SHOW_INCLUDE_FILES"/>
|
<includes visible="$SHOW_INCLUDE_FILES"/>
|
||||||
<includegraph visible="$INCLUDE_GRAPH"/>
|
<includegraph visible="$INCLUDE_GRAPH"/>
|
||||||
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
|
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
|
||||||
|
@ -115,7 +116,6 @@
|
||||||
<enums title=""/>
|
<enums title=""/>
|
||||||
<membergroups visible="yes"/>
|
<membergroups visible="yes"/>
|
||||||
</memberdecl>
|
</memberdecl>
|
||||||
<detaileddescription title=""/>
|
|
||||||
<memberdef>
|
<memberdef>
|
||||||
<functions title=""/>
|
<functions title=""/>
|
||||||
<variables title=""/>
|
<variables title=""/>
|
||||||
|
@ -128,8 +128,9 @@
|
||||||
|
|
||||||
<!-- Layout definition for a group page -->
|
<!-- Layout definition for a group page -->
|
||||||
<group>
|
<group>
|
||||||
<briefdescription visible="yes"/>
|
<briefdescription visible="no"/>
|
||||||
<groupgraph visible="$GROUP_GRAPHS"/>
|
<groupgraph visible="$GROUP_GRAPHS"/>
|
||||||
|
<detaileddescription title=""/>
|
||||||
<memberdecl>
|
<memberdecl>
|
||||||
<classes visible="yes" title=""/>
|
<classes visible="yes" title=""/>
|
||||||
<namespaces visible="yes" title=""/>
|
<namespaces visible="yes" title=""/>
|
||||||
|
@ -151,7 +152,6 @@
|
||||||
<friends title=""/>
|
<friends title=""/>
|
||||||
<membergroups visible="yes"/>
|
<membergroups visible="yes"/>
|
||||||
</memberdecl>
|
</memberdecl>
|
||||||
<detaileddescription title=""/>
|
|
||||||
<memberdef>
|
<memberdef>
|
||||||
<pagedocs/>
|
<pagedocs/>
|
||||||
<functions title=""/>
|
<functions title=""/>
|
||||||
|
@ -173,12 +173,12 @@
|
||||||
|
|
||||||
<!-- Layout definition for a directory page -->
|
<!-- Layout definition for a directory page -->
|
||||||
<directory>
|
<directory>
|
||||||
<briefdescription visible="yes"/>
|
<briefdescription visible="no"/>
|
||||||
<directorygraph visible="yes"/>
|
<directorygraph visible="yes"/>
|
||||||
|
<detaileddescription title=""/>
|
||||||
<memberdecl>
|
<memberdecl>
|
||||||
<dirs visible="yes"/>
|
<dirs visible="yes"/>
|
||||||
<files visible="yes"/>
|
<files visible="yes"/>
|
||||||
</memberdecl>
|
</memberdecl>
|
||||||
<detaileddescription title=""/>
|
|
||||||
</directory>
|
</directory>
|
||||||
</doxygenlayout>
|
</doxygenlayout>
|
||||||
|
|
|
@ -5,6 +5,7 @@ HALSRC = ${CHIBIOS}/os/hal/src/hal.c \
|
||||||
${CHIBIOS}/os/hal/src/can.c \
|
${CHIBIOS}/os/hal/src/can.c \
|
||||||
${CHIBIOS}/os/hal/src/gpt.c \
|
${CHIBIOS}/os/hal/src/gpt.c \
|
||||||
${CHIBIOS}/os/hal/src/i2c.c \
|
${CHIBIOS}/os/hal/src/i2c.c \
|
||||||
|
${CHIBIOS}/os/hal/src/icu.c \
|
||||||
${CHIBIOS}/os/hal/src/mac.c \
|
${CHIBIOS}/os/hal/src/mac.c \
|
||||||
${CHIBIOS}/os/hal/src/pal.c \
|
${CHIBIOS}/os/hal/src/pal.c \
|
||||||
${CHIBIOS}/os/hal/src/pwm.c \
|
${CHIBIOS}/os/hal/src/pwm.c \
|
||||||
|
|
|
@ -39,6 +39,7 @@
|
||||||
#include "can.h"
|
#include "can.h"
|
||||||
#include "gpt.h"
|
#include "gpt.h"
|
||||||
#include "i2c.h"
|
#include "i2c.h"
|
||||||
|
#include "icu.h"
|
||||||
#include "mac.h"
|
#include "mac.h"
|
||||||
#include "pwm.h"
|
#include "pwm.h"
|
||||||
#include "serial.h"
|
#include "serial.h"
|
||||||
|
|
|
@ -48,40 +48,40 @@
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GPT1 driver identifier.
|
* @brief GPTD1 driver identifier.
|
||||||
* @note The driver GPT1 allocates the complex timer TIM1 when enabled.
|
* @note The driver GPTD1 allocates the complex timer TIM1 when enabled.
|
||||||
*/
|
*/
|
||||||
#if STM32_GPT_USE_TIM1 || defined(__DOXYGEN__)
|
#if STM32_GPT_USE_TIM1 || defined(__DOXYGEN__)
|
||||||
GPTDriver GPTD1;
|
GPTDriver GPTD1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GPT2 driver identifier.
|
* @brief GPTD2 driver identifier.
|
||||||
* @note The driver GPT2 allocates the timer TIM2 when enabled.
|
* @note The driver GPTD2 allocates the timer TIM2 when enabled.
|
||||||
*/
|
*/
|
||||||
#if STM32_GPT_USE_TIM2 || defined(__DOXYGEN__)
|
#if STM32_GPT_USE_TIM2 || defined(__DOXYGEN__)
|
||||||
GPTDriver GPTD2;
|
GPTDriver GPTD2;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GPT3 driver identifier.
|
* @brief GPTD3 driver identifier.
|
||||||
* @note The driver GPT3 allocates the timer TIM3 when enabled.
|
* @note The driver GPTD3 allocates the timer TIM3 when enabled.
|
||||||
*/
|
*/
|
||||||
#if STM32_GPT_USE_TIM3 || defined(__DOXYGEN__)
|
#if STM32_GPT_USE_TIM3 || defined(__DOXYGEN__)
|
||||||
GPTDriver GPTD3;
|
GPTDriver GPTD3;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GPT4 driver identifier.
|
* @brief GPTD4 driver identifier.
|
||||||
* @note The driver GPT4 allocates the timer TIM4 when enabled.
|
* @note The driver GPTD4 allocates the timer TIM4 when enabled.
|
||||||
*/
|
*/
|
||||||
#if STM32_GPT_USE_TIM4 || defined(__DOXYGEN__)
|
#if STM32_GPT_USE_TIM4 || defined(__DOXYGEN__)
|
||||||
GPTDriver GPTD4;
|
GPTDriver GPTD4;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GPT5 driver identifier.
|
* @brief GPTD5 driver identifier.
|
||||||
* @note The driver GPT5 allocates the timer TIM5 when enabled.
|
* @note The driver GPTD5 allocates the timer TIM5 when enabled.
|
||||||
*/
|
*/
|
||||||
#if STM32_GPT_USE_TIM5 || defined(__DOXYGEN__)
|
#if STM32_GPT_USE_TIM5 || defined(__DOXYGEN__)
|
||||||
GPTDriver GPTD5;
|
GPTDriver GPTD5;
|
||||||
|
|
|
@ -40,8 +40,8 @@
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GPT1 driver enable switch.
|
* @brief GPTD1 driver enable switch.
|
||||||
* @details If set to @p TRUE the support for GPT1 is included.
|
* @details If set to @p TRUE the support for GPTD1 is included.
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_GPT_USE_TIM1) || defined(__DOXYGEN__)
|
#if !defined(STM32_GPT_USE_TIM1) || defined(__DOXYGEN__)
|
||||||
|
@ -49,8 +49,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GPT2 driver enable switch.
|
* @brief GPTD2 driver enable switch.
|
||||||
* @details If set to @p TRUE the support for GPT2 is included.
|
* @details If set to @p TRUE the support for GPTD2 is included.
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_GPT_USE_TIM2) || defined(__DOXYGEN__)
|
#if !defined(STM32_GPT_USE_TIM2) || defined(__DOXYGEN__)
|
||||||
|
@ -58,8 +58,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GPT3 driver enable switch.
|
* @brief GPTD3 driver enable switch.
|
||||||
* @details If set to @p TRUE the support for GPT3 is included.
|
* @details If set to @p TRUE the support for GPTD3 is included.
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_GPT_USE_TIM3) || defined(__DOXYGEN__)
|
#if !defined(STM32_GPT_USE_TIM3) || defined(__DOXYGEN__)
|
||||||
|
@ -67,8 +67,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GPT4 driver enable switch.
|
* @brief GPTD4 driver enable switch.
|
||||||
* @details If set to @p TRUE the support for GPT4 is included.
|
* @details If set to @p TRUE the support for GPTD4 is included.
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_GPT_USE_TIM4) || defined(__DOXYGEN__)
|
#if !defined(STM32_GPT_USE_TIM4) || defined(__DOXYGEN__)
|
||||||
|
@ -76,8 +76,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GPT5 driver enable switch.
|
* @brief GPTD5 driver enable switch.
|
||||||
* @details If set to @p TRUE the support for GPT5 is included.
|
* @details If set to @p TRUE the support for GPTD5 is included.
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_GPT_USE_TIM5) || defined(__DOXYGEN__)
|
#if !defined(STM32_GPT_USE_TIM5) || defined(__DOXYGEN__)
|
||||||
|
@ -85,35 +85,35 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GPT1 interrupt priority level setting.
|
* @brief GPTD1 interrupt priority level setting.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_GPT_TIM1_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
#if !defined(STM32_GPT_TIM1_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||||
#define STM32_GPT_TIM1_IRQ_PRIORITY 7
|
#define STM32_GPT_TIM1_IRQ_PRIORITY 7
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GPT2 interrupt priority level setting.
|
* @brief GPTD2 interrupt priority level setting.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_GPT_TIM2_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
#if !defined(STM32_GPT_TIM2_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||||
#define STM32_GPT_TIM2_IRQ_PRIORITY 7
|
#define STM32_GPT_TIM2_IRQ_PRIORITY 7
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GPT3 interrupt priority level setting.
|
* @brief GPTD3 interrupt priority level setting.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_GPT_TIM3_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
#if !defined(STM32_GPT_TIM3_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||||
#define STM32_GPT_TIM3_IRQ_PRIORITY 7
|
#define STM32_GPT_TIM3_IRQ_PRIORITY 7
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GPT4 interrupt priority level setting.
|
* @brief GPTD4 interrupt priority level setting.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_GPT_TIM4_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
#if !defined(STM32_GPT_TIM4_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||||
#define STM32_GPT_TIM4_IRQ_PRIORITY 7
|
#define STM32_GPT_TIM4_IRQ_PRIORITY 7
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief GPT5 interrupt priority level setting.
|
* @brief GPTD5 interrupt priority level setting.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_GPT_TIM5_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
#if !defined(STM32_GPT_TIM5_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||||
#define STM32_GPT_TIM5_IRQ_PRIORITY 7
|
#define STM32_GPT_TIM5_IRQ_PRIORITY 7
|
||||||
|
@ -206,6 +206,9 @@ struct GPTDriver {
|
||||||
* @brief Current configuration data.
|
* @brief Current configuration data.
|
||||||
*/
|
*/
|
||||||
const GPTConfig *config;
|
const GPTConfig *config;
|
||||||
|
#if defined(GPT_DRIVER_EXT_FIELDS)
|
||||||
|
GPT_DRIVER_EXT_FIELDS
|
||||||
|
#endif
|
||||||
/* End of the mandatory fields.*/
|
/* End of the mandatory fields.*/
|
||||||
/**
|
/**
|
||||||
* @brief Timer base clock.
|
* @brief Timer base clock.
|
||||||
|
|
|
@ -36,13 +36,45 @@
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief ICU1 driver identifier.
|
* @brief ICUD1 driver identifier.
|
||||||
* @note The driver ICUD1 allocates the complex timer TIM1 when enabled.
|
* @note The driver ICUD1 allocates the complex timer TIM1 when enabled.
|
||||||
*/
|
*/
|
||||||
#if STM32_ICU_USE_TIM1 || defined(__DOXYGEN__)
|
#if STM32_ICU_USE_TIM1 || defined(__DOXYGEN__)
|
||||||
ICUDriver ICUD1;
|
ICUDriver ICUD1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ICUD2 driver identifier.
|
||||||
|
* @note The driver ICUD1 allocates the timer TIM2 when enabled.
|
||||||
|
*/
|
||||||
|
#if STM32_ICU_USE_TIM2 || defined(__DOXYGEN__)
|
||||||
|
ICUDriver ICUD2;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ICUD3 driver identifier.
|
||||||
|
* @note The driver ICUD1 allocates the timer TIM3 when enabled.
|
||||||
|
*/
|
||||||
|
#if STM32_ICU_USE_TIM3 || defined(__DOXYGEN__)
|
||||||
|
ICUDriver ICUD3;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ICUD4 driver identifier.
|
||||||
|
* @note The driver ICUD4 allocates the timer TIM4 when enabled.
|
||||||
|
*/
|
||||||
|
#if STM32_ICU_USE_TIM4 || defined(__DOXYGEN__)
|
||||||
|
ICUDriver ICUD4;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ICUD5 driver identifier.
|
||||||
|
* @note The driver ICUD5 allocates the timer TIM5 when enabled.
|
||||||
|
*/
|
||||||
|
#if STM32_ICU_USE_TIM5 || defined(__DOXYGEN__)
|
||||||
|
ICUDriver ICUD5;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
/* Driver local variables. */
|
/* Driver local variables. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
@ -51,29 +83,27 @@ ICUDriver ICUD1;
|
||||||
/* Driver local functions. */
|
/* Driver local functions. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Shared IRQ handler.
|
||||||
|
*
|
||||||
|
* @param[in] icup pointer to the @p ICUDriver object
|
||||||
|
*/
|
||||||
|
static void icu_lld_serve_interrupt(ICUDriver *icup) {
|
||||||
|
uint16_t sr;
|
||||||
|
|
||||||
|
sr = TIM1->SR & TIM1->DIER;
|
||||||
|
icup->tim->SR = 0;
|
||||||
|
if ((sr & TIM_SR_CC1IF) != 0)
|
||||||
|
icup->config->period_cb(icup);
|
||||||
|
if ((sr & TIM_SR_CC2IF) != 0)
|
||||||
|
icup->config->width_cb(icup);
|
||||||
|
}
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
/* Driver interrupt handlers. */
|
/* Driver interrupt handlers. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
#if STM32_ICU_USE_TIM1
|
#if STM32_ICU_USE_TIM1
|
||||||
/**
|
|
||||||
* @brief TIM1 update interrupt handler.
|
|
||||||
* @note It is assumed that this interrupt is only activated if the callback
|
|
||||||
* pointer is not equal to @p NULL in order to not perform an extra
|
|
||||||
* check in a potentially critical interrupt handler.
|
|
||||||
*
|
|
||||||
* @isr
|
|
||||||
*/
|
|
||||||
CH_IRQ_HANDLER(TIM1_UP_IRQHandler) {
|
|
||||||
|
|
||||||
CH_IRQ_PROLOGUE();
|
|
||||||
|
|
||||||
TIM1->SR = ~TIM_SR_UIF;
|
|
||||||
ICUD1.config->callback(&ICUD1);
|
|
||||||
|
|
||||||
CH_IRQ_EPILOGUE();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief TIM1 compare interrupt handler.
|
* @brief TIM1 compare interrupt handler.
|
||||||
* @note It is assumed that the various sources are only activated if the
|
* @note It is assumed that the various sources are only activated if the
|
||||||
|
@ -83,21 +113,91 @@ CH_IRQ_HANDLER(TIM1_UP_IRQHandler) {
|
||||||
* @isr
|
* @isr
|
||||||
*/
|
*/
|
||||||
CH_IRQ_HANDLER(TIM1_CC_IRQHandler) {
|
CH_IRQ_HANDLER(TIM1_CC_IRQHandler) {
|
||||||
uint16_t sr;
|
|
||||||
|
|
||||||
CH_IRQ_PROLOGUE();
|
CH_IRQ_PROLOGUE();
|
||||||
|
|
||||||
sr = TIM1->SR & TIM1->DIER;
|
icu_lld_serve_interrupt(&ICUD1);
|
||||||
TIM1->SR = ~(TIM_SR_CC1IF | TIM_SR_CC2IF | TIM_SR_CC3IF | TIM_SR_CC4IF);
|
|
||||||
if ((sr & TIM_SR_CC1IF) != 0)
|
|
||||||
ICUD1.config->channels[0].callback(&ICUD1);
|
|
||||||
if ((sr & TIM_SR_CC2IF) != 0)
|
|
||||||
ICUD1.config->channels[1].callback(&ICUD1);
|
|
||||||
|
|
||||||
CH_IRQ_EPILOGUE();
|
CH_IRQ_EPILOGUE();
|
||||||
}
|
}
|
||||||
#endif /* STM32_ICU_USE_TIM1 */
|
#endif /* STM32_ICU_USE_TIM1 */
|
||||||
|
|
||||||
|
#if STM32_ICU_USE_TIM2
|
||||||
|
/**
|
||||||
|
* @brief TIM2 compare interrupt handler.
|
||||||
|
* @note It is assumed that the various sources are only activated if the
|
||||||
|
* associated callback pointer is not equal to @p NULL in order to not
|
||||||
|
* perform an extra check in a potentially critical interrupt handler.
|
||||||
|
*
|
||||||
|
* @isr
|
||||||
|
*/
|
||||||
|
CH_IRQ_HANDLER(TIM2_IRQHandler) {
|
||||||
|
|
||||||
|
CH_IRQ_PROLOGUE();
|
||||||
|
|
||||||
|
icu_lld_serve_interrupt(&ICUD2);
|
||||||
|
|
||||||
|
CH_IRQ_EPILOGUE();
|
||||||
|
}
|
||||||
|
#endif /* STM32_ICU_USE_TIM2 */
|
||||||
|
|
||||||
|
#if STM32_ICU_USE_TIM3
|
||||||
|
/**
|
||||||
|
* @brief TIM3 compare interrupt handler.
|
||||||
|
* @note It is assumed that the various sources are only activated if the
|
||||||
|
* associated callback pointer is not equal to @p NULL in order to not
|
||||||
|
* perform an extra check in a potentially critical interrupt handler.
|
||||||
|
*
|
||||||
|
* @isr
|
||||||
|
*/
|
||||||
|
CH_IRQ_HANDLER(TIM3_IRQHandler) {
|
||||||
|
|
||||||
|
CH_IRQ_PROLOGUE();
|
||||||
|
|
||||||
|
icu_lld_serve_interrupt(&ICUD3);
|
||||||
|
|
||||||
|
CH_IRQ_EPILOGUE();
|
||||||
|
}
|
||||||
|
#endif /* STM32_ICU_USE_TIM3 */
|
||||||
|
|
||||||
|
#if STM32_ICU_USE_TIM4
|
||||||
|
/**
|
||||||
|
* @brief TIM4 compare interrupt handler.
|
||||||
|
* @note It is assumed that the various sources are only activated if the
|
||||||
|
* associated callback pointer is not equal to @p NULL in order to not
|
||||||
|
* perform an extra check in a potentially critical interrupt handler.
|
||||||
|
*
|
||||||
|
* @isr
|
||||||
|
*/
|
||||||
|
CH_IRQ_HANDLER(TIM4_IRQHandler) {
|
||||||
|
|
||||||
|
CH_IRQ_PROLOGUE();
|
||||||
|
|
||||||
|
icu_lld_serve_interrupt(&ICUD4);
|
||||||
|
|
||||||
|
CH_IRQ_EPILOGUE();
|
||||||
|
}
|
||||||
|
#endif /* STM32_ICU_USE_TIM4 */
|
||||||
|
|
||||||
|
#if STM32_ICU_USE_TIM5
|
||||||
|
/**
|
||||||
|
* @brief TIM5 compare interrupt handler.
|
||||||
|
* @note It is assumed that the various sources are only activated if the
|
||||||
|
* associated callback pointer is not equal to @p NULL in order to not
|
||||||
|
* perform an extra check in a potentially critical interrupt handler.
|
||||||
|
*
|
||||||
|
* @isr
|
||||||
|
*/
|
||||||
|
CH_IRQ_HANDLER(TIM5_IRQHandler) {
|
||||||
|
|
||||||
|
CH_IRQ_PROLOGUE();
|
||||||
|
|
||||||
|
icu_lld_serve_interrupt(&ICUD5);
|
||||||
|
|
||||||
|
CH_IRQ_EPILOGUE();
|
||||||
|
}
|
||||||
|
#endif /* STM32_ICU_USE_TIM5 */
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
/* Driver exported functions. */
|
/* Driver exported functions. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
@ -114,6 +214,30 @@ void icu_lld_init(void) {
|
||||||
icuObjectInit(&ICUD1);
|
icuObjectInit(&ICUD1);
|
||||||
ICUD1.tim = TIM1;
|
ICUD1.tim = TIM1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if STM32_ICU_USE_TIM2
|
||||||
|
/* Driver initialization.*/
|
||||||
|
icuObjectInit(&ICUD2);
|
||||||
|
ICUD2.tim = TIM2;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if STM32_ICU_USE_TIM3
|
||||||
|
/* Driver initialization.*/
|
||||||
|
icuObjectInit(&ICUD3);
|
||||||
|
ICUD3.tim = TIM3;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if STM32_ICU_USE_TIM4
|
||||||
|
/* Driver initialization.*/
|
||||||
|
icuObjectInit(&ICUD4);
|
||||||
|
ICUD4.tim = TIM4;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if STM32_ICU_USE_TIM5
|
||||||
|
/* Driver initialization.*/
|
||||||
|
icuObjectInit(&ICUD5);
|
||||||
|
ICUD5.tim = TIM5;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -132,11 +256,46 @@ void icu_lld_start(ICUDriver *icup) {
|
||||||
RCC->APB2ENR |= RCC_APB2ENR_TIM1EN;
|
RCC->APB2ENR |= RCC_APB2ENR_TIM1EN;
|
||||||
RCC->APB2RSTR = RCC_APB2RSTR_TIM1RST;
|
RCC->APB2RSTR = RCC_APB2RSTR_TIM1RST;
|
||||||
RCC->APB2RSTR = 0;
|
RCC->APB2RSTR = 0;
|
||||||
NVICEnableVector(TIM1_UP_IRQn,
|
|
||||||
CORTEX_PRIORITY_MASK(STM32_ICU_TIM1_IRQ_PRIORITY));
|
|
||||||
NVICEnableVector(TIM1_CC_IRQn,
|
NVICEnableVector(TIM1_CC_IRQn,
|
||||||
CORTEX_PRIORITY_MASK(STM32_ICU_TIM1_IRQ_PRIORITY));
|
CORTEX_PRIORITY_MASK(STM32_ICU_TIM1_IRQ_PRIORITY));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
#if STM32_ICU_USE_TIM2
|
||||||
|
if (&ICUD2 == icup) {
|
||||||
|
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
|
||||||
|
RCC->APB1RSTR = RCC_APB1RSTR_TIM2RST;
|
||||||
|
RCC->APB1RSTR = 0;
|
||||||
|
NVICEnableVector(TIM2_IRQn,
|
||||||
|
CORTEX_PRIORITY_MASK(STM32_ICU_TIM2_IRQ_PRIORITY));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if STM32_ICU_USE_TIM3
|
||||||
|
if (&ICUD3 == icup) {
|
||||||
|
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
|
||||||
|
RCC->APB1RSTR = RCC_APB1RSTR_TIM3RST;
|
||||||
|
RCC->APB1RSTR = 0;
|
||||||
|
NVICEnableVector(TIM3_IRQn,
|
||||||
|
CORTEX_PRIORITY_MASK(STM32_ICU_TIM3_IRQ_PRIORITY));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if STM32_ICU_USE_TIM4
|
||||||
|
if (&ICUD4 == icup) {
|
||||||
|
RCC->APB1ENR |= RCC_APB1ENR_TIM4EN;
|
||||||
|
RCC->APB1RSTR = RCC_APB1RSTR_TIM4RST;
|
||||||
|
RCC->APB1RSTR = 0;
|
||||||
|
NVICEnableVector(TIM4_IRQn,
|
||||||
|
CORTEX_PRIORITY_MASK(STM32_ICU_TIM4_IRQ_PRIORITY));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if STM32_ICU_USE_TIM5
|
||||||
|
if (&ICUD5 == icup) {
|
||||||
|
RCC->APB1ENR |= RCC_APB1ENR_TIM5EN;
|
||||||
|
RCC->APB1RSTR = RCC_APB1RSTR_TIM5RST;
|
||||||
|
RCC->APB1RSTR = 0;
|
||||||
|
NVICEnableVector(TIM5_IRQn,
|
||||||
|
CORTEX_PRIORITY_MASK(STM32_ICU_TIM5_IRQ_PRIORITY));
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,7 +312,7 @@ void icu_lld_start(ICUDriver *icup) {
|
||||||
/* SMCR_TS = 101, input is TI1FP1.
|
/* SMCR_TS = 101, input is TI1FP1.
|
||||||
SMCR_SMS = 100, reset on rising edge.*/
|
SMCR_SMS = 100, reset on rising edge.*/
|
||||||
icup->tim->SMCR = TIM_SMCR_TS_2 | TIM_SMCR_TS_0 |
|
icup->tim->SMCR = TIM_SMCR_TS_2 | TIM_SMCR_TS_0 |
|
||||||
TIM_SMCR_SMS_2.
|
TIM_SMCR_SMS_2;
|
||||||
/* The CCER settings depend on the selected trigger mode.
|
/* The CCER settings depend on the selected trigger mode.
|
||||||
ICU_INPUT_ACTIVE_HIGH: Active on rising edge, idle on falling edge.
|
ICU_INPUT_ACTIVE_HIGH: Active on rising edge, idle on falling edge.
|
||||||
ICU_INPUT_ACTIVE_LOW: Active on falling edge, idle on rising edge.*/
|
ICU_INPUT_ACTIVE_LOW: Active on falling edge, idle on rising edge.*/
|
||||||
|
@ -161,7 +320,7 @@ void icu_lld_start(ICUDriver *icup) {
|
||||||
icup->tim->CCER = TIM_CCER_CC1E |
|
icup->tim->CCER = TIM_CCER_CC1E |
|
||||||
TIM_CCER_CC2E | TIM_CCER_CC2P;
|
TIM_CCER_CC2E | TIM_CCER_CC2P;
|
||||||
else
|
else
|
||||||
icup->tim->CCER = TIM_CCER_CC1E | TIM_CCER_CC1P
|
icup->tim->CCER = TIM_CCER_CC1E | TIM_CCER_CC1P |
|
||||||
TIM_CCER_CC2E;
|
TIM_CCER_CC2E;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -181,11 +340,35 @@ void icu_lld_stop(ICUDriver *icup) {
|
||||||
|
|
||||||
#if STM32_ICU_USE_TIM1
|
#if STM32_ICU_USE_TIM1
|
||||||
if (&ICUD1 == icup) {
|
if (&ICUD1 == icup) {
|
||||||
NVICDisableVector(TIM1_UP_IRQn);
|
NVICDisableVector(TIM1_CC_IRQn);
|
||||||
RCC->APB2ENR &= ~RCC_APB2ENR_TIM1EN;
|
RCC->APB2ENR &= ~RCC_APB2ENR_TIM1EN;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
#if STM32_ICU_USE_TIM2
|
||||||
|
if (&ICUD2 == icup) {
|
||||||
|
NVICDisableVector(TIM2_IRQn);
|
||||||
|
RCC->APB1ENR &= ~RCC_APB1ENR_TIM2EN;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if STM32_ICU_USE_TIM3
|
||||||
|
if (&ICUD3 == icup) {
|
||||||
|
NVICDisableVector(TIM3_IRQn);
|
||||||
|
RCC->APB1ENR &= ~RCC_APB1ENR_TIM3EN;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if STM32_ICU_USE_TIM4
|
||||||
|
if (&ICUD4 == icup) {
|
||||||
|
NVICDisableVector(TIM4_IRQn);
|
||||||
|
RCC->APB1ENR &= ~RCC_APB1ENR_TIM4EN;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if STM32_ICU_USE_TIM5
|
||||||
|
if (&ICUD5 == icup) {
|
||||||
|
NVICDisableVector(TIM5_IRQn);
|
||||||
|
RCC->APB1ENR &= ~RCC_APB1ENR_TIM5EN;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -198,7 +381,10 @@ void icu_lld_stop(ICUDriver *icup) {
|
||||||
void icu_lld_enable(ICUDriver *icup) {
|
void icu_lld_enable(ICUDriver *icup) {
|
||||||
|
|
||||||
icup->tim->SR = 0; /* Clear pending IRQs (if any). */
|
icup->tim->SR = 0; /* Clear pending IRQs (if any). */
|
||||||
icup->tim->DIER = TIM_DIER_CC1IE | TIM_DIER_CC2IE;
|
if (icup->config->period_cb != NULL)
|
||||||
|
icup->tim->DIER |= TIM_DIER_CC1IE;
|
||||||
|
if (icup->config->width_cb != NULL)
|
||||||
|
icup->tim->DIER |= TIM_DIER_CC2IE;
|
||||||
icup->tim->CR1 = TIM_CR1_URS | TIM_CR1_CEN;
|
icup->tim->CR1 = TIM_CR1_URS | TIM_CR1_CEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,77 @@
|
||||||
#define STM32_ICU_USE_TIM1 TRUE
|
#define STM32_ICU_USE_TIM1 TRUE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ICUD2 driver enable switch.
|
||||||
|
* @details If set to @p TRUE the support for ICUD2 is included.
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
*/
|
||||||
|
#if !defined(STM32_ICU_USE_TIM2) || defined(__DOXYGEN__)
|
||||||
|
#define STM32_ICU_USE_TIM2 TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ICUD3 driver enable switch.
|
||||||
|
* @details If set to @p TRUE the support for ICUD3 is included.
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
*/
|
||||||
|
#if !defined(STM32_ICU_USE_TIM3) || defined(__DOXYGEN__)
|
||||||
|
#define STM32_ICU_USE_TIM3 TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ICUD4 driver enable switch.
|
||||||
|
* @details If set to @p TRUE the support for ICUD4 is included.
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
*/
|
||||||
|
#if !defined(STM32_ICU_USE_TIM4) || defined(__DOXYGEN__)
|
||||||
|
#define STM32_ICU_USE_TIM4 TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ICUD5 driver enable switch.
|
||||||
|
* @details If set to @p TRUE the support for ICUD5 is included.
|
||||||
|
* @note The default is @p TRUE.
|
||||||
|
*/
|
||||||
|
#if !defined(STM32_ICU_USE_TIM5) || defined(__DOXYGEN__)
|
||||||
|
#define STM32_ICU_USE_TIM5 TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ICUD1 interrupt priority level setting.
|
||||||
|
*/
|
||||||
|
#if !defined(STM32_ICU_TIM1_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||||
|
#define STM32_ICU_TIM1_IRQ_PRIORITY 7
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ICUD2 interrupt priority level setting.
|
||||||
|
*/
|
||||||
|
#if !defined(STM32_ICU_TIM2_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||||
|
#define STM32_ICU_TIM2_IRQ_PRIORITY 7
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ICUD3 interrupt priority level setting.
|
||||||
|
*/
|
||||||
|
#if !defined(STM32_ICU_TIM3_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||||
|
#define STM32_ICU_TIM3_IRQ_PRIORITY 7
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ICUD4 interrupt priority level setting.
|
||||||
|
*/
|
||||||
|
#if !defined(STM32_ICU_TIM4_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||||
|
#define STM32_ICU_TIM4_IRQ_PRIORITY 7
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ICUD5 interrupt priority level setting.
|
||||||
|
*/
|
||||||
|
#if !defined(STM32_ICU_TIM5_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||||
|
#define STM32_ICU_TIM5_IRQ_PRIORITY 7
|
||||||
|
#endif
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
/* Derived constants and error checks. */
|
/* Derived constants and error checks. */
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
@ -143,6 +214,9 @@ struct ICUDriver {
|
||||||
* @brief Current configuration data.
|
* @brief Current configuration data.
|
||||||
*/
|
*/
|
||||||
const ICUConfig *config;
|
const ICUConfig *config;
|
||||||
|
#if defined(ICU_DRIVER_EXT_FIELDS)
|
||||||
|
ICU_DRIVER_EXT_FIELDS
|
||||||
|
#endif
|
||||||
/* End of the mandatory fields.*/
|
/* End of the mandatory fields.*/
|
||||||
/**
|
/**
|
||||||
* @brief Pointer to the TIMx registers block.
|
* @brief Pointer to the TIMx registers block.
|
||||||
|
@ -209,6 +283,22 @@ struct ICUDriver {
|
||||||
extern ICUDriver ICUD1;
|
extern ICUDriver ICUD1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if STM32_ICU_USE_TIM2 && !defined(__DOXYGEN__)
|
||||||
|
extern ICUDriver ICUD2;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if STM32_ICU_USE_TIM3 && !defined(__DOXYGEN__)
|
||||||
|
extern ICUDriver ICUD3;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if STM32_ICU_USE_TIM4 && !defined(__DOXYGEN__)
|
||||||
|
extern ICUDriver ICUD4;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if STM32_ICU_USE_TIM5 && !defined(__DOXYGEN__)
|
||||||
|
extern ICUDriver ICUD5;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
@ -217,8 +307,6 @@ extern "C" {
|
||||||
void icu_lld_stop(ICUDriver *icup);
|
void icu_lld_stop(ICUDriver *icup);
|
||||||
void icu_lld_enable(ICUDriver *icup);
|
void icu_lld_enable(ICUDriver *icup);
|
||||||
void icu_lld_disable(ICUDriver *icup);
|
void icu_lld_disable(ICUDriver *icup);
|
||||||
icucnt_t icu_lld_get_width(ICUDriver *icup);
|
|
||||||
icucnt_t icu_lld_get_period(ICUDriver *icup);
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -3,6 +3,7 @@ PLATFORMSRC = ${CHIBIOS}/os/hal/platforms/STM32/hal_lld.c \
|
||||||
${CHIBIOS}/os/hal/platforms/STM32/adc_lld.c \
|
${CHIBIOS}/os/hal/platforms/STM32/adc_lld.c \
|
||||||
${CHIBIOS}/os/hal/platforms/STM32/can_lld.c \
|
${CHIBIOS}/os/hal/platforms/STM32/can_lld.c \
|
||||||
${CHIBIOS}/os/hal/platforms/STM32/gpt_lld.c \
|
${CHIBIOS}/os/hal/platforms/STM32/gpt_lld.c \
|
||||||
|
${CHIBIOS}/os/hal/platforms/STM32/icu_lld.c \
|
||||||
${CHIBIOS}/os/hal/platforms/STM32/pal_lld.c \
|
${CHIBIOS}/os/hal/platforms/STM32/pal_lld.c \
|
||||||
${CHIBIOS}/os/hal/platforms/STM32/pwm_lld.c \
|
${CHIBIOS}/os/hal/platforms/STM32/pwm_lld.c \
|
||||||
${CHIBIOS}/os/hal/platforms/STM32/serial_lld.c \
|
${CHIBIOS}/os/hal/platforms/STM32/serial_lld.c \
|
||||||
|
|
|
@ -48,40 +48,40 @@
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief PWM1 driver identifier.
|
* @brief PWMD1 driver identifier.
|
||||||
* @note The driver PWM1 allocates the complex timer TIM1 when enabled.
|
* @note The driver PWMD1 allocates the complex timer TIM1 when enabled.
|
||||||
*/
|
*/
|
||||||
#if STM32_PWM_USE_TIM1 || defined(__DOXYGEN__)
|
#if STM32_PWM_USE_TIM1 || defined(__DOXYGEN__)
|
||||||
PWMDriver PWMD1;
|
PWMDriver PWMD1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief PWM2 driver identifier.
|
* @brief PWMD2 driver identifier.
|
||||||
* @note The driver PWM2 allocates the timer TIM2 when enabled.
|
* @note The driver PWMD2 allocates the timer TIM2 when enabled.
|
||||||
*/
|
*/
|
||||||
#if STM32_PWM_USE_TIM2 || defined(__DOXYGEN__)
|
#if STM32_PWM_USE_TIM2 || defined(__DOXYGEN__)
|
||||||
PWMDriver PWMD2;
|
PWMDriver PWMD2;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief PWM3 driver identifier.
|
* @brief PWMD3 driver identifier.
|
||||||
* @note The driver PWM3 allocates the timer TIM3 when enabled.
|
* @note The driver PWMD3 allocates the timer TIM3 when enabled.
|
||||||
*/
|
*/
|
||||||
#if STM32_PWM_USE_TIM3 || defined(__DOXYGEN__)
|
#if STM32_PWM_USE_TIM3 || defined(__DOXYGEN__)
|
||||||
PWMDriver PWMD3;
|
PWMDriver PWMD3;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief PWM4 driver identifier.
|
* @brief PWMD4 driver identifier.
|
||||||
* @note The driver PWM4 allocates the timer TIM4 when enabled.
|
* @note The driver PWMD4 allocates the timer TIM4 when enabled.
|
||||||
*/
|
*/
|
||||||
#if STM32_PWM_USE_TIM4 || defined(__DOXYGEN__)
|
#if STM32_PWM_USE_TIM4 || defined(__DOXYGEN__)
|
||||||
PWMDriver PWMD4;
|
PWMDriver PWMD4;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief PWM5 driver identifier.
|
* @brief PWMD5 driver identifier.
|
||||||
* @note The driver PWM5 allocates the timer TIM5 when enabled.
|
* @note The driver PWMD5 allocates the timer TIM5 when enabled.
|
||||||
*/
|
*/
|
||||||
#if STM32_PWM_USE_TIM5 || defined(__DOXYGEN__)
|
#if STM32_PWM_USE_TIM5 || defined(__DOXYGEN__)
|
||||||
PWMDriver PWMD5;
|
PWMDriver PWMD5;
|
||||||
|
|
|
@ -45,8 +45,8 @@
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief PWM1 driver enable switch.
|
* @brief PWMD1 driver enable switch.
|
||||||
* @details If set to @p TRUE the support for PWM1 is included.
|
* @details If set to @p TRUE the support for PWMD1 is included.
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_PWM_USE_TIM1) || defined(__DOXYGEN__)
|
#if !defined(STM32_PWM_USE_TIM1) || defined(__DOXYGEN__)
|
||||||
|
@ -54,8 +54,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief PWM2 driver enable switch.
|
* @brief PWMD2 driver enable switch.
|
||||||
* @details If set to @p TRUE the support for PWM2 is included.
|
* @details If set to @p TRUE the support for PWMD2 is included.
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_PWM_USE_TIM2) || defined(__DOXYGEN__)
|
#if !defined(STM32_PWM_USE_TIM2) || defined(__DOXYGEN__)
|
||||||
|
@ -63,8 +63,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief PWM3 driver enable switch.
|
* @brief PWMD3 driver enable switch.
|
||||||
* @details If set to @p TRUE the support for PWM3 is included.
|
* @details If set to @p TRUE the support for PWMD3 is included.
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_PWM_USE_TIM3) || defined(__DOXYGEN__)
|
#if !defined(STM32_PWM_USE_TIM3) || defined(__DOXYGEN__)
|
||||||
|
@ -72,8 +72,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief PWM4 driver enable switch.
|
* @brief PWMD4 driver enable switch.
|
||||||
* @details If set to @p TRUE the support for PWM4 is included.
|
* @details If set to @p TRUE the support for PWMD4 is included.
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_PWM_USE_TIM4) || defined(__DOXYGEN__)
|
#if !defined(STM32_PWM_USE_TIM4) || defined(__DOXYGEN__)
|
||||||
|
@ -81,8 +81,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief PWM5 driver enable switch.
|
* @brief PWMD5 driver enable switch.
|
||||||
* @details If set to @p TRUE the support for PWM5 is included.
|
* @details If set to @p TRUE the support for PWMD5 is included.
|
||||||
* @note The default is @p TRUE.
|
* @note The default is @p TRUE.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_PWM_USE_TIM5) || defined(__DOXYGEN__)
|
#if !defined(STM32_PWM_USE_TIM5) || defined(__DOXYGEN__)
|
||||||
|
@ -90,35 +90,35 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief PWM1 interrupt priority level setting.
|
* @brief PWMD1 interrupt priority level setting.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_PWM_TIM1_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
#if !defined(STM32_PWM_TIM1_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||||
#define STM32_PWM_TIM1_IRQ_PRIORITY 7
|
#define STM32_PWM_TIM1_IRQ_PRIORITY 7
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief PWM2 interrupt priority level setting.
|
* @brief PWMD2 interrupt priority level setting.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_PWM_TIM2_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
#if !defined(STM32_PWM_TIM2_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||||
#define STM32_PWM_TIM2_IRQ_PRIORITY 7
|
#define STM32_PWM_TIM2_IRQ_PRIORITY 7
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief PWM3 interrupt priority level setting.
|
* @brief PWMD3 interrupt priority level setting.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_PWM_TIM3_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
#if !defined(STM32_PWM_TIM3_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||||
#define STM32_PWM_TIM3_IRQ_PRIORITY 7
|
#define STM32_PWM_TIM3_IRQ_PRIORITY 7
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief PWM4 interrupt priority level setting.
|
* @brief PWMD4 interrupt priority level setting.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_PWM_TIM4_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
#if !defined(STM32_PWM_TIM4_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||||
#define STM32_PWM_TIM4_IRQ_PRIORITY 7
|
#define STM32_PWM_TIM4_IRQ_PRIORITY 7
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief PWM5 interrupt priority level setting.
|
* @brief PWMD5 interrupt priority level setting.
|
||||||
*/
|
*/
|
||||||
#if !defined(STM32_PWM_TIM5_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
#if !defined(STM32_PWM_TIM5_IRQ_PRIORITY) || defined(__DOXYGEN__)
|
||||||
#define STM32_PWM_TIM5_IRQ_PRIORITY 7
|
#define STM32_PWM_TIM5_IRQ_PRIORITY 7
|
||||||
|
|
|
@ -290,6 +290,9 @@ struct USBDriver {
|
||||||
* @brief Current USB device configuration.
|
* @brief Current USB device configuration.
|
||||||
*/
|
*/
|
||||||
uint8_t configuration;
|
uint8_t configuration;
|
||||||
|
#if defined(USB_DRIVER_EXT_FIELDS)
|
||||||
|
USB_DRIVER_EXT_FIELDS
|
||||||
|
#endif
|
||||||
/* End of the mandatory fields.*/
|
/* End of the mandatory fields.*/
|
||||||
/**
|
/**
|
||||||
* @brief Pointer to the next address in the packet memory.
|
* @brief Pointer to the next address in the packet memory.
|
||||||
|
|
|
@ -100,6 +100,9 @@ struct GPTDriver {
|
||||||
* @brief Current configuration data.
|
* @brief Current configuration data.
|
||||||
*/
|
*/
|
||||||
const GPTConfig *config;
|
const GPTConfig *config;
|
||||||
|
#if defined(GPT_DRIVER_EXT_FIELDS)
|
||||||
|
GPT_DRIVER_EXT_FIELDS
|
||||||
|
#endif
|
||||||
/* End of the mandatory fields.*/
|
/* End of the mandatory fields.*/
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -104,6 +104,9 @@ struct ICUDriver {
|
||||||
* @brief Current configuration data.
|
* @brief Current configuration data.
|
||||||
*/
|
*/
|
||||||
const ICUConfig *config;
|
const ICUConfig *config;
|
||||||
|
#if defined(ICU_DRIVER_EXT_FIELDS)
|
||||||
|
ICU_DRIVER_EXT_FIELDS
|
||||||
|
#endif
|
||||||
/* End of the mandatory fields.*/
|
/* End of the mandatory fields.*/
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -212,6 +212,9 @@ struct USBDriver {
|
||||||
* @brief Current USB device configuration.
|
* @brief Current USB device configuration.
|
||||||
*/
|
*/
|
||||||
uint8_t configuration;
|
uint8_t configuration;
|
||||||
|
#if defined(USB_DRIVER_EXT_FIELDS)
|
||||||
|
USB_DRIVER_EXT_FIELDS
|
||||||
|
#endif
|
||||||
/* End of the mandatory fields.*/
|
/* End of the mandatory fields.*/
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -151,7 +151,7 @@ extern "C" {
|
||||||
#endif
|
#endif
|
||||||
#if CH_DBG_ENABLE_TRACE || defined(__DOXYGEN__)
|
#if CH_DBG_ENABLE_TRACE || defined(__DOXYGEN__)
|
||||||
extern TraceBuffer trace_buffer;
|
extern TraceBuffer trace_buffer;
|
||||||
void trace_init(void);
|
void _trace_init(void);
|
||||||
void chDbgTrace(Thread *otp);
|
void chDbgTrace(Thread *otp);
|
||||||
#endif
|
#endif
|
||||||
#if CH_DBG_ENABLE_ASSERTS || CH_DBG_ENABLE_CHECKS || CH_DBG_ENABLE_STACK_CHECK
|
#if CH_DBG_ENABLE_ASSERTS || CH_DBG_ENABLE_CHECKS || CH_DBG_ENABLE_STACK_CHECK
|
||||||
|
|
|
@ -75,7 +75,7 @@ struct memory_heap {
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
void heap_init(void);
|
void _heap_init(void);
|
||||||
void chHeapInit(MemoryHeap *heapp, void *buf, size_t size);
|
void chHeapInit(MemoryHeap *heapp, void *buf, size_t size);
|
||||||
void *chHeapAlloc(MemoryHeap *heapp, size_t size);
|
void *chHeapAlloc(MemoryHeap *heapp, size_t size);
|
||||||
void chHeapFree(void *p);
|
void chHeapFree(void *p);
|
||||||
|
|
|
@ -67,7 +67,7 @@ typedef void *(*memgetfunc_t)(size_t size);
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
void core_init(void);
|
void _core_init(void);
|
||||||
void *chCoreAlloc(size_t size);
|
void *chCoreAlloc(size_t size);
|
||||||
void *chCoreAllocI(size_t size);
|
void *chCoreAllocI(size_t size);
|
||||||
size_t chCoreStatus(void);
|
size_t chCoreStatus(void);
|
||||||
|
|
|
@ -127,7 +127,7 @@ register Thread *currp asm(CH_CURRP_REGISTER_CACHE);
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
void scheduler_init(void);
|
void _scheduler_init(void);
|
||||||
#if !defined(PORT_OPTIMIZED_READYI)
|
#if !defined(PORT_OPTIMIZED_READYI)
|
||||||
Thread *chSchReadyI(Thread *tp);
|
Thread *chSchReadyI(Thread *tp);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -121,7 +121,7 @@ extern VTList vtlist;
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
void vt_init(void);
|
void _vt_init(void);
|
||||||
void chVTSetI(VirtualTimer *vtp, systime_t time, vtfunc_t vtfunc, void *par);
|
void chVTSetI(VirtualTimer *vtp, systime_t time, vtfunc_t vtfunc, void *par);
|
||||||
void chVTResetI(VirtualTimer *vtp);
|
void chVTResetI(VirtualTimer *vtp);
|
||||||
bool_t chTimeIsWithin(systime_t start, systime_t end);
|
bool_t chTimeIsWithin(systime_t start, systime_t end);
|
||||||
|
|
|
@ -46,7 +46,7 @@ TraceBuffer trace_buffer;
|
||||||
* @brief Trace circular buffer subsystem initialization.
|
* @brief Trace circular buffer subsystem initialization.
|
||||||
* @note Internal use only.
|
* @note Internal use only.
|
||||||
*/
|
*/
|
||||||
void trace_init(void) {
|
void _trace_init(void) {
|
||||||
|
|
||||||
trace_buffer.tb_size = TRACE_BUFFER_SIZE;
|
trace_buffer.tb_size = TRACE_BUFFER_SIZE;
|
||||||
trace_buffer.tb_ptr = &trace_buffer.tb_buffer[0];
|
trace_buffer.tb_ptr = &trace_buffer.tb_buffer[0];
|
||||||
|
|
|
@ -65,7 +65,7 @@ static MemoryHeap default_heap;
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
void heap_init(void) {
|
void _heap_init(void) {
|
||||||
default_heap.h_provider = chCoreAlloc;
|
default_heap.h_provider = chCoreAlloc;
|
||||||
default_heap.h_free.h.u.next = (union heap_header *)NULL;
|
default_heap.h_free.h.u.next = (union heap_header *)NULL;
|
||||||
default_heap.h_free.h.size = 0;
|
default_heap.h_free.h.size = 0;
|
||||||
|
|
|
@ -56,7 +56,7 @@ static uint8_t *endmem;
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
void core_init(void) {
|
void _core_init(void) {
|
||||||
#if CH_MEMCORE_SIZE == 0
|
#if CH_MEMCORE_SIZE == 0
|
||||||
extern uint8_t __heap_base__[];
|
extern uint8_t __heap_base__[];
|
||||||
extern uint8_t __heap_end__[];
|
extern uint8_t __heap_end__[];
|
||||||
|
|
|
@ -45,7 +45,7 @@ ReadyList rlist;
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
void scheduler_init(void) {
|
void _scheduler_init(void) {
|
||||||
|
|
||||||
queue_init(&rlist.r_queue);
|
queue_init(&rlist.r_queue);
|
||||||
rlist.r_prio = NOPRIO;
|
rlist.r_prio = NOPRIO;
|
||||||
|
|
|
@ -76,16 +76,16 @@ void chSysInit(void) {
|
||||||
static Thread mainthread;
|
static Thread mainthread;
|
||||||
|
|
||||||
port_init();
|
port_init();
|
||||||
scheduler_init();
|
_scheduler_init();
|
||||||
vt_init();
|
_vt_init();
|
||||||
#if CH_USE_MEMCORE
|
#if CH_USE_MEMCORE
|
||||||
core_init();
|
_core_init();
|
||||||
#endif
|
#endif
|
||||||
#if CH_USE_HEAP
|
#if CH_USE_HEAP
|
||||||
heap_init();
|
_heap_init();
|
||||||
#endif
|
#endif
|
||||||
#if CH_DBG_ENABLE_TRACE
|
#if CH_DBG_ENABLE_TRACE
|
||||||
trace_init();
|
_trace_init();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Now this instructions flow becomes the main thread.*/
|
/* Now this instructions flow becomes the main thread.*/
|
||||||
|
|
|
@ -40,7 +40,7 @@ VTList vtlist;
|
||||||
*
|
*
|
||||||
* @notapi
|
* @notapi
|
||||||
*/
|
*/
|
||||||
void vt_init(void) {
|
void _vt_init(void) {
|
||||||
|
|
||||||
vtlist.vt_next = vtlist.vt_prev = (void *)&vtlist;
|
vtlist.vt_next = vtlist.vt_prev = (void *)&vtlist;
|
||||||
vtlist.vt_time = (systime_t)-1;
|
vtlist.vt_time = (systime_t)-1;
|
||||||
|
|
|
@ -95,10 +95,10 @@
|
||||||
as default.
|
as default.
|
||||||
- CHANGE: Removed all the prefixes from the structure/union field names
|
- CHANGE: Removed all the prefixes from the structure/union field names
|
||||||
in the HAL subsystem.
|
in the HAL subsystem.
|
||||||
- CHANGE: Updated the documentation to use Doxygen 1.7.3 which produces a much
|
- CHANGE: Updated the documentation to use Doxygen 1.7.4 which produces a much
|
||||||
more readable output. Also modified the documentation layout to put functions
|
more readable output. Also modified the documentation layout to put functions
|
||||||
and variables ahead of everything else in the group pages.
|
and variables ahead of everything else in the group pages.
|
||||||
Doxygen version below 1.7.3 cannot be used anymore because differences in
|
Doxygen version below 1.7.4 cannot be used anymore because differences in
|
||||||
templates. Note that now there are two Doxygen projects, one for generating
|
templates. Note that now there are two Doxygen projects, one for generating
|
||||||
the CHM file the other for plain HTML.
|
the CHM file the other for plain HTML.
|
||||||
|
|
||||||
|
|
|
@ -69,6 +69,13 @@
|
||||||
#define HAL_USE_I2C FALSE
|
#define HAL_USE_I2C FALSE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enables the I2C subsystem.
|
||||||
|
*/
|
||||||
|
#if !defined(HAL_USE_ICU) || defined(__DOXYGEN__)
|
||||||
|
#define HAL_USE_ICU TRUE
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Enables the MAC subsystem.
|
* @brief Enables the MAC subsystem.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -74,6 +74,20 @@
|
||||||
#define STM32_GPT_TIM4_IRQ_PRIORITY 7
|
#define STM32_GPT_TIM4_IRQ_PRIORITY 7
|
||||||
#define STM32_GPT_TIM5_IRQ_PRIORITY 7
|
#define STM32_GPT_TIM5_IRQ_PRIORITY 7
|
||||||
|
|
||||||
|
/*
|
||||||
|
* ICU driver system settings.
|
||||||
|
*/
|
||||||
|
#define STM32_ICU_USE_TIM1 FALSE
|
||||||
|
#define STM32_ICU_USE_TIM2 TRUE
|
||||||
|
#define STM32_ICU_USE_TIM3 FALSE
|
||||||
|
#define STM32_ICU_USE_TIM4 FALSE
|
||||||
|
#define STM32_ICU_USE_TIM5 FALSE
|
||||||
|
#define STM32_ICU_TIM1_IRQ_PRIORITY 7
|
||||||
|
#define STM32_ICU_TIM2_IRQ_PRIORITY 7
|
||||||
|
#define STM32_ICU_TIM3_IRQ_PRIORITY 7
|
||||||
|
#define STM32_ICU_TIM4_IRQ_PRIORITY 7
|
||||||
|
#define STM32_ICU_TIM5_IRQ_PRIORITY 7
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* PWM driver system settings.
|
* PWM driver system settings.
|
||||||
*/
|
*/
|
||||||
|
|
4
todo.txt
4
todo.txt
|
@ -18,7 +18,7 @@ Within 2.3.x (hopefully)
|
||||||
* Swap TIME_IMMEDIATE and TIME_INFINITE values.
|
* Swap TIME_IMMEDIATE and TIME_INFINITE values.
|
||||||
* Improvements to the message passing mechanism in order to allow "delayed,
|
* Improvements to the message passing mechanism in order to allow "delayed,
|
||||||
out of order, responses".
|
out of order, responses".
|
||||||
* New device driver models: GPT.
|
* New device driver models: GPT, ICU.
|
||||||
X GPT implementation and long duration "IRQ storm" stress test applications
|
X GPT implementation and long duration "IRQ storm" stress test applications
|
||||||
for all the supported critical platforms.
|
for all the supported critical platforms.
|
||||||
- Add UART4 support to the STM32 UART driver (CL line only, HD has a nasty
|
- Add UART4 support to the STM32 UART driver (CL line only, HD has a nasty
|
||||||
|
@ -40,7 +40,7 @@ X File System infrastructure.
|
||||||
X Transactional flash file system implementation.
|
X Transactional flash file system implementation.
|
||||||
X I2C device driver class support and at least one implementation.
|
X I2C device driver class support and at least one implementation.
|
||||||
X Shared DMA channels support in the STM32/STM8L HALs.
|
X Shared DMA channels support in the STM32/STM8L HALs.
|
||||||
X RAM ISR vectors support in the STM32 HAL.
|
? RAM ISR vectors support in the STM32 HAL.
|
||||||
- New device driver models: Clock, Systick, RTC, WDG, DAC, Power Monitor.
|
- New device driver models: Clock, Systick, RTC, WDG, DAC, Power Monitor.
|
||||||
|
|
||||||
Later but within 2.x.x
|
Later but within 2.x.x
|
||||||
|
|
Loading…
Reference in New Issue