Simple mbed library with macros

Dependents:   SimpleTimer SimpleUART SimpleTimer Stoppuhr1

Files at this revision

API Documentation at this revision

Comitter:
Alkorin
Date:
Tue Nov 09 12:40:55 2010 +0000
Parent:
3:0b94bf95c552
Child:
5:b3aa0a49e21f
Commit message:
Added interrupt names and default handlers (from CMSIS)

Changed in this revision

interrupt.h Show annotated file Show diff for this revision Revisions of this file
leds.h Show annotated file Show diff for this revision Revisions of this file
mbed_globals.h Show annotated file Show diff for this revision Revisions of this file
serial.h Show annotated file Show diff for this revision Revisions of this file
--- a/interrupt.h	Mon Nov 08 12:34:34 2010 +0000
+++ b/interrupt.h	Tue Nov 09 12:40:55 2010 +0000
@@ -1,16 +1,80 @@
-#ifndef __INTERRUPT_H__
-#define __INTERRUPT_H__
-
-/** Interrupt Managment **/
-// Interrupt Set-Enable Register 0 (ISER0, 6.5.1 p79)
-#define ISER0 (LPC_CM3_BASE + 0xE100)
-// Interrupt Clear-Enable Register 0 (ICER0, 6.5.3 p79)
-#define ICER0 (LPC_CM3_BASE + 0xE180)
-
-#define ENABLE_INTERRUPT(intr)  SET_REGISTER32(ISER0, intr)
-#define DISABLE_INTERRUPT(intr) SET_REGISTER32(ICER0, intr)
-
-// UART0 Interrupt (ISER0 - ICER0, 6.5.1 p77 - 6.5.3 p79)
-#define INT_UART0 (1<<5)
-
+#ifndef __INTERRUPT_H__
+#define __INTERRUPT_H__
+
+/** Interrupt Managment **/
+#define ENABLE_INTERRUPT(intr)  NVIC_EnableIRQ(intr)
+#define DISABLE_INTERRUPT(intr) NVIC_DisableIRQ(intr)
+
+/* Interrupts names
+ * WDT_IRQn         Watchdog Timer Interrupt
+ * TIMER0_IRQn      Timer0 Interrupt
+ * TIMER1_IRQn      Timer1 Interrupt
+ * TIMER2_IRQn      Timer2 Interrupt
+ * TIMER3_IRQn      Timer3 Interrupt
+ * UART0_IRQn       UART0 Interrupt
+ * UART1_IRQn		UART1 Interrupt
+ * UART2_IRQn		UART2 Interrupt
+ * UART3_IRQn		UART3 Interrupt
+ * PWM1_IRQn		PWM1 Interrupt
+ * I2C0_IRQn		I2C0 Interrupt
+ * I2C1_IRQn		I2C1 Interrupt
+ * I2C2_IRQn		I2C2 Interrupt
+ * SPI_IRQn         SPI Interrupt
+ * SSP0_IRQn		SSP0 Interrupt
+ * SSP1_IRQn		SSP1 Interrupt
+ * PLL0_IRQn		PLL0 Lock (Main PLL) Interrupt
+ * RTC_IRQn         Real Time Clock Interrupt
+ * EINT0_IRQn		External Interrupt 0 Interrupt
+ * EINT1_IRQn		External Interrupt 1 Interrupt
+ * EINT2_IRQn		External Interrupt 2 Interrupt
+ * EINT3_IRQn		External Interrupt 3 Interrupt
+ * ADC_IRQn         A/D Converter Interrupt
+ * BOD_IRQn		    Brown-Out Detect Interrupt
+ * USB_IRQn		    USB Interrupt
+ * CAN_IRQn		    CAN Interrupt
+ * DMA_IRQn		    General Purpose DMA Interrupt
+ * I2S_IRQn		    I2S Interrupt
+ * ENET_IRQn		Ethernet Interrupt
+ * RIT_IRQn		    Repetitive Interrupt Timer Interrupt
+ * MCPWM_IRQn		Motor Control PWM Interrupt
+ * QEI_IRQn		    Quadrature Encoder Interface Interrupt
+ * PLL1_IRQn		PLL1 Lock (USB PLL) Interrupt
+ */
+
+/* Default interrupt handlers
+ * WDT_IRQHandler
+ * TIMER0_IRQHandler
+ * TIMER1_IRQHandler
+ * TIMER2_IRQHandler
+ * TIMER3_IRQHandler
+ * UART0_IRQHandler
+ * UART1_IRQHandler
+ * UART2_IRQHandler
+ * UART3_IRQHandler
+ * PWM1_IRQHandler
+ * I2C0_IRQHandler
+ * I2C1_IRQHandler
+ * I2C2_IRQHandler
+ * SPI_IRQHandler
+ * SSP0_IRQHandler
+ * SSP1_IRQHandler
+ * PLL0_IRQHandler
+ * RTC_IRQHandler
+ * EINT0_IRQHandler
+ * EINT1_IRQHandler
+ * EINT2_IRQHandler
+ * EINT3_IRQHandler
+ * ADC_IRQHandler
+ * BOD_IRQHandler
+ * USB_IRQHandler
+ * CAN_IRQHandler
+ * DMA_IRQHandler
+ * I2S_IRQHandler
+ * ENET_IRQHandler
+ * RIT_IRQHandler
+ * MCPWM_IRQHandler
+ * QEI_IRQHandler
+ * PLL1_IRQHandler
+*/ 
+ 
 #endif
\ No newline at end of file
--- a/leds.h	Mon Nov 08 12:34:34 2010 +0000
+++ b/leds.h	Tue Nov 09 12:40:55 2010 +0000
@@ -1,27 +1,19 @@
-#ifndef __LEDS_H__
-#define __LEDS_H__
-
-#include "mbed_globals.h"
-
-/** Registers **/
-// GPIO1 Mask register, FIOMASK page 122 
-#define LEDS_GPIO_MASK (LPC_GPIO1_BASE + 0x10)
-// GPIO1 Pin register, FIOPIN page 122
-#define LEDS_GPIO_PIN  (LPC_GPIO1_BASE + 0x14)
-// GPIO1 Direction, FIO1DIR page 122
-#define LEDS_GPIO_DIR  (LPC_GPIO1_BASE + 0x00)
-
-/** Bits **/
-#define LED1 (1 << 18)
-#define LED2 (1 << 20)
-#define LED3 (1 << 21)
-#define LED4 (1 << 23)
-#define LEDS_MASK (LED1 | LED2 | LED3 | LED4)
-
-/** Macros **/
-#define LEDS_INIT()     GET_REGISTER32(LEDS_GPIO_DIR) |= LEDS_MASK;
-
-#define LEDS_SET(value) SET_REGISTER32(LEDS_GPIO_MASK, (~LEDS_MASK)); \
-                        SET_REGISTER32(LEDS_GPIO_PIN, (value));
-
+#ifndef __LEDS_H__
+#define __LEDS_H__
+
+#include "mbed_globals.h"
+
+/** Bits **/
+#define LED1 (1 << 18)
+#define LED2 (1 << 20)
+#define LED3 (1 << 21)
+#define LED4 (1 << 23)
+#define LEDS_MASK (LED1 | LED2 | LED3 | LED4)
+
+/** Macros **/
+#define LEDS_INIT()     LPC_GPIO1->FIODIR |= LEDS_MASK;
+
+#define LEDS_SET(value) LPC_GPIO1->FIOMASK = ~LEDS_MASK; \
+                        LPC_GPIO1->FIOPIN = (value);
+
 #endif
\ No newline at end of file
--- a/mbed_globals.h	Mon Nov 08 12:34:34 2010 +0000
+++ b/mbed_globals.h	Tue Nov 09 12:40:55 2010 +0000
@@ -14,6 +14,7 @@
 
 // See 34.3.2.5 p740
 #define BIT_BANDING_ADDRESS(reg, bit) (((reg) & 0xF0000000) | (0x02000000) | (((reg) & 0x000FFFFF) << 5) | ((bit) << 2))
-#define GET_BIT_VALUE(reg, bit) GET_REGISTER32(BIT_BANDING_ADDRESS(reg, bit))
+#define GET_BIT_VALUE(reg, bit) GET_REGISTER32(BIT_BANDING_ADDRESS(((uint32_t)&reg), bit))
+#define SET_BIT_VALUE(reg, bit, value) SET_REGISTER32(BIT_BANDING_ADDRESS(((uint32_t)&reg), bit), (value))
 
 #endif
