| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
| |
| |
| |
| |
| | |
This is analagous to std::string::c_str().
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This will hold STM32-related things that I'm not sure are well-thought
out enough to go into <libmaple/stm32.h>. Currently, it contains an
accessor routine that tells you the purpose of the memory block
containing an address.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| | |
F2 doesn't work yet.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| | |
We derive SYSTICK_RELOAD_VAL from CYCLES_PER_MICROSECOND now, so let's
hide it for expert use.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Instead of requiring everyone to figure it out for themselves, add
enumerators specifying the idle logic level and what clock edge
triggers data capture. Yes, it's easy enough to figure it out. It's
also convenient to have these.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add a spi_private.h with a SPI_DEV(), for convenience. Use it in the
F1 and F2 implementations. We could probably unify these with an
STM32_HAVE_SPI(n) macro, but we'll leave that for the future.
Most everything from F1 is portable; F2 has some additional bit
definitions and a spi_get_af() routine, but that's about it.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| | |
_sbrk() is new in 2011, and there've been changes in 2012.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| | |
For overriding.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| | |
libmaple takes orders, it doesn't give them.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| | |
Make the Doxygen comments nicer to look at. Some of the docstrings are
out-of-date since F2 support was added, so update them.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The addition of STM32_HAVE_TIMER() allows us to avoid some
repetition. There's still an issue with names on F1 preventing us from
moving the IRQ handlers to libmaple/timer.c, but once that's resolved,
we'll be able to remove even more.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| | |
The current versions of DELARE_*_TIMER() don't play well with cscope,
which is a bad sign. Fix that.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| | |
This is now in contrib/.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Having separate linker scripts for all the boards is a bad idea. Most
boards really only need to specify MEMORY and the appropriate
REGION_ALIASES() so that support/ld/common.inc can do its work. Not
having infrastructure for this leads to duplication -- viz. the Maple
Mini linker scripts are identical to the Maple's, and the
olimex_stm32_h103 linker directory is just a symlink to
Maple's. Clearly, the current structure is wrong.
To fix it, instead of having per-board subdirectories of support/ld/,
add per-MEMORY subdirectories of (new) support/ld/stm32/mem/. The
per-board .mk files under support/mk/board-includes/ now reference
these directly, and target-config.mk and the Makefile handle this
appropriately. We move some other stuff around in target-config.mk to
make this all more convenient, and even allow more overriding of the
libmaple defaults on a per-board basis. Custom board hacks will be
easier now.
Unfortunately, lots of duplication under support/ld/stm32/mem/ is
necessary, as the LENGTH attribute in a MEMORY region specification
doesn't support arithmetic expressions, and ld doesn't seem to have
any way to specify MEMORY at the command line (why?!). If we find a
better way than this, we should do it.
If a board (e.g. Maple Native) _does_ really need special
memory-related configuration, you can always put a per-board
subdirectory of support/ld/stm32/mem. We do this here to configure the
heap.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| | |
This has gone unmaintained for long enough.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
As the number of boards increases, it's less practical to keep a list
of them in the help target output (notice also that some have been
forgotten). This target can't get out of date unless we change how the
board-includes/ directory works.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| | |
This shows people what to do to write boardInit(), but also how to
save work if they don't need it.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| | |
This allows dealing with push-buttons on pins other than
BOARD_BUTTON_PIN.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This allows boards to override the logic level of a pressed
button. All Maple boards have a pressed button read HIGH, but if the
opposite convention is used, isButtonPressed() will infinite loop.
Make isButtonPressed() respect this setting.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| | |
It's stupid to make everyone keep this around.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
It's not important whether the MCU is specified. What's important is
that <libmaple/stm32.h> gets everything it needs -- which it now
ensures that it does. Requiring people to do things on a per-MCU basis
hurts hackability and is just asking for trouble.
On the other hand, it's nice to provide a clue as to why
<libmaple/stm32.h> might be giving #errors, so do leave the
warnings. People can always hack the header to shut them up if they
want.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| | |
This lets users override them conveniently if our decisions don't
suit.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| | |
This lets us remove the weak definition in boards.cpp.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| | |
Minor variations on F2: DMA underrun interrupts, and a status register
to hold the notification bits.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
I'm sure we can work the compatible subset of F1/F2 GPIO functionality
into the F1 gpio.h interface in a clean way. This is not that clean
way, but I'm short on time.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Add series headers to keep the base pointers, and (on F2) use SYSCFG
to tell exti_do_select() where the EXTI control registers are. No
surprises.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| | |
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| | |
Turn it on at init() time on F2.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| | |
Those ugly Doxygen comments have been bothering me since forever. Fix
them up and throw some M-x align around.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Tested on Maple Mini with examples/mini-exti-test. Changes to Wirish
are minor: use the new EXTI types exti_num and exti_cfg (see below) in
place of now-deprecated variants in ext_interrupts.cpp.
The way I originally did libmaple/exti.h was stupid, and fixing it
turned out to be a little disruptive.
libmaple/exti.h depends on libmaple/gpio.h (for AFIO), but that's a
classic case of exposed implementation detail. So invert the
dependency: make gpio.h depend on exti.h. Do this by adding exti_num
and exti_cfg to exti.h; these respectively replace afio_exti_num and
afio_exti_port. The afio_* variants are now deprecated. (Throw in a
typedef and some macros at the bottom of the F1 series/gpio.h for
backwards compatibility).
Make exti_attach_interrupt() and exti_detach_interrupt() take
exti_num/exti_cfg arguments instead of the afio_* variants.
Make the EXTI dispatch routines __always_inline to defeat GCC -Os.
Many renames throughout libmaple/stm32f1/ to stop using the deprecated
names. Also move the previously F1-only gpio_exti_port() function into
the public libmaple header. Reimplementing it in terms of rcc_clk_ids
lets us deprecate the gpio_dev->exti_port field, which will save space
in the future.
While we're there, I notice that struct gpio_dev is defined once per
series. That's dumb, as it misses the entire point of having device
structs: they contain what's portable. So put the F1 version (which
has the extra EXTI port field) into libmaple/gpio.h, and add the
necessary exti_ports to libmaple/stm32f2/gpio.c. Sigh. We'll get rid
of it eventually, at least.
Clean up some other mistakes in gpio.h files as well (mostly removing
util.h dependency). Sorry for the messy commit.
For portability, add a new series-specific exti function,
exti_select(). The F1 version in (new) libmaple/stm32f1/exti.c uses
AFIO and some new private functionality in libmaple/exti.c and (new)
libmaple/exti_private.h to make this convenient. We'll be able to do
the SYSCFG equivalent on F2 without any trouble.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
|