Earlier additions to the L1 support were not correctly using linux
coding guidelines as specified in /HACKING.
Some examples were also missing license information.
The LM4F provides new registers for system control. Each peripheral
now has its own clock gating control register. The LM4F still supports
the legacy registers for backwards compatibility.
Use SYSCTL_RCGCGPIO instead of SYSCTL_RCGC to enable the GPIO.
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Specify the -mfloat-abi=hard and -mfpu=fpv4-sp-d16 flags so that FPU
is enabled by default.
While this compiles with FPU support, in order to use the floating point types,
the FPU must be explicitly enabled at runtime.
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Fix three distinct issues were present with
examples/lm4f/Makefile.include:
1. Architecture flags were not being passed to the linker. This caused the linker
to link against the wrong libraries when trying to use any C library, causing
hard faults.
2. -lc and -lnosys were not linked against. Try using printf() without -lnosys
3. The makefile erroneously specified -mcpu=cortex-m3 instead of m4.
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
Where the library is installed has quite an affect on what -L and -I
flags are used. If you install into the toolchain, you don't want
to use them at all, but if you install out of tree (/opt/mycm3 for
example) you need to specify the -L and -I flags.
Update the documentation and the example makefiles to support this
previously, only stm32 chips passed the information about which chip to
build on into the compiler. this information is essential to dispatch,
thus defining LPC13XX, LPC17XX, LPC43XX and LM3S in analogy to
STM32F1..4.
the only change this results in in the example binaries is in the
hackrf-jellybean/systick example, where the the check in
systick_set_clocksource for overflowing from the stm32 area gets used.
these register definitions are common to all cortex mcus. some of the
registers might not be implemented everywhere (especially the floating
point registers), but defining them does no harm.
this modification does not result in any changes in the example
binaries.
* simple polling of an injected channel
* timer triggered sampling of an injected channel
* timer triggered sampling and IRQ handling of an injected channel
* timer triggered sampling and IRQ handling of 4 injected channels
remove rcc_set_adc_clk - use rcc version
Added functions:
- adc_power_on
- adc_start_conversion_direct
- adc_set_dual_mode
- adc_eoc
- adc_eoc_injected
- adc_read_regular
- adc_read_injected
- adc_set_injected_offset
Tested dual mode scanned regular, but no tests of injected yet.
Changes: "discontinuous" was misspelled.
- adc_set_discontinuous_mode_regular - added "length" parameter
- adc_disable_discontinuous_mode_regular - name change
- adc_enable_discontinuous_mode_injected - name change
- adc_enable_automatic_injected_group_conversion - disable triggers
- adc_enable_jeoc_interrupt - name change to match common usage in lib
- adc_disable_jeoc_interrupt - ditto
- adc_enable_external_trigger_regular - remove incorrect test on parameter
- adc_enable_external_trigger_injected - ditto
- adc_set_sample_time - name change to match function's purpose
- adc_set_conversion_time_on_all_channels - ditto
- adc_set_injected_sequence - changed order of register loading (ref Barlow's issue)
- adc_enable_analog_watchdog_on_all_channels - flipped AWDSGL
- adc_enable_analog_watchdog_on_selected_channel - ditto
added aliases for expected commonly used functions to avoid sudden user code breakage
In adc.h, corrected errors in SQR names
added "deprecated" compiler warnings to adc_on and to aliases defined in adc.c