449 Commits

Author SHA1 Message Date
Paul Fleischer
b876b72b39 lm4f: Add control over UART FIFOs 2013-06-02 18:05:49 -07:00
Gareth McMullin
662a2cb8fa sam: Add convenience function for clock setup using internal 4MHz. 2013-06-02 18:01:38 -07:00
Gareth McMullin
ce3e3dc39b Split sam3x/sam3n support. 2013-06-02 18:01:38 -07:00
Alexandru Gagniuc
4535a4c9b6 lm4f: Implement GPIO interrupt control
Implement an API to specifiy the interrupt trigger for GPIO pins, and
control interrupts. This completes the GPIO API.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-06-02 16:16:46 -07:00
Alexandru Gagniuc
f53839f33f lm4f: Implement GPIO configuration and control
Everything needed to set up and control the GPIO pins is implemented,
EXCEPT setting up interrupts. This is the subject of a subsequent patch.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-06-02 16:16:46 -07:00
Alexandru Gagniuc
a3784aa54f lm4f: Add GPIO register definitions
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-06-02 16:16:46 -07:00
Alexandru Gagniuc
991fbd01be lm4f: Add all GPIO ports to memorymap.h
The base addresses for GPIO ports J through Q were missing. Add them.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-06-02 16:16:46 -07:00
Alexandru Gagniuc
de55bbc46e lm4f: "Pretty-ize" the look of Doxygen comments in gpio.c/.h
Put the Doxygen blocks in well-formatted C comments. This looks better
and is less distracting than putting them in unformatted comments.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-06-02 16:16:46 -07:00
Alexandru Gagniuc
4c45702d2d lm4f: Switch GPIOs to using AHB bus ***WARNING***
The AHB bus allows faster control of GPIO pins versus the older APB bus.
The GPIO ports A through H default on the APB bus. Change the GPIOx
defines in gpio.h to use the base address of the AHB bus.

There's another reason to use the AHB bus: ports K tand highercan only be
accessed via the AHB bus.

***WARNING***
To work, GPIO acces to the AHB bus must be explictly enabled via the
GPIOHBCTL register. Without any additional change, this patch will break
any code using the older APB bus. If the GPIOHBCTL is not properly
modified, any acces to the GPIO register will cause a hard fault.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-06-02 16:16:46 -07:00
Alexandru Gagniuc
9d46103ced lm4f: Add functions for controlling USB interrupts
Add functions to enable and disable USB interrupts, and document how to
use these functions to run usbd_poll() from the usb ISR.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-05-16 01:36:17 -05:00
Alexandru Gagniuc
ad048f7d5a lm4f: Add doxygen documentation for the USB driver
Add minimal documentation for the USB driver. The internal functions and
structs are excluded.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-05-16 01:36:10 -05:00
Alexandru Gagniuc
df5bc49245 lm4f: Add USB register definitions
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-05-15 18:17:06 -05:00
Fergus Noble
4ad30d56b4 Add higher level flash_program function for f2/f4 to write a buffer into flash. 2013-05-10 18:53:19 -07:00
Fergus Noble
410be2a39a **** WARNING **** This change may break your code!!!
Change flash_erase_sector (f2/f4) to take numerical sector argument.

As opposed to using one of the defines in the header, this is more convenient when programatically deciding which sectors to erase.
2013-05-10 18:51:01 -07:00
Fergus Noble
b039504494 Moving stm32 f2/f4 flash code into the common area. 2013-05-10 18:34:55 -07:00
Fergus Noble
4d15da995e Adding basic support for v7m sync primatives and mutex convenience functions. 2013-05-10 14:30:17 -07:00
Alexandru Gagniuc
a8fc67d569 lm4f: Implement UART interrupt control
Add a complete API for controlling the UART interrupts.
Doxygen documentation with inline code examples is also provided in this patch.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-05-10 14:20:11 -07:00
Alexandru Gagniuc
8112861b60 lm4f: Add basic UART implementation
Add basic functionality needed to setup the UART and send/recieve data.
Interrupts, DMA, and more advanced features are not implemented in this patch.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-05-10 14:20:11 -07:00
Alexandru Gagniuc
a105bcaa83 lm4f: Add UART "convenience" macros
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-05-10 14:20:11 -07:00
Alexandru Gagniuc
3573bf170a lm4f: Add UART register definitions
Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-05-10 14:20:11 -07:00
Alexandru Gagniuc
7b9e8ba2e4 lm4f-doc: Sanitize doxygen structure in rcc.h
By somo copypaste error, the doxygen group rcc_defines was defined twice.
Don't do that. Keep Ken's doxygen structure and drop the old one.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-05-10 14:11:24 -07:00
Gareth McMullin
05fb6fa19f sam3x: Add usart funciton to enable rx interrupt. 2013-05-10 14:01:17 -07:00
Gareth McMullin
e2eadfddb8 sam3x: Add convenince functions for setting clocks and usart baudrate. 2013-05-10 14:01:17 -07:00
Gareth McMullin
8265953b35 sam3x: Add missing return types to pwm functions. 2013-05-10 14:01:16 -07:00
Gareth McMullin
060839ee4c sam3x: Add some pwm convenience funcitons. 2013-05-10 14:01:16 -07:00
Gareth McMullin
614e26a3b1 sam3x: Add gpio_init convenience function. 2013-05-10 14:01:16 -07:00
Gareth McMullin
f311966f09 sam3x: Add USART registers and come convenience functions. 2013-05-10 14:01:16 -07:00
Gareth McMullin
fcd527d31b sam3x: Add some PMC convenience functions. 2013-05-10 14:01:16 -07:00
Gareth McMullin
dde1d82fb1 sam3x: clean up gpio mess. 2013-05-10 14:01:16 -07:00
Gareth McMullin
f0bace7838 sam3x support. 2013-05-10 14:01:16 -07:00
Alexandru Gagniuc
90172f9d72 lm4f: Fix include guard in nvic.h
The lm4f/nvic.h include guard was wrongfully named LIBOPENCM3_LM3S_NVIC_H.
This caused the lm3s/nvic.h include a few lines down to not be compiled.
Rename the inlcude guard to the more appropriate LIBOPENCM3_LM4F_NVIC_H.

Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
2013-05-08 11:23:55 -05:00
Ken Sarkies
92d1134a16 STM32: moved timer_ic_set_polarity from timer_common_all to
f1/timer.
Added timer_ic_set_polarity to timer_common_f24 with
the enum tim_ic_pol now including trigger on both edges.
Changed timer_slave_set_polarity to use enum tim_et_pol
rather than tim_ic_pol.

In response to suggestion of stinkydiver73 on 24 March that
timers in all families have an option for triggers on both
edges, except F1.
2013-04-26 15:30:07 +09:30
Ken Sarkies
cbb4756440 As requested (6 Feb 2013) change DMA interrupt flag names
in STM32/common, for dma_common_f24, to match those used in dma_common_f13.
Examples compile OK
2013-04-26 12:12:03 +09:30
Andrey Smirnov
113e5c22e6 Change the way buffer for control requests data is allocated
Current way of having a globally, but weakly defined static buffer has
several shortcomings:
 - It forces user to have a certain "magic" byte array variable if
   they want to have a control buffer of different size.
 - Having a globally defined static array and a separate function to
   tell USB core about its size is error prone.
 - Its inner workings are not easily understandable form cursory look
   at API and one needs to go and look at the implementation code to
   connect all the pieces into a solid picture of how it works