\ No newline at end of file
--- a/serial.h	Mon Nov 08 12:34:34 2010 +0000
+++ b/serial.h	Tue Nov 09 12:40:55 2010 +0000
@@ -1,54 +1,42 @@
-#ifndef __SERIAL_H__
-#define __SERIAL_H__
-
-#include "interrupt.h"
-#include "mbed_globals.h"
-
-/** Serial port (Choose UARTn (0,2,3)) **/
-#define UART_BASE LPC_UART0_BASE
-
-/** Registers **/
-// UARTn Receiver Buffer Register
-#define UnRBR 0x00
-// UARTn Transmit Holding Register
-#define UnTHR 0x00
-// UARTn Interrupt Enable Register
-#define UnIER 0x04
-// UARTn Interrupt Identification Register
-#define UnIIR 0x08
-// UARTn Line Status Register
-#define UnLSR 0x14
-
-/** Bits **/
-// RBR Interrupt Enable (UnIER, 14.4.4 p302)
-#define RBR_INT_BIT 0
-// Receiver Data Ready (UnLSR, 14.4.8 p306)
-#define RDR_BIT 0
-// Transmitter Holding Register Empty (UnLSR, 14.4.8 p306)
-#define THRE_BIT 5
-
-/** Macros **/
-#define SERIAL_PUTCHAR(c)           while (GET_BIT_VALUE(UART_BASE + UnLSR, THRE_BIT) == 0); \
-                                    SET_REGISTER8(UART_BASE + UnTHR, c)
-
-#define SERIAL_DATA_TO_READ()       (GET_BIT_VALUE(UART_BASE + UnLSR, RDR_BIT) == 1)
-
-#define SERIAL_GETCHAR()            GET_REGISTER8(UART_BASE + UnRBR)
-
-// See 14.4.5 p303
-inline int SERIAL_CHECK_INTERRUPT(void) {
-    unsigned int serialStatus = GET_REGISTER32(UART_BASE + UnIIR);
-
-    if (serialStatus & 1) // IntStatus, 1 = No Interrupt is pending.
-        return 0;
-
-    serialStatus = (serialStatus >> 1) & 0x3; // IntId, 2 = More than threshold data to read, 6 = Some caracters to read
-    if (serialStatus != 2 && serialStatus != 6)
-        return 0;
-
-    return 1;
-}
-
-#define SERIAL_SETBAUD(baud)
-
+#ifndef __SERIAL_H__
+#define __SERIAL_H__
+
+#include "interrupt.h"
+#include "mbed_globals.h"
+
+/** Serial port (Choose UARTn (0,2,3)) **/
+#define UART_BASE LPC_UART0
+
+/** Bits **/
+// RBR Interrupt Enable (UnIER, 14.4.4 p302)
+#define RBR_INT_BIT 0
+// Receiver Data Ready (UnLSR, 14.4.8 p306)
+#define RDR_BIT 0
+// Transmitter Holding Register Empty (UnLSR, 14.4.8 p306)
+#define THRE_BIT 5
+
+/** Macros **/
+#define SERIAL_PUTCHAR(c)           while (GET_BIT_VALUE(UART_BASE->LSR, THRE_BIT) == 0); \
+                                    UART_BASE->THR = c;
+
+#define SERIAL_DATA_TO_READ()       (GET_BIT_VALUE(UART_BASE->LSR, RDR_BIT) == 1)
+
+#define SERIAL_GETCHAR()            (UART_BASE->RBR)
+
+// See 14.4.5 p303
+inline int SERIAL_CHECK_INTERRUPT(void) {
+    uint32_t serialStatus = UART_BASE->IIR;
+
+    if (serialStatus & 1) // IntStatus, 1 = No Interrupt is pending.
+        return 0;
+
+    serialStatus = (serialStatus >> 1) & 0x3; // IntId, 2 = More than threshold data to read, 6 = Some caracters to read
+    if (serialStatus != 2 && serialStatus != 6)
+        return 0;
+
+    return 1;
+}
+
+#define SERIAL_SETBAUD(baud)
+
 #endif
\ No newline at end of file