mirror of
https://github.com/RIOT-OS/RIOT.git
synced 2024-12-29 04:50:03 +01:00
cpu - stm32f4: added support for more channels/devices in periph impls
This commit is contained in:
parent
47657ac7d9
commit
edb6a4ddf4
@ -14,6 +14,7 @@
|
||||
* @brief Low-level GPIO driver implementation
|
||||
*
|
||||
* @author Hauke Petersen <mail@haukepetersen.de>
|
||||
* @author Fabian Nack <nack@inf.fu-berlin.de>
|
||||
*
|
||||
* @}
|
||||
*/
|
||||
@ -133,6 +134,34 @@ int gpio_init_out(gpio_t dev, gpio_pp_t pullup)
|
||||
port = GPIO_11_PORT;
|
||||
pin = GPIO_11_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_12_EN
|
||||
case GPIO_12:
|
||||
GPIO_12_CLKEN();
|
||||
port = GPIO_12_PORT;
|
||||
pin = GPIO_12_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_13_EN
|
||||
case GPIO_13:
|
||||
GPIO_13_CLKEN();
|
||||
port = GPIO_13_PORT;
|
||||
pin = GPIO_13_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_14_EN
|
||||
case GPIO_14:
|
||||
GPIO_14_CLKEN();
|
||||
port = GPIO_14_PORT;
|
||||
pin = GPIO_14_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_15_EN
|
||||
case GPIO_15:
|
||||
GPIO_15_CLKEN();
|
||||
port = GPIO_15_PORT;
|
||||
pin = GPIO_15_PIN;
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -236,6 +265,34 @@ int gpio_init_in(gpio_t dev, gpio_pp_t pullup)
|
||||
port = GPIO_11_PORT;
|
||||
pin = GPIO_11_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_12_EN
|
||||
case GPIO_12:
|
||||
GPIO_12_CLKEN();
|
||||
port = GPIO_12_PORT;
|
||||
pin = GPIO_12_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_13_EN
|
||||
case GPIO_13:
|
||||
GPIO_13_CLKEN();
|
||||
port = GPIO_13_PORT;
|
||||
pin = GPIO_13_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_14_EN
|
||||
case GPIO_14:
|
||||
GPIO_14_CLKEN();
|
||||
port = GPIO_14_PORT;
|
||||
pin = GPIO_14_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_15_EN
|
||||
case GPIO_15:
|
||||
GPIO_15_CLKEN();
|
||||
port = GPIO_15_PORT;
|
||||
pin = GPIO_15_PIN;
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -355,6 +412,38 @@ int gpio_init_int(gpio_t dev, gpio_pp_t pullup, gpio_flank_t flank, gpio_cb_t cb
|
||||
NVIC_SetPriority(GPIO_11_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_11_IRQ);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_12_EN
|
||||
case GPIO_12:
|
||||
pin = GPIO_12_PIN;
|
||||
GPIO_12_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_12_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_12_IRQ);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_13_EN
|
||||
case GPIO_13:
|
||||
pin = GPIO_13_PIN;
|
||||
GPIO_13_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_13_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_13_IRQ);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_14_EN
|
||||
case GPIO_14:
|
||||
pin = GPIO_14_PIN;
|
||||
GPIO_14_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_14_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_14_IRQ);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_15_EN
|
||||
case GPIO_15:
|
||||
pin = GPIO_15_PIN;
|
||||
GPIO_15_EXTI_CFG();
|
||||
NVIC_SetPriority(GPIO_15_IRQ, GPIO_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(GPIO_15_IRQ);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -448,6 +537,26 @@ void gpio_irq_enable(gpio_t dev)
|
||||
case GPIO_11:
|
||||
EXTI->IMR |= (1 << GPIO_11_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_12_EN
|
||||
case GPIO_12:
|
||||
EXTI->IMR |= (1 << GPIO_12_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_13_EN
|
||||
case GPIO_13:
|
||||
EXTI->IMR |= (1 << GPIO_13_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_14_EN
|
||||
case GPIO_14:
|
||||
EXTI->IMR |= (1 << GPIO_14_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_15_EN
|
||||
case GPIO_15:
|
||||
EXTI->IMR |= (1 << GPIO_15_PIN);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@ -514,6 +623,26 @@ void gpio_irq_disable(gpio_t dev)
|
||||
case GPIO_11:
|
||||
EXTI->IMR &= ~(1 << GPIO_11_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_12_EN
|
||||
case GPIO_12:
|
||||
EXTI->IMR &= ~(1 << GPIO_12_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_13_EN
|
||||
case GPIO_13:
|
||||
EXTI->IMR &= ~(1 << GPIO_13_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_14_EN
|
||||
case GPIO_14:
|
||||
EXTI->IMR &= ~(1 << GPIO_14_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_15_EN
|
||||
case GPIO_15:
|
||||
EXTI->IMR &= ~(1 << GPIO_15_PIN);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@ -595,6 +724,30 @@ int gpio_read(gpio_t dev)
|
||||
port = GPIO_11_PORT;
|
||||
pin = GPIO_11_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_12_EN
|
||||
case GPIO_12:
|
||||
port = GPIO_12_PORT;
|
||||
pin = GPIO_12_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_13_EN
|
||||
case GPIO_13:
|
||||
port = GPIO_13_PORT;
|
||||
pin = GPIO_13_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_14_EN
|
||||
case GPIO_14:
|
||||
port = GPIO_14_PORT;
|
||||
pin = GPIO_14_PIN;
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_15_EN
|
||||
case GPIO_15:
|
||||
port = GPIO_15_PORT;
|
||||
pin = GPIO_15_PIN;
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -667,6 +820,26 @@ void gpio_set(gpio_t dev)
|
||||
case GPIO_11:
|
||||
GPIO_11_PORT->ODR |= (1 << GPIO_11_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_12_EN
|
||||
case GPIO_12:
|
||||
GPIO_12_PORT->ODR |= (1 << GPIO_12_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_13_EN
|
||||
case GPIO_13:
|
||||
GPIO_13_PORT->ODR |= (1 << GPIO_13_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_14_EN
|
||||
case GPIO_14:
|
||||
GPIO_14_PORT->ODR |= (1 << GPIO_14_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_15_EN
|
||||
case GPIO_15:
|
||||
GPIO_15_PORT->ODR |= (1 << GPIO_15_PIN);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@ -733,6 +906,26 @@ void gpio_clear(gpio_t dev)
|
||||
case GPIO_11:
|
||||
GPIO_11_PORT->ODR &= ~(1 << GPIO_11_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_12_EN
|
||||
case GPIO_12:
|
||||
GPIO_12_PORT->ODR &= ~(1 << GPIO_12_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_13_EN
|
||||
case GPIO_13:
|
||||
GPIO_13_PORT->ODR &= ~(1 << GPIO_13_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_14_EN
|
||||
case GPIO_14:
|
||||
GPIO_14_PORT->ODR &= ~(1 << GPIO_14_PIN);
|
||||
break;
|
||||
#endif
|
||||
#if GPIO_15_EN
|
||||
case GPIO_15:
|
||||
GPIO_15_PORT->ODR &= ~(1 << GPIO_15_PIN);
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
@ -14,6 +14,7 @@
|
||||
* @brief Low-level UART driver implementation
|
||||
*
|
||||
* @author Hauke Petersen <hauke.petersen@fu-berlin.de>
|
||||
* @author Fabian Nack <nack@inf.fu-berlin.de>
|
||||
*
|
||||
* @}
|
||||
*/
|
||||
@ -77,6 +78,13 @@ int uart_init(uart_t uart, uint32_t baudrate, uart_rx_cb_t rx_cb, uart_tx_cb_t t
|
||||
NVIC_EnableIRQ(UART_1_IRQ_CHAN);
|
||||
UART_1_DEV->CR1 |= USART_CR1_RXNEIE;
|
||||
break;
|
||||
#endif
|
||||
#if UART_2_EN
|
||||
case UART_2:
|
||||
NVIC_SetPriority(UART_2_IRQ_CHAN, UART_IRQ_PRIO);
|
||||
NVIC_EnableIRQ(UART_2_IRQ_CHAN);
|
||||
UART_2_DEV->CR1 |= USART_CR1_RXNEIE;
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -119,9 +127,25 @@ int uart_init_blocking(uart_t uart, uint32_t baudrate)
|
||||
UART_1_CLKEN();
|
||||
UART_1_PORT_CLKEN();
|
||||
break;
|
||||
#endif
|
||||
#if UART_2_EN
|
||||
case UART_2:
|
||||
dev = UART_2_DEV;
|
||||
port = UART_2_PORT;
|
||||
clk = UART_2_CLK;
|
||||
tx_pin = UART_2_TX_PIN;
|
||||
rx_pin = UART_2_RX_PIN;
|
||||
af = UART_2_AF;
|
||||
UART_2_CLKEN();
|
||||
UART_2_PORT_CLKEN();
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* configure pp mode with no pull for RX and TX pins */
|
||||
port->OTYPER &= ~(1 << rx_pin | 1 << tx_pin);
|
||||
port->PUPDR &= ~(3 << (rx_pin * 2) | 3 << (tx_pin * 2));
|
||||
|
||||
/* configure RX and TX pins, set pin to use alternative function mode */
|
||||
port->MODER &= ~(3 << (rx_pin * 2) | 3 << (tx_pin * 2));
|
||||
port->MODER |= 2 << (rx_pin * 2) | 2 << (tx_pin * 2);
|
||||
@ -169,6 +193,11 @@ void uart_tx_begin(uart_t uart)
|
||||
case UART_1:
|
||||
UART_1_DEV->CR1 |= USART_CR1_TXEIE;
|
||||
break;
|
||||
#endif
|
||||
#if UART_2_EN
|
||||
case UART_2:
|
||||
UART_2_DEV->CR1 |= USART_CR1_TXEIE;
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@ -187,6 +216,11 @@ int uart_write(uart_t uart, char data)
|
||||
case UART_1:
|
||||
dev = UART_1_DEV;
|
||||
break;
|
||||
#endif
|
||||
#if UART_2_EN
|
||||
case UART_2:
|
||||
dev = UART_2_DEV;
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -211,6 +245,11 @@ int uart_read_blocking(uart_t uart, char *data)
|
||||
case UART_1:
|
||||
dev = UART_1_DEV;
|
||||
break;
|
||||
#endif
|
||||
#if UART_2_EN
|
||||
case UART_2:
|
||||
dev = UART_2_DEV;
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -234,6 +273,11 @@ int uart_write_blocking(uart_t uart, char data)
|
||||
case UART_1:
|
||||
dev = UART_1_DEV;
|
||||
break;
|
||||
#endif
|
||||
#if UART_2_EN
|
||||
case UART_2:
|
||||
dev = UART_2_DEV;
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -255,6 +299,11 @@ void uart_poweron(uart_t uart)
|
||||
case UART_1:
|
||||
UART_1_CLKEN();
|
||||
break;
|
||||
#endif
|
||||
#if UART_2_EN
|
||||
case UART_2:
|
||||
UART_2_CLKEN();
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@ -271,6 +320,11 @@ void uart_poweroff(uart_t uart)
|
||||
case UART_1:
|
||||
UART_1_CLKDIS();
|
||||
break;
|
||||
#endif
|
||||
#if UART_2_EN
|
||||
case UART_2:
|
||||
UART_2_CLKDIS();
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@ -293,6 +347,15 @@ __attribute__((naked)) void UART_1_ISR(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if UART_2_EN
|
||||
__attribute__((naked)) void UART_2_ISR(void)
|
||||
{
|
||||
ISR_ENTER();
|
||||
irq_handler(UART_2, UART_2_DEV);
|
||||
ISR_EXIT();
|
||||
}
|
||||
#endif
|
||||
|
||||
static inline void irq_handler(uint8_t uartnum, USART_TypeDef *dev)
|
||||
{
|
||||
if (dev->SR & USART_SR_RXNE) {
|
||||
|
Loading…
Reference in New Issue
Block a user