Skip to content

Commit 8c4fcca

Browse files
committed
Merge pull request #160 from sg-/master
PWM update for Freescale Targets
2 parents 4b2b368 + fad5c27 commit 8c4fcca

File tree

6 files changed

+136
-103
lines changed

6 files changed

+136
-103
lines changed

libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL05Z/PeripheralPins.c

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -92,20 +92,18 @@ const PinMap PinMap_SPI_SSEL[] = {
9292

9393
/************PWM***************/
9494
const PinMap PinMap_PWM[] = {
95-
// LEDs
96-
{LED_RED , PWM_4 , 2}, // PTB8 , TPM0 CH3
97-
{LED_GREEN, PWM_3, 2}, // PTB9 , TPM0 CH2
98-
{LED_BLUE , PWM_2 , 2}, // PTB10, TPM0 CH1
99-
100-
// Arduino digital pinout
101-
{D3, PWM_8 , 2}, // PTB5 , TPM1 CH1
102-
{D5, PWM_7 , 2}, // PTA12, TPM1 CH0
103-
{D6, PWM_4 , 2}, // PTB6 , TPM0 CH3
104-
{D7, PWM_3 , 2}, // PTB7 , TPM0 CH2
105-
{D8, PWM_2 , 2}, // PTB10, TPM0 CH1
106-
{D9, PWM_1 , 2}, // PTB11, TPM0 CH0
107-
{D10, PWM_6 , 2}, // PTA5 , TPM0 CH5
108-
{D12, PWM_5 , 2}, // PTA6 , TPM0 CH4
109-
{NC , NC , 0}
95+
{PTA0, PWM_7, 2}, // PTA0 , TPM1 CH0
96+
{PTA5, PWM_6 , 2}, // PTA5 , TPM0 CH5
97+
{PTA6, PWM_5, 2}, // PTA6 , TPM0 CH4
98+
{PTA12, PWM_7 , 2}, // PTA12, TPM1 CH0
99+
100+
{PTB5, PWM_8, 2}, // PTB5 , TPM1 CH1
101+
{PTB6, PWM_4, 2}, // PTB6 , TPM0 CH3
102+
{PTB7, PWM_3, 2}, // PTB7 , TPM0 CH2
103+
{PTB8, PWM_4, 2}, // PTB8 , TPM0 CH3
104+
{PTB9, PWM_3, 2}, // PTB9 , TPM0 CH2
105+
{PTB10, PWM_2, 2}, // PTB10 , TPM0 CH1
106+
{PTB11, PWM_1, 2}, // PTB11 , TPM0 CH0
107+
{PTB13, PWM_8, 2}, // PTB13 , TPM1 CH1
108+
{NC , NC, 0}
110109
};
111-

libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL05Z/gpio_irq_api.c

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ static void handle_interrupt_in(PORT_Type *port, int ch_base) {
3737
if (port->ISFR & pmask) {
3838
mask |= pmask;
3939
uint32_t id = channel_ids[ch_base + i];
40-
if (id == 0) continue;
40+
if (id == 0) {
41+
continue;
42+
}
4143

4244
FGPIO_Type *gpio;
4345
gpio_irq_event event = IRQ_NONE;
@@ -170,3 +172,13 @@ void gpio_irq_disable(gpio_irq_t *obj) {
170172
NVIC_DisableIRQ(PORTB_IRQn);
171173
}
172174
}
175+
176+
// Change the NMI pin to an input. This allows NMI pin to
177+
// be used as a low power mode wakeup. The application will
178+
// need to change the pin back to NMI_b or wakeup only occurs once!
179+
extern void gpio_init(gpio_t *obj, PinName pin, PinDirection direction);
180+
void NMI_Handler(void)
181+
{
182+
gpio_t gpio;
183+
gpio_init(&gpio, PTB5, PIN_INPUT);
184+
}

libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/PeripheralPins.c

Lines changed: 41 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -153,46 +153,45 @@ const PinMap PinMap_SPI_SSEL[] = {
153153

154154
/************PWM***************/
155155
const PinMap PinMap_PWM[] = {
156-
// LEDs
157-
{LED_RED , PWM_9 , 3}, // PTB18, TPM2 CH0
158-
{LED_GREEN, PWM_10, 3}, // PTB19, TPM2 CH1
159-
{LED_BLUE , PWM_2 , 4}, // PTD1 , TPM0 CH1
160-
161-
// Arduino digital pinout
162-
{D0, PWM_9 , 3}, // PTA1 , TPM2 CH0
163-
{D1, PWM_10, 3}, // PTA2 , TPM2 CH1
164-
{D2, PWM_5 , 4}, // PTD4 , TPM0 CH4
165-
{D3, PWM_7 , 3}, // PTA12, TPM1 CH0
166-
{D4, PWM_2 , 3}, // PTA4 , TPM0 CH1
167-
{D5, PWM_3 , 3}, // PTA5 , TPM0 CH2
168-
{D6, PWM_5 , 3}, // PTC8 , TPM0 CH4
169-
{D7, PWM_6 , 3}, // PTC9 , TPM0 CH5
170-
{D8, PWM_8 , 3}, // PTA13, TPM1 CH1
171-
{D9, PWM_6 , 4}, // PTD5 , TPM0 CH5
172-
{D10, PWM_1 , 4}, // PTD0 , TPM0 CH0
173-
{D11, PWM_3 , 4}, // PTD2 , TPM0 CH2
174-
{D12, PWM_4 , 4}, // PTD3 , TPM0 CH3
175-
{D13, PWM_2 , 4}, // PTD1 , TPM0 CH1,
176-
177-
{PTA0, PWM_6, 3},
178-
{PTA3, PWM_1, 3},
179-
{PTB0, PWM_7, 3},
180-
{PTB1, PWM_8, 3},
181-
{PTB2, PWM_9, 3},
182-
{PTB3, PWM_10, 3},
183-
{PTC1, PWM_1, 4},
184-
{PTC2, PWM_2, 4},
185-
{PTC3, PWM_3, 4},
186-
{PTC4, PWM_4, 4},
187-
{PTE20, PWM_7, 3},
188-
{PTE21, PWM_8, 3},
189-
{PTE22, PWM_9, 3},
190-
{PTE23, PWM_10, 3},
191-
{PTE24, PWM_1, 3},
192-
{PTE25, PWM_2, 3},
193-
{PTE29, PWM_3, 3},
194-
{PTE30, PWM_4, 3},
195-
{PTE31, PWM_5, 3},
196-
197-
{NC , NC , 0}
156+
{PTA0, PWM_6, 3}, // PTA0 , TPM0 CH5
157+
{PTA1, PWM_9 , 3}, // PTA1 , TPM2 CH0
158+
{PTA2, PWM_10, 3}, // PTA2 , TPM2 CH1
159+
{PTA3, PWM_1, 3}, // PTA3 , TPM0 CH0
160+
{PTA4, PWM_2 , 3}, // PTA4 , TPM0 CH1
161+
{PTA5, PWM_3 , 3}, // PTA5 , TPM0 CH2
162+
{PTA12, PWM_7 , 3}, // PTA12, TPM1 CH0
163+
{PTA13, PWM_8 , 3}, // PTA13, TPM1 CH1
164+
165+
{PTB0, PWM_7, 3}, // PTB0 , TPM1 CH0
166+
{PTB1, PWM_8, 3}, // PTB1 , TPM1 CH1
167+
{PTB2, PWM_9, 3}, // PTB2 , TPM2 CH0
168+
{PTB3, PWM_10, 3}, // PTB3 , TPM2 CH1
169+
{PTB18, PWM_9, 3}, // PTB18, TPM2 CH0
170+
{PTB19, PWM_10, 3}, // PTB18, TPM2 CH1
171+
172+
{PTC1, PWM_1, 4}, // PTC1 , TPM0 CH0
173+
{PTC2, PWM_2, 4}, // PTC2 , TPM0 CH1
174+
{PTC3, PWM_3, 4}, // PTC3 , TPM0 CH2
175+
{PTC4, PWM_4, 4}, // PTC4 , TPM0 CH3
176+
{PTC8, PWM_5 , 3}, // PTC8 , TPM0 CH4
177+
{PTC9, PWM_6 , 3}, // PTC9 , TPM0 CH5
178+
179+
{PTD0, PWM_1 , 4}, // PTD0 , TPM0 CH0
180+
{PTD1, PWM_2 , 4}, // PTD0 , TPM0 CH1
181+
{PTD2, PWM_3 , 4}, // PTD2 , TPM0 CH2
182+
{PTD3, PWM_4 , 4}, // PTD3 , TPM0 CH3
183+
{PTD4, PWM_5 , 4}, // PTD4 , TPM0 CH4
184+
{PTD5, PWM_6 , 4}, // PTD5 , TPM0 CH5
185+
186+
{PTE20, PWM_7, 3}, // PTE20, TPM1 CH0
187+
{PTE21, PWM_8, 3}, // PTE21, TPM1 CH1
188+
{PTE22, PWM_9, 3}, // PTE22, TPM2 CH0
189+
{PTE23, PWM_10, 3}, // PTE23, TPM2 CH1
190+
{PTE24, PWM_1, 3}, // PTE24, TPM0 CH0
191+
{PTE25, PWM_2, 3}, // PTE25, TPM0 CH1
192+
{PTE26, PWM_6, 3}, // PTE26, TPM0 CH5
193+
{PTE29, PWM_3, 3}, // PTE29, TPM0 CH2
194+
{PTE30, PWM_4, 3}, // PTE30, TPM0 CH3
195+
{PTE31, PWM_5, 3}, // PTE31, TPM0 CH4
196+
{NC , NC, 0}
198197
};

libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL25Z/gpio_irq_api.c

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ static void handle_interrupt_in(PORT_Type *port, int ch_base) {
3737
if (port->ISFR & pmask) {
3838
mask |= pmask;
3939
uint32_t id = channel_ids[ch_base + i];
40-
if (id == 0) continue;
40+
if (id == 0) {
41+
continue;
42+
}
4143

4244
FGPIO_Type *gpio;
4345
gpio_irq_event event = IRQ_NONE;
@@ -55,8 +57,9 @@ static void handle_interrupt_in(PORT_Type *port, int ch_base) {
5557
event = (gpio->PDIR & pmask) ? (IRQ_RISE) : (IRQ_FALL);
5658
break;
5759
}
58-
if (event != IRQ_NONE)
60+
if (event != IRQ_NONE) {
5961
irq_handler(id, event);
62+
}
6063
}
6164
}
6265
port->ISFR = mask;
@@ -159,3 +162,13 @@ void gpio_irq_disable(gpio_irq_t *obj) {
159162
NVIC_DisableIRQ(PORTD_IRQn);
160163
}
161164
}
165+
166+
// Change the NMI pin to an input. This allows NMI pin to
167+
// be used as a low power mode wakeup. The application will
168+
// need to change the pin back to NMI_b or wakeup only occurs once!
169+
extern void gpio_init(gpio_t *obj, PinName pin, PinDirection direction);
170+
void NMI_Handler(void)
171+
{
172+
gpio_t gpio;
173+
gpio_init(&gpio, PTA4, PIN_INPUT);
174+
}

libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL46Z/PeripheralPins.c

Lines changed: 41 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -163,47 +163,47 @@ const PinMap PinMap_SPI_SSEL[] = {
163163

164164
/************PWM***************/
165165
const PinMap PinMap_PWM[] = {
166-
// LEDs - only RED pin is PWM capable
167-
{LED_RED, PWM_3, 3}, // PTE29, TPM0 CH2
166+
{PTA0, PWM_6, 3}, // PTA0 , TPM0 CH5
167+
{PTA1, PWM_9 , 3}, // PTA1 , TPM2 CH0
168+
{PTA2, PWM_10, 3}, // PTA2 , TPM2 CH1
169+
{PTA3, PWM_1, 3}, // PTA3 , TPM0 CH0
170+
{PTA4, PWM_2 , 3}, // PTA4 , TPM0 CH1
171+
{PTA5, PWM_3 , 3}, // PTA5 , TPM0 CH2
172+
{PTA6, PWM_4, 3}, // PTA6 , TPM0 CH3
173+
{PTA7, PWM_5, 3}, // PTA7 , TPM0 CH4
174+
{PTA12, PWM_7 , 3}, // PTA12, TPM1 CH0
175+
{PTA13, PWM_8 , 3}, // PTA13, TPM1 CH1
176+
177+
{PTB0, PWM_7, 3}, // PTB0 , TPM1 CH0
178+
{PTB1, PWM_8, 3}, // PTB1 , TPM1 CH1
179+
{PTB2, PWM_9, 3}, // PTB2 , TPM2 CH0
180+
{PTB3, PWM_10, 3}, // PTB3 , TPM2 CH1
181+
{PTB18, PWM_9, 3}, // PTB18, TPM2 CH0
182+
{PTB19, PWM_10, 3}, // PTB18, TPM2 CH1
168183

169-
// Arduino digital pinout
170-
{D0, PWM_9 , 3}, // PTA1 , TPM2 CH0
171-
{D1, PWM_10, 3}, // PTA2 , TPM2 CH1
172-
{D2, PWM_4 , 4}, // PTD3 , TPM0 CH3
173-
{D3, PWM_7 , 3}, // PTA12, TPM1 CH0
174-
{D4, PWM_2 , 3}, // PTA4 , TPM0 CH1
175-
{D5, PWM_3 , 3}, // PTA5 , TPM0 CH2
176-
{D6, PWM_5 , 3}, // PTC8 , TPM0 CH4
177-
{D7, PWM_6 , 3}, // PTC9 , TPM0 CH5
178-
{D8, PWM_8 , 3}, // PTA13, TPM1 CH1
179-
{D9, PWM_3 , 4}, // PTD2 , TPM0 CH2
180-
{D10, PWM_5 , 4}, // PTD4 , TPM0 CH4
181-
//PWM on D11 not available
182-
//PWM on D12 not available
183-
{D13, PWM_2 , 4}, // PTD5 , TPM0 CH1,
184+
{PTC1, PWM_1, 4}, // PTC1 , TPM0 CH0
185+
{PTC2, PWM_2, 4}, // PTC2 , TPM0 CH1
186+
{PTC3, PWM_3, 4}, // PTC3 , TPM0 CH2
187+
{PTC4, PWM_4, 4}, // PTC4 , TPM0 CH3
188+
{PTC8, PWM_5 , 3}, // PTC8 , TPM0 CH4
189+
{PTC9, PWM_6 , 3}, // PTC9 , TPM0 CH5
190+
191+
{PTD0, PWM_1 , 4}, // PTD0 , TPM0 CH0
192+
{PTD1, PWM_2 , 4}, // PTD0 , TPM0 CH1
193+
{PTD2, PWM_3 , 4}, // PTD2 , TPM0 CH2
194+
{PTD3, PWM_4 , 4}, // PTD3 , TPM0 CH3
195+
{PTD4, PWM_5 , 4}, // PTD4 , TPM0 CH4
196+
{PTD5, PWM_6 , 4}, // PTD5 , TPM0 CH5
184197

185-
{PTA0, PWM_6, 3},
186-
{PTA3, PWM_1, 3},
187-
{PTA6, PWM_4, 3},
188-
{PTA7, PWM_5, 3},
189-
{PTB0, PWM_7, 3},
190-
{PTB1, PWM_8, 3},
191-
{PTB2, PWM_9, 3},
192-
{PTB3, PWM_10, 3},
193-
{PTC1, PWM_1, 4},
194-
{PTC2, PWM_2, 4},
195-
{PTC3, PWM_3, 4},
196-
{PTC4, PWM_4, 4},
197-
{PTE20, PWM_7, 3},
198-
{PTE21, PWM_8, 3},
199-
{PTE22, PWM_9, 3},
200-
{PTE23, PWM_10, 3},
201-
{PTE24, PWM_1, 3},
202-
{PTE25, PWM_2, 3},
203-
{PTE26, PWM_6, 3},
204-
{PTE29, PWM_3, 3},
205-
{PTE30, PWM_4, 3},
206-
{PTE31, PWM_5, 3},
207-
208-
{NC , NC , 0}
198+
{PTE20, PWM_7, 3}, // PTE20, TPM1 CH0
199+
{PTE21, PWM_8, 3}, // PTE21, TPM1 CH1
200+
{PTE22, PWM_9, 3}, // PTE22, TPM2 CH0
201+
{PTE23, PWM_10, 3}, // PTE23, TPM2 CH1
202+
{PTE24, PWM_1, 3}, // PTE24, TPM0 CH0
203+
{PTE25, PWM_2, 3}, // PTE25, TPM0 CH1
204+
{PTE26, PWM_6, 3}, // PTE26, TPM0 CH5
205+
{PTE29, PWM_3, 3}, // PTE29, TPM0 CH2
206+
{PTE30, PWM_4, 3}, // PTE30, TPM0 CH3
207+
{PTE31, PWM_5, 3}, // PTE31, TPM0 CH4
208+
{NC , NC, 0}
209209
};

libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KLXX/TARGET_KL46Z/gpio_irq_api.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ static void handle_interrupt_in(PORT_Type *port, int ch_base) {
3737
if (port->ISFR & pmask) {
3838
mask |= pmask;
3939
uint32_t id = channel_ids[ch_base + i];
40-
if (id == 0)
40+
if (id == 0) {
4141
continue;
42+
}
4243

4344
FGPIO_Type *gpio;
4445
gpio_irq_event event = IRQ_NONE;
@@ -181,3 +182,13 @@ void gpio_irq_disable(gpio_irq_t *obj) {
181182
NVIC_DisableIRQ(PORTC_PORTD_IRQn);
182183
}
183184
}
185+
186+
// Change the NMI pin to an input. This allows NMI pin to
187+
// be used as a low power mode wakeup. The application will
188+
// need to change the pin back to NMI_b or wakeup only occurs once!
189+
extern void gpio_init(gpio_t *obj, PinName pin, PinDirection direction);
190+
void NMI_Handler(void)
191+
{
192+
gpio_t gpio;
193+
gpio_init(&gpio, PTA4, PIN_INPUT);
194+
}

0 commit comments

Comments
 (0)