This commit adds two parameters to 'usbd_init' call that allow user to
specify the pointer to the area of memory and a size of that memory
which would be used by the USB core to store the data received during
DATA stage of control requests. This approach, while further
complicating the prototype of 'usbd_init', provides user with more
flexibility allowing for any custom area of memory of any size to be
used as control buffer. It also forces user to provide both address
and memory size at the same time thus avoiding the possibility of user
redefining 'usbd_control_buffer', but not calling
'usbd_set_control_buffer_size' after that.
2013-04-25 17:24:27 -07:00
Matthew Peddie
ea15d962ab Remove redundant access size argument in F4 flash code. 2013-04-25 17:13:51 -07:00
millerd
6313af8869 Small improvements of using FLASH memory in STM32F1XX 2013-04-24 15:55:15 -07:00
Piotr Esden-Tempski
c0aefb6ad3 Fixed dma interrupt flag related definitions. 2013-04-23 20:25:42 -07:00
Gautier Hattenberger
a4b582f91d add 16MHz resonator for stm32f4 2013-04-23 17:52:27 +02:00
Alan Braithwaite
67903bfbfe API change to remove dual loading default case for dac_load_data_buffer_single
Also change dac_data from u32 to u16
2013-04-20 00:31:30 +02:00
Ken Sarkies
1374d2622b Place generic USB header and source files into the documentation tree. 2013-04-19 10:26:01 +09:30
molnarkares
93007d20d9 Fixes:
CAN RX: ID conversion was incorrect
2013-04-16 17:12:10 -07:00
Andrey Smirnov
6cb7d8abf3 Add a "noreturn" attribute to 'scb_reset_system'
Adding this attribute allows to avoid warnings issued by GCC in cases
when 'scb_reset_system' is used as a last call in a function with
"noreturn" attribute set(usually reset handler of some sorts)
2013-04-16 16:57:58 -07:00
Andrey Smirnov
e944876b63 Add a exception handling helper code
This commit add a structure definition that represents the stack frame
layout as it is upon entering exception handler. This is useful when
one wants to alter the exception return address, or get information
about registers state saved by the CPU.
2013-04-16 16:57:45 -07:00
John Howe
dd906c0656 Updated links to ST programming manuals 2013-04-16 16:35:19 -07:00
Ken Sarkies
1627cd60c3 Documentation structures added to place the non-STM32 families into the documentation tree.
Actual documentation has not been added. Volunteers?
2013-04-14 15:30:02 +02:00
Karl Palsson
69902568d1 [stm32-l1] Turn on the DMA code.
It appears to be the same dma peripheral as in the F1 and F3, so just
enable it as is.
2013-04-14 14:51:30 +02:00
Ken Sarkies
5b8953124e This mainly moves the STM32 timers' code to the common area.
F2 and F4 have a common section to deal with the options register (TIM2 and TIM5 only)
L1 has been made common with timer_common_all as its options register has very different settings to F2/F4. Code is in the L1/timer.c L1/timer.h files

Note that F3 and F05 timers should fit into this scheme, with F3 having additional features.

Bundled with this is L1/pwr.h to change a documentation setting
Also all the Doxyfiles have added "ENABLE_PREPROCESSING = NO" to fix a problem introduced by commit 118.
2013-03-09 14:39:01 +10:30
Ken Sarkies
a9a85f080b Add test in common headers for improper inclusion of such files in application.
(prevents inclusion and also issues warning)
Changes to some source files to remove references to common headers.
Changes to rng.h to make guard symbols the same in f2 and f4.
2013-03-07 18:35:04 +10:30
Ken Sarkies
e2022f5884 Repair to documentation (most documented files)
to remove errors, duplications and inconsistencies.
File lib/stm32/f1/pwr.c - all code removed as it duplicates that in common/pwr_common.c
Remaining changes do not affect code. Compiles OK.
TODO efm32 has no code so generates no modules
TODO F2 needs pwr.c
TODO L1 needs dma.h and dma.c
2013-03-07 11:14:06 +10:30
Austin Palmer
31aa3b6f5a EXTI: Added function to get flag status 2013-03-01 10:36:57 -08:00