mirror of https://github.com/ARMmbed/mbed-os.git
Merge branch 'master' of git://github.com/sg-/mbed into sg--master
Conflicts: libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F030R8/gpio_irq_api.c libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_F103RB/gpio_irq_api.c libraries/mbed/targets/hal/TARGET_STM/TARGET_NUCLEO_L152RE/gpio_irq_api.cpull/261/head
commit
efbbb2f307
|
@ -15,6 +15,9 @@
|
||||||
*/
|
*/
|
||||||
#include "semihost_api.h"
|
#include "semihost_api.h"
|
||||||
#include "mbed_interface.h"
|
#include "mbed_interface.h"
|
||||||
|
#if DEVICE_STDIO_MESSAGES
|
||||||
|
#include <stdio.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef TOOLCHAIN_GCC_CW
|
#ifdef TOOLCHAIN_GCC_CW
|
||||||
// TODO: Ideally, we would like to define directly "_ExitProcess"
|
// TODO: Ideally, we would like to define directly "_ExitProcess"
|
||||||
|
@ -23,6 +26,11 @@ void mbed_exit(int return_code) {
|
||||||
void exit(int return_code) {
|
void exit(int return_code) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if DEVICE_STDIO_MESSAGES
|
||||||
|
fflush(stdout);
|
||||||
|
fflush(stderr);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if DEVICE_SEMIHOST
|
#if DEVICE_SEMIHOST
|
||||||
if (mbed_interface_connected()) {
|
if (mbed_interface_connected()) {
|
||||||
semihost_exit();
|
semihost_exit();
|
||||||
|
|
|
@ -108,7 +108,7 @@ int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
error("gpio_irq only supported on port A-E.\n");
|
error("gpio_irq only supported on port A-E.");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
NVIC_SetVector(irq_n, vector);
|
NVIC_SetVector(irq_n, vector);
|
||||||
|
|
|
@ -126,7 +126,7 @@ void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_b
|
||||||
|
|
||||||
// 8 data bits = 0 ... 9 data bits = 1
|
// 8 data bits = 0 ... 9 data bits = 1
|
||||||
if ((data_bits < 8) || (data_bits > 9))
|
if ((data_bits < 8) || (data_bits > 9))
|
||||||
error("Invalid number of bits (%d) in serial format, should be 8..9\r\n", data_bits);
|
error("Invalid number of bits (%d) in serial format, should be 8..9", data_bits);
|
||||||
|
|
||||||
data_bits -= 8;
|
data_bits -= 8;
|
||||||
|
|
||||||
|
@ -136,13 +136,13 @@ void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_b
|
||||||
case ParityOdd : parity_enable = 1; parity_select = 1; data_bits++; break;
|
case ParityOdd : parity_enable = 1; parity_select = 1; data_bits++; break;
|
||||||
case ParityEven: parity_enable = 1; parity_select = 0; data_bits++; break;
|
case ParityEven: parity_enable = 1; parity_select = 0; data_bits++; break;
|
||||||
default:
|
default:
|
||||||
error("Invalid serial parity setting\r\n");
|
error("Invalid serial parity setting");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 1 stop bits = 0, 2 stop bits = 1
|
// 1 stop bits = 0, 2 stop bits = 1
|
||||||
if ((stop_bits != 1) && (stop_bits != 2))
|
if ((stop_bits != 1) && (stop_bits != 2))
|
||||||
error("Invalid stop bits specified\r\n");
|
error("Invalid stop bits specified");
|
||||||
stop_bits -= 1;
|
stop_bits -= 1;
|
||||||
|
|
||||||
uint32_t m10 = 0;
|
uint32_t m10 = 0;
|
||||||
|
@ -151,7 +151,7 @@ void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_b
|
||||||
if (data_bits == 2) {
|
if (data_bits == 2) {
|
||||||
// only uart0 supports 10 bit communication
|
// only uart0 supports 10 bit communication
|
||||||
if (obj->index != 0)
|
if (obj->index != 0)
|
||||||
error("Invalid number of bits (9) to be used with parity\r\n");
|
error("Invalid number of bits (9) to be used with parity");
|
||||||
data_bits = 0;
|
data_bits = 0;
|
||||||
m10 = 1;
|
m10 = 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -99,7 +99,7 @@ int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
error("gpio_irq only supported on Port A and B\n");
|
error("gpio_irq only supported on Port A and B");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
NVIC_SetVector(irq_n, vector);
|
NVIC_SetVector(irq_n, vector);
|
||||||
|
|
|
@ -89,7 +89,7 @@ int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
error("gpio_irq only supported on port A and D\n");
|
error("gpio_irq only supported on port A and D");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
NVIC_SetVector(irq_n, vector);
|
NVIC_SetVector(irq_n, vector);
|
||||||
|
|
|
@ -109,7 +109,7 @@ int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
error("gpio_irq only supported on port A,C and D\n");
|
error("gpio_irq only supported on port A,C and D");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
NVIC_SetVector(irq_n, vector);
|
NVIC_SetVector(irq_n, vector);
|
||||||
|
|
|
@ -159,7 +159,7 @@ void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_b
|
||||||
|
|
||||||
// TODO: Support other number of data bits (also in the write method!)
|
// TODO: Support other number of data bits (also in the write method!)
|
||||||
if ((data_bits < 8) || (data_bits > 8)) {
|
if ((data_bits < 8) || (data_bits > 8)) {
|
||||||
error("Invalid number of bits (%d) in serial format, should be 8\r\n", data_bits);
|
error("Invalid number of bits (%d) in serial format, should be 8", data_bits);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t parity_enable, parity_select;
|
uint8_t parity_enable, parity_select;
|
||||||
|
@ -168,13 +168,13 @@ void serial_format(serial_t *obj, int data_bits, SerialParity parity, int stop_b
|
||||||
case ParityOdd : parity_enable = 1; parity_select = 1; data_bits++; break;
|
case ParityOdd : parity_enable = 1; parity_select = 1; data_bits++; break;
|
||||||
case ParityEven: parity_enable = 1; parity_select = 0; data_bits++; break;
|
case ParityEven: parity_enable = 1; parity_select = 0; data_bits++; break;
|
||||||
default:
|
default:
|
||||||
error("Invalid serial parity setting\r\n");
|
error("Invalid serial parity setting");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 1 stop bits = 0, 2 stop bits = 1
|
// 1 stop bits = 0, 2 stop bits = 1
|
||||||
if ((stop_bits != 1) && (stop_bits != 2)) {
|
if ((stop_bits != 1) && (stop_bits != 2)) {
|
||||||
error("Invalid stop bits specified\r\n");
|
error("Invalid stop bits specified");
|
||||||
}
|
}
|
||||||
stop_bits -= 1;
|
stop_bits -= 1;
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
|
|
||||||
#define DEVICE_DEBUG_AWARENESS 0
|
#define DEVICE_DEBUG_AWARENESS 0
|
||||||
|
|
||||||
#define DEVICE_STDIO_MESSAGES 0
|
#define DEVICE_STDIO_MESSAGES 1
|
||||||
|
|
||||||
#define DEVICE_ERROR_RED 1
|
#define DEVICE_ERROR_RED 1
|
||||||
|
|
||||||
|
|
|
@ -109,7 +109,7 @@ int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
error("gpio_irq only supported on port A-E.\n");
|
error("gpio_irq only supported on port A-E.");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
NVIC_SetVector(irq_n, vector);
|
NVIC_SetVector(irq_n, vector);
|
||||||
|
|
|
@ -42,8 +42,7 @@ static const PinMap PinMap_SPI_MOSI[] = {
|
||||||
{PTB16, SPI_1, 2},
|
{PTB16, SPI_1, 2},
|
||||||
{PTB22, SPI_2, 2},
|
{PTB22, SPI_2, 2},
|
||||||
{PTC6 , SPI_0, 2},
|
{PTC6 , SPI_0, 2},
|
||||||
{PTD2 , SPI_0, 2},
|
{PTD6 , SPI_1, 7},
|
||||||
{PTD6 , SPI_0, 7},
|
|
||||||
{NC , NC , 0}
|
{NC , NC , 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -55,7 +54,6 @@ static const PinMap PinMap_SPI_MISO[] = {
|
||||||
{PTB17, SPI_1, 2},
|
{PTB17, SPI_1, 2},
|
||||||
{PTB23, SPI_2, 2},
|
{PTB23, SPI_2, 2},
|
||||||
{PTC7 , SPI_0, 2},
|
{PTC7 , SPI_0, 2},
|
||||||
{PTD3 , SPI_0, 2},
|
|
||||||
{PTD7 , SPI_1, 7},
|
{PTD7 , SPI_1, 7},
|
||||||
{NC , NC , 0}
|
{NC , NC , 0}
|
||||||
};
|
};
|
||||||
|
|
|
@ -89,7 +89,7 @@ int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32
|
||||||
|
|
||||||
// Interrupts available only on GPIO0 and GPIO2
|
// Interrupts available only on GPIO0 and GPIO2
|
||||||
if (obj->port != LPC_GPIO0_BASE && obj->port != LPC_GPIO2_BASE) {
|
if (obj->port != LPC_GPIO0_BASE && obj->port != LPC_GPIO2_BASE) {
|
||||||
error("pins on this port cannot generate interrupts\n");
|
error("pins on this port cannot generate interrupts");
|
||||||
}
|
}
|
||||||
|
|
||||||
// put us in the interrupt table
|
// put us in the interrupt table
|
||||||
|
|
|
@ -80,7 +80,7 @@ int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32
|
||||||
|
|
||||||
// Interrupts available only on GPIO0 and GPIO2
|
// Interrupts available only on GPIO0 and GPIO2
|
||||||
if (obj->port != LPC_GPIO0_BASE && obj->port != LPC_GPIO2_BASE) {
|
if (obj->port != LPC_GPIO0_BASE && obj->port != LPC_GPIO2_BASE) {
|
||||||
error("pins on this port cannot generate interrupts\n");
|
error("pins on this port cannot generate interrupts");
|
||||||
}
|
}
|
||||||
|
|
||||||
// put us in the interrupt table
|
// put us in the interrupt table
|
||||||
|
|
|
@ -102,7 +102,7 @@ int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32
|
||||||
|
|
||||||
// Interrupts available only on GPIO0 and GPIO2
|
// Interrupts available only on GPIO0 and GPIO2
|
||||||
if (obj->port != LPC_GPIO0_BASE && obj->port != LPC_GPIO2_BASE) {
|
if (obj->port != LPC_GPIO0_BASE && obj->port != LPC_GPIO2_BASE) {
|
||||||
error("pins on this port cannot generate interrupts\n");
|
error("pins on this port cannot generate interrupts");
|
||||||
}
|
}
|
||||||
|
|
||||||
// put us in the interrupt table
|
// put us in the interrupt table
|
||||||
|
|
|
@ -104,7 +104,7 @@ int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32
|
||||||
irq_index = 2;
|
irq_index = 2;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
error("This pin is not supported\n");
|
error("This pin is not supported");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -110,7 +110,7 @@ int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32
|
||||||
irq_index = 3;
|
irq_index = 3;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
error("This pin is not supported with InterruptIn.\n");
|
error("This pin is not supported with InterruptIn.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -138,7 +138,7 @@ int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32
|
||||||
irq_index = 6;
|
irq_index = 6;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
error("InterruptIn error: pin not supported.\n");
|
error("InterruptIn error: pin not supported.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -154,7 +154,7 @@ int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32
|
||||||
irq_index = 6;
|
irq_index = 6;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
error("This pin is not supported with InterruptIn.\n");
|
error("This pin is not supported with InterruptIn.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -138,7 +138,7 @@ int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32
|
||||||
irq_index = 6;
|
irq_index = 6;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
error("InterruptIn error: pin not supported.\n");
|
error("InterruptIn error: pin not supported.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -154,7 +154,7 @@ int gpio_irq_init(gpio_irq_t *obj, PinName pin, gpio_irq_handler handler, uint32
|
||||||
irq_index = 6;
|
irq_index = 6;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
error("This pin is not supported with InterruptIn.\n");
|
error("This pin is not supported with InterruptIn.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue