mbed SDK library sources

Fork of mbed-src by mbed official

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Files at this revision

API Documentation at this revision

Comitter:
mbed_official
Date:
Sat Feb 08 12:00:07 2014 +0000
Parent:
85:e1a8e879a6a9
Child:
87:085cde657901
Commit message:
Synchronized with git revision 8c4fcca8c8e600391a5ccb90a3f889019733d082

Full URL: https://github.com/mbedmicro/mbed/commit/8c4fcca8c8e600391a5ccb90a3f889019733d082/

PWM update for Freescale Targets

Changed in this revision

targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL05Z/PeripheralPins.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL05Z/gpio_irq_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/PeripheralPins.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/gpio_irq_api.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL46Z/PeripheralPins.c Show annotated file Show diff for this revision Revisions of this file
targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL46Z/gpio_irq_api.c Show annotated file Show diff for this revision Revisions of this file
--- a/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL05Z/PeripheralPins.c	Fri Feb 07 18:00:11 2014 +0000
+++ b/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL05Z/PeripheralPins.c	Sat Feb 08 12:00:07 2014 +0000
@@ -92,20 +92,18 @@
 
 /************PWM***************/
 const PinMap PinMap_PWM[] = {
-    // LEDs
-    {LED_RED  , PWM_4 , 2}, // PTB8 , TPM0 CH3
-    {LED_GREEN, PWM_3,  2}, // PTB9 , TPM0 CH2
-    {LED_BLUE , PWM_2 , 2}, // PTB10, TPM0 CH1
-
-    // Arduino digital pinout
-    {D3,  PWM_8 , 2}, // PTB5 , TPM1 CH1
-    {D5,  PWM_7 , 2}, // PTA12, TPM1 CH0
-    {D6,  PWM_4 , 2}, // PTB6 , TPM0 CH3
-    {D7,  PWM_3 , 2}, // PTB7 , TPM0 CH2
-    {D8,  PWM_2 , 2}, // PTB10, TPM0 CH1
-    {D9,  PWM_1 , 2}, // PTB11, TPM0 CH0
-    {D10, PWM_6 , 2}, // PTA5 , TPM0 CH5
-    {D12, PWM_5 , 2}, // PTA6 , TPM0 CH4
-    {NC , NC    , 0}
+    {PTA0,  PWM_7,  2}, // PTA0 , TPM1 CH0
+    {PTA5,  PWM_6 , 2}, // PTA5 , TPM0 CH5
+    {PTA6,  PWM_5,  2}, // PTA6 , TPM0 CH4
+    {PTA12, PWM_7 , 2}, // PTA12, TPM1 CH0
+    
+    {PTB5,  PWM_8,  2}, // PTB5 , TPM1 CH1
+    {PTB6,  PWM_4,  2}, // PTB6 , TPM0 CH3
+    {PTB7,  PWM_3,  2}, // PTB7 , TPM0 CH2
+    {PTB8,  PWM_4,  2}, // PTB8 , TPM0 CH3
+    {PTB9,  PWM_3,  2}, // PTB9 , TPM0 CH2
+    {PTB10, PWM_2,  2}, // PTB10 , TPM0 CH1
+    {PTB11, PWM_1,  2}, // PTB11 , TPM0 CH0
+    {PTB13, PWM_8,  2}, // PTB13 , TPM1 CH1
+    {NC   , NC,     0}
 };
-
--- a/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL05Z/gpio_irq_api.c	Fri Feb 07 18:00:11 2014 +0000
+++ b/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL05Z/gpio_irq_api.c	Sat Feb 08 12:00:07 2014 +0000
@@ -37,7 +37,9 @@
         if (port->ISFR & pmask) {
             mask |= pmask;
             uint32_t id = channel_ids[ch_base + i];
-            if (id == 0) continue;
+            if (id == 0) {
+                continue;
+            }
 
             FGPIO_Type *gpio;
             gpio_irq_event event = IRQ_NONE;
@@ -170,3 +172,13 @@
         NVIC_DisableIRQ(PORTB_IRQn);
     }
 }
+
+// Change the NMI pin to an input. This allows NMI pin to 
+//  be used as a low power mode wakeup.  The application will
+//  need to change the pin back to NMI_b or wakeup only occurs once!
+extern void gpio_init(gpio_t *obj, PinName pin, PinDirection direction);
+void NMI_Handler(void)
+{
+    gpio_t gpio;
+    gpio_init(&gpio, PTB5, PIN_INPUT);
+}
--- a/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/PeripheralPins.c	Fri Feb 07 18:00:11 2014 +0000
+++ b/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/PeripheralPins.c	Sat Feb 08 12:00:07 2014 +0000
@@ -153,46 +153,45 @@
 
 /************PWM***************/
 const PinMap PinMap_PWM[] = {
-    // LEDs
-    {LED_RED  , PWM_9 , 3}, // PTB18, TPM2 CH0
-    {LED_GREEN, PWM_10, 3}, // PTB19, TPM2 CH1
-    {LED_BLUE , PWM_2 , 4}, // PTD1 , TPM0 CH1
-
-    // Arduino digital pinout
-    {D0,  PWM_9 , 3}, // PTA1 , TPM2 CH0
-    {D1,  PWM_10, 3}, // PTA2 , TPM2 CH1
-    {D2,  PWM_5 , 4}, // PTD4 , TPM0 CH4
-    {D3,  PWM_7 , 3}, // PTA12, TPM1 CH0
-    {D4,  PWM_2 , 3}, // PTA4 , TPM0 CH1
-    {D5,  PWM_3 , 3}, // PTA5 , TPM0 CH2
-    {D6,  PWM_5 , 3}, // PTC8 , TPM0 CH4
-    {D7,  PWM_6 , 3}, // PTC9 , TPM0 CH5
-    {D8,  PWM_8 , 3}, // PTA13, TPM1 CH1
-    {D9,  PWM_6 , 4}, // PTD5 , TPM0 CH5
-    {D10, PWM_1 , 4}, // PTD0 , TPM0 CH0
-    {D11, PWM_3 , 4}, // PTD2 , TPM0 CH2
-    {D12, PWM_4 , 4}, // PTD3 , TPM0 CH3
-    {D13, PWM_2 , 4}, // PTD1 , TPM0 CH1,
+    {PTA0,  PWM_6,  3}, // PTA0 , TPM0 CH5    
+    {PTA1,  PWM_9 , 3}, // PTA1 , TPM2 CH0
+    {PTA2,  PWM_10, 3}, // PTA2 , TPM2 CH1
+    {PTA3,  PWM_1,  3}, // PTA3 , TPM0 CH0
+    {PTA4,  PWM_2 , 3}, // PTA4 , TPM0 CH1
+    {PTA5,  PWM_3 , 3}, // PTA5 , TPM0 CH2
+    {PTA12, PWM_7 , 3}, // PTA12, TPM1 CH0
+    {PTA13, PWM_8 , 3}, // PTA13, TPM1 CH1  
+    
+    {PTB0,  PWM_7,  3}, // PTB0 , TPM1 CH0
+    {PTB1,  PWM_8,  3}, // PTB1 , TPM1 CH1
+    {PTB2,  PWM_9,  3}, // PTB2 , TPM2 CH0
+    {PTB3,  PWM_10, 3}, // PTB3 , TPM2 CH1
+    {PTB18, PWM_9,  3}, // PTB18, TPM2 CH0
+    {PTB19, PWM_10, 3}, // PTB18, TPM2 CH1
 
-    {PTA0, PWM_6, 3},
-    {PTA3, PWM_1, 3},
-    {PTB0, PWM_7, 3},
-    {PTB1, PWM_8, 3},
-    {PTB2, PWM_9, 3},
-    {PTB3, PWM_10, 3},
-    {PTC1, PWM_1, 4},
-    {PTC2, PWM_2, 4},
-    {PTC3, PWM_3, 4},
-    {PTC4, PWM_4, 4},
-    {PTE20, PWM_7, 3},
-    {PTE21, PWM_8, 3},
-    {PTE22, PWM_9, 3},
-    {PTE23, PWM_10, 3},
-    {PTE24, PWM_1, 3},
-    {PTE25, PWM_2, 3},
-    {PTE29, PWM_3, 3},
-    {PTE30, PWM_4, 3},
-    {PTE31, PWM_5, 3},
+    {PTC1,  PWM_1,  4}, // PTC1 , TPM0 CH0
+    {PTC2,  PWM_2,  4}, // PTC2 , TPM0 CH1
+    {PTC3,  PWM_3,  4}, // PTC3 , TPM0 CH2
+    {PTC4,  PWM_4,  4}, // PTC4 , TPM0 CH3
+    {PTC8,  PWM_5 , 3}, // PTC8 , TPM0 CH4
+    {PTC9,  PWM_6 , 3}, // PTC9 , TPM0 CH5    
+    
+    {PTD0,  PWM_1 , 4}, // PTD0 , TPM0 CH0
+    {PTD1,  PWM_2 , 4}, // PTD0 , TPM0 CH1
+    {PTD2,  PWM_3 , 4}, // PTD2 , TPM0 CH2
+    {PTD3,  PWM_4 , 4}, // PTD3 , TPM0 CH3    
+    {PTD4,  PWM_5 , 4}, // PTD4 , TPM0 CH4
+    {PTD5,  PWM_6 , 4}, // PTD5 , TPM0 CH5
 
-    {NC , NC    , 0}
+    {PTE20, PWM_7,  3}, // PTE20, TPM1 CH0
+    {PTE21, PWM_8,  3}, // PTE21, TPM1 CH1
+    {PTE22, PWM_9,  3}, // PTE22, TPM2 CH0
+    {PTE23, PWM_10, 3}, // PTE23, TPM2 CH1
+    {PTE24, PWM_1,  3}, // PTE24, TPM0 CH0
+    {PTE25, PWM_2,  3}, // PTE25, TPM0 CH1
+    {PTE26, PWM_6,  3}, // PTE26, TPM0 CH5
+    {PTE29, PWM_3,  3}, // PTE29, TPM0 CH2
+    {PTE30, PWM_4,  3}, // PTE30, TPM0 CH3
+    {PTE31, PWM_5,  3}, // PTE31, TPM0 CH4
+    {NC   , NC,     0}
 };
