aboutsummaryrefslogtreecommitdiffstats
path: root/os
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2014-03-19 15:13:11 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2014-03-19 15:13:11 +0000
commit824a2d427ae201da05d5af5427c949a9a362f5cb (patch)
tree333456b70881a122421297b2d97242395efe9f26 /os
parent7e778da6b0ac408d377da7e539d095ca7e796c53 (diff)
downloadChibiOS-824a2d427ae201da05d5af5427c949a9a362f5cb.tar.gz
ChibiOS-824a2d427ae201da05d5af5427c949a9a362f5cb.tar.bz2
ChibiOS-824a2d427ae201da05d5af5427c949a9a362f5cb.zip
Fixed bug #477.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@6792 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os')
-rw-r--r--os/hal/platforms/STM32/ext_lld.c31
1 files changed, 15 insertions, 16 deletions
diff --git a/os/hal/platforms/STM32/ext_lld.c b/os/hal/platforms/STM32/ext_lld.c
index 970e0ce8e..0968fa3a1 100644
--- a/os/hal/platforms/STM32/ext_lld.c
+++ b/os/hal/platforms/STM32/ext_lld.c
@@ -120,6 +120,21 @@ void ext_lld_stop(EXTDriver *extp) {
*/
void ext_lld_channel_enable(EXTDriver *extp, expchannel_t channel) {
+ /* Setting the associated GPIO for external channels.*/
+ if (channel < 16) {
+ uint32_t n = channel >> 2;
+ uint32_t mask = ~(0xF << ((channel & 3) * 4));
+ uint32_t port = ((extp->config->channels[channel].mode &
+ EXT_MODE_GPIO_MASK) >>
+ EXT_MODE_GPIO_OFF) << ((channel & 3) * 4);
+
+#if defined(STM32F1XX)
+ AFIO->EXTICR[n] = (AFIO->EXTICR[n] & mask) | port;
+#else /* !defined(STM32F1XX) */
+ SYSCFG->EXTICR[n] = (SYSCFG->EXTICR[n] & mask) | port;
+#endif /* !defined(STM32F1XX) */
+ }
+
#if STM32_EXTI_NUM_CHANNELS > 32
if (channel < 32) {
#endif
@@ -166,22 +181,6 @@ void ext_lld_channel_enable(EXTDriver *extp, expchannel_t channel) {
}
}
#endif
-
- /* Setting the associated GPIO for external channels.*/
- if (channel < 16) {
- uint32_t n = channel >> 2;
- uint32_t mask = ~(0xF << ((channel & 3) * 4));
- uint32_t port = ((extp->config->channels[channel].mode &
- EXT_MODE_GPIO_MASK) >>
- EXT_MODE_GPIO_OFF) << ((channel & 3) * 4);
-
-#if defined(STM32L1XX_MD) || defined(STM32F0XX) || defined(STM32F2XX) || \
- defined(STM32F30X) || defined(STM32F37X) || defined(STM32F4XX)
- SYSCFG->EXTICR[n] = (SYSCFG->EXTICR[n] & mask) | port;
-#else /* STM32F1XX */
- AFIO->EXTICR[n] = (AFIO->EXTICR[n] & mask) | port;
-#endif /* STM32F1XX */
- }
}
/**