diff options
Diffstat (limited to 'source/libmaple/overview.rst')
| -rw-r--r-- | source/libmaple/overview.rst | 32 | 
1 files changed, 17 insertions, 15 deletions
| diff --git a/source/libmaple/overview.rst b/source/libmaple/overview.rst index 6d7ceb1..006f1d8 100644 --- a/source/libmaple/overview.rst +++ b/source/libmaple/overview.rst @@ -93,10 +93,11 @@ The rules for device types are:    ``foo_dev *foo``, you can read and write the BAR register    ``FOO_BAR`` with ``foo->regs->BAR``.) -- An ``rcc_clk_id`` for the device is available in the ``clk_id`` -  field; this is an opaque type that can be used to uniquely -  identifies the peripheral. (Given ``foo_dev *foo``, you can check -  which foo you have by looking at ``foo->clk_id``.) +- An :ref:`rcc_clk_id <libmaple-rcc-rcc_clk_id>` for the device is +  available in the ``clk_id`` field; this is an opaque type that can +  be used to uniquely identifies the peripheral. (Given ``foo_dev +  *foo``, you can check which foo you have by looking at +  ``foo->clk_id``.)  - The backend for each supported STM32 series statically initializes    devices as appropriate, and ensures that the peripheral support @@ -181,11 +182,11 @@ high- or XL-density STM32F1, as medium- and lower density MCUs don't  have ADC3.  Note that the structs themselves are static and are exposed only via -pointers. These pointers are declared in a series-specific ADC header, -``<series/adc.h>`` which is included by ``<libmaple/adc.h>`` based on -the MCU you're targeting. (**Never include** ``<series/foo.h>`` -**directly**. Instead, include ``<libmaple/foo.h>`` and let it take -care of that for you.) On STM32F1, the series ADC header contains the +pointers.  These pointers are declared in a series-specific ADC +header, ``<series/adc.h>`` which is included by ``<libmaple/adc.h>`` +based on the MCU you're targeting.  (**Never include <series/foo.h> +directly**.  Instead, include ``<libmaple/foo.h>`` and let it take +care of that for you.)  On STM32F1, the series ADC header contains the  following::      extern const struct adc_dev *ADC1; @@ -199,8 +200,8 @@ illustrated by the ADC example, the variables for these pointers  follow the naming scheme used in ST's reference manuals -- the pointer  to ADC1's ``adc_dev`` is named ``ADC1``, and so on. -The API documentation for the peripherals you're interested in will -list the available devices on each target. +The :ref:`API documentation <libmaple-apis>` for the peripherals +you're interested in will list the available devices on each target.  Using Devices  ~~~~~~~~~~~~~ @@ -275,16 +276,17 @@ that's all you need to know.  However, if you're targeting multiple series, then this is useful  because it lets you put the actual sample time for the MCU you're -targeting into a variable, whose value depends on the target you're -compiling for. This lets you have a single codebase to test and -maintain, and lets you add support for a new target by simply adding -some new data. +targeting into a variable (or macro, etc.), whose value depends on the +target you're compiling for. This lets you have a single codebase to +test and maintain, and lets you add support for a new target by simply +adding some new data.  To continue the example, one easy way is to pick an ``adc_smp_rate``  for each of STM32F1 and STM32F2 is with conditional compilation. Using  the :ref:`STM32_MCU_SERIES <libmaple-stm32-STM32_MCU_SERIES>` define  from :ref:`libmaple-stm32`, you can write:: +    #include <libmaple/adc.h>      #include <libmaple/stm32.h>      #if STM32_MCU_SERIES == STM32_SERIES_F1 | 