--- a/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/gpio_irq_api.c	Fri Feb 07 18:00:11 2014 +0000
+++ b/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/gpio_irq_api.c	Sat Feb 08 12:00:07 2014 +0000
@@ -37,7 +37,9 @@
         if (port->ISFR & pmask) {
             mask |= pmask;
             uint32_t id = channel_ids[ch_base + i];
-            if (id == 0) continue;
+            if (id == 0) {
+                continue;
+            }
 
             FGPIO_Type *gpio;
             gpio_irq_event event = IRQ_NONE;
@@ -55,8 +57,9 @@
                     event = (gpio->PDIR & pmask) ? (IRQ_RISE) : (IRQ_FALL);
                     break;
             }
-            if (event != IRQ_NONE)
+            if (event != IRQ_NONE) {
                 irq_handler(id, event);
+            }
         }
     }
     port->ISFR = mask;
@@ -159,3 +162,13 @@
         NVIC_DisableIRQ(PORTD_IRQn);
     }
 }
+
+// Change the NMI pin to an input. This allows NMI pin to 
+//  be used as a low power mode wakeup.  The application will
+//  need to change the pin back to NMI_b or wakeup only occurs once!
+extern void gpio_init(gpio_t *obj, PinName pin, PinDirection direction);
+void NMI_Handler(void)
+{
+    gpio_t gpio;
+    gpio_init(&gpio, PTA4, PIN_INPUT);
+}
--- a/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL46Z/PeripheralPins.c	Fri Feb 07 18:00:11 2014 +0000
+++ b/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL46Z/PeripheralPins.c	Sat Feb 08 12:00:07 2014 +0000
@@ -163,47 +163,47 @@
 
 /************PWM***************/
 const PinMap PinMap_PWM[] = {
-    // LEDs - only RED pin is PWM capable
-    {LED_RED, PWM_3, 3}, // PTE29, TPM0 CH2
-
-    // Arduino digital pinout
-    {D0,  PWM_9 , 3}, // PTA1 , TPM2 CH0
-    {D1,  PWM_10, 3}, // PTA2 , TPM2 CH1
-    {D2,  PWM_4 , 4}, // PTD3 , TPM0 CH3
-    {D3,  PWM_7 , 3}, // PTA12, TPM1 CH0
-    {D4,  PWM_2 , 3}, // PTA4 , TPM0 CH1
-    {D5,  PWM_3 , 3}, // PTA5 , TPM0 CH2
-    {D6,  PWM_5 , 3}, // PTC8 , TPM0 CH4
-    {D7,  PWM_6 , 3}, // PTC9 , TPM0 CH5
-    {D8,  PWM_8 , 3}, // PTA13, TPM1 CH1
-    {D9,  PWM_3 , 4}, // PTD2 , TPM0 CH2
-    {D10, PWM_5 , 4}, // PTD4 , TPM0 CH4
-    //PWM on D11 not available
-    //PWM on D12 not available
-    {D13, PWM_2 , 4}, // PTD5 , TPM0 CH1,
+    {PTA0,  PWM_6,  3}, // PTA0 , TPM0 CH5    
+    {PTA1,  PWM_9 , 3}, // PTA1 , TPM2 CH0
+    {PTA2,  PWM_10, 3}, // PTA2 , TPM2 CH1
+    {PTA3,  PWM_1,  3}, // PTA3 , TPM0 CH0
+    {PTA4,  PWM_2 , 3}, // PTA4 , TPM0 CH1
+    {PTA5,  PWM_3 , 3}, // PTA5 , TPM0 CH2
+    {PTA6,  PWM_4,  3}, // PTA6 , TPM0 CH3
+    {PTA7,  PWM_5,  3}, // PTA7 , TPM0 CH4
+    {PTA12, PWM_7 , 3}, // PTA12, TPM1 CH0
+    {PTA13, PWM_8 , 3}, // PTA13, TPM1 CH1  
+    
+    {PTB0,  PWM_7,  3}, // PTB0 , TPM1 CH0
+    {PTB1,  PWM_8,  3}, // PTB1 , TPM1 CH1
+    {PTB2,  PWM_9,  3}, // PTB2 , TPM2 CH0
+    {PTB3,  PWM_10, 3}, // PTB3 , TPM2 CH1
+    {PTB18, PWM_9,  3}, // PTB18, TPM2 CH0
+    {PTB19, PWM_10, 3}, // PTB18, TPM2 CH1
 
-    {PTA0, PWM_6, 3},
-    {PTA3, PWM_1, 3},
-    {PTA6, PWM_4, 3},
-    {PTA7, PWM_5, 3},
-    {PTB0, PWM_7, 3},
-    {PTB1, PWM_8, 3},
-    {PTB2, PWM_9, 3},
-    {PTB3, PWM_10, 3},
-    {PTC1, PWM_1, 4},
-    {PTC2, PWM_2, 4},
-    {PTC3, PWM_3, 4},
-    {PTC4, PWM_4, 4},
-    {PTE20, PWM_7, 3},
-    {PTE21, PWM_8, 3},
-    {PTE22, PWM_9, 3},
-    {PTE23, PWM_10, 3},
-    {PTE24, PWM_1, 3},
-    {PTE25, PWM_2, 3},
-    {PTE26, PWM_6, 3},
-    {PTE29, PWM_3, 3},
-    {PTE30, PWM_4, 3},
-    {PTE31, PWM_5, 3},
+    {PTC1,  PWM_1,  4}, // PTC1 , TPM0 CH0
+    {PTC2,  PWM_2,  4}, // PTC2 , TPM0 CH1
+    {PTC3,  PWM_3,  4}, // PTC3 , TPM0 CH2
+    {PTC4,  PWM_4,  4}, // PTC4 , TPM0 CH3
+    {PTC8,  PWM_5 , 3}, // PTC8 , TPM0 CH4
+    {PTC9,  PWM_6 , 3}, // PTC9 , TPM0 CH5    
+    
+    {PTD0,  PWM_1 , 4}, // PTD0 , TPM0 CH0
+    {PTD1,  PWM_2 , 4}, // PTD0 , TPM0 CH1
+    {PTD2,  PWM_3 , 4}, // PTD2 , TPM0 CH2
+    {PTD3,  PWM_4 , 4}, // PTD3 , TPM0 CH3    
+    {PTD4,  PWM_5 , 4}, // PTD4 , TPM0 CH4
+    {PTD5,  PWM_6 , 4}, // PTD5 , TPM0 CH5
 
-    {NC , NC    , 0}
+    {PTE20, PWM_7,  3}, // PTE20, TPM1 CH0
+    {PTE21, PWM_8,  3}, // PTE21, TPM1 CH1
+    {PTE22, PWM_9,  3}, // PTE22, TPM2 CH0
+    {PTE23, PWM_10, 3}, // PTE23, TPM2 CH1
+    {PTE24, PWM_1,  3}, // PTE24, TPM0 CH0
+    {PTE25, PWM_2,  3}, // PTE25, TPM0 CH1
+    {PTE26, PWM_6,  3}, // PTE26, TPM0 CH5
+    {PTE29, PWM_3,  3}, // PTE29, TPM0 CH2
+    {PTE30, PWM_4,  3}, // PTE30, TPM0 CH3
+    {PTE31, PWM_5,  3}, // PTE31, TPM0 CH4
+    {NC   , NC,     0}
 };
--- a/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL46Z/gpio_irq_api.c	Fri Feb 07 18:00:11 2014 +0000
+++ b/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL46Z/gpio_irq_api.c	Sat Feb 08 12:00:07 2014 +0000
@@ -37,8 +37,9 @@
         if (port->ISFR & pmask) {
             mask |= pmask;
             uint32_t id = channel_ids[ch_base + i];
-            if (id == 0)
+            if (id == 0) {
                 continue;
+            }
 
             FGPIO_Type *gpio;
             gpio_irq_event event = IRQ_NONE;
@@ -181,3 +182,13 @@
         NVIC_DisableIRQ(PORTC_PORTD_IRQn);
     }
 }
+
+// Change the NMI pin to an input. This allows NMI pin to 
+//  be used as a low power mode wakeup.  The application will
+//  need to change the pin back to NMI_b or wakeup only occurs once!
+extern void gpio_init(gpio_t *obj, PinName pin, PinDirection direction);
+void NMI_Handler(void)
+{
+    gpio_t gpio;
+    gpio_init(&gpio, PTA4, PIN_INPUT);
+}