From 322a324963d8210dbbe529357b41e7c9ff8f8db6 Mon Sep 17 00:00:00 2001 From: Marti Bolivar Date: Thu, 31 May 2012 18:44:26 -0400 Subject: stm32f2/gpio.c: Fix some bugs. Make gpioh.regs actually point to GPIOH_BASE. Properly AND out flag bits in gpio_set_modef(). Signed-off-by: Marti Bolivar --- libmaple/stm32f2/gpio.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'libmaple/stm32f2/gpio.c') diff --git a/libmaple/stm32f2/gpio.c b/libmaple/stm32f2/gpio.c index 7479922..f2cd776 100644 --- a/libmaple/stm32f2/gpio.c +++ b/libmaple/stm32f2/gpio.c @@ -87,7 +87,7 @@ gpio_dev gpiog = { gpio_dev* const GPIOG = &gpiog; gpio_dev gpioh = { - .regs = GPIOG_BASE, + .regs = GPIOH_BASE, .clk_id = RCC_GPIOH, }; /** GPIO port G device. */ @@ -146,13 +146,13 @@ void gpio_set_modef(gpio_dev *dev, /* Speed */ tmp = regs->OSPEEDR; tmp &= ~(0x3 << shift); - tmp |= (flags >> 1) << shift; + tmp |= ((flags >> 1) & 0x3) << shift; regs->OSPEEDR = tmp; /* Pull-up/pull-down */ tmp = regs->PUPDR; tmp &= ~(0x3 << shift); - tmp |= (flags >> 2) << shift; + tmp |= ((flags >> 3) & 0x3) << shift; regs->PUPDR = tmp; } -- cgit v1.2.3