diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2011-12-22 03:09:25 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2011-12-22 03:09:25 +0000 |
commit | 0404da840332858afad5ecbfcba1290c191f0078 (patch) | |
tree | fe40fdff1be235e35eb9fda3125f5bc0564e7b24 /nuttx/arch/arm/src/stm32/stm32_adc.c | |
parent | 0ef224f0edcdc24a123dd2f229256dac3a38c277 (diff) | |
download | px4-nuttx-0404da840332858afad5ecbfcba1290c191f0078.tar.gz px4-nuttx-0404da840332858afad5ecbfcba1290c191f0078.tar.bz2 px4-nuttx-0404da840332858afad5ecbfcba1290c191f0078.zip |
Disable interrupts while accessing the APB2RTSR register
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4212 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/arm/src/stm32/stm32_adc.c')
-rw-r--r-- | nuttx/arch/arm/src/stm32/stm32_adc.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/nuttx/arch/arm/src/stm32/stm32_adc.c b/nuttx/arch/arm/src/stm32/stm32_adc.c index 5cd22582d..b71ef6df9 100644 --- a/nuttx/arch/arm/src/stm32/stm32_adc.c +++ b/nuttx/arch/arm/src/stm32/stm32_adc.c @@ -823,6 +823,7 @@ static void adc_startconv(struct stm32_dev_s *priv, bool enable) static void adc_rccreset(struct stm32_dev_s *priv, bool reset) { + irqstate_t flags; uint32_t regval; uint32_t adcbit; @@ -860,6 +861,12 @@ static void adc_rccreset(struct stm32_dev_s *priv, bool reset) adcbit = RCC_APB2RSTR_ADCRST; #endif + /* Disable interrupts. This is necessary because the APB2RTSR register + * is used by several different drivers. + */ + + flags = irqsave(); + /* Set or clear the selected bit in the APB2 reset register */ regval = getreg32(STM32_RCC_APB2RSTR); @@ -876,6 +883,7 @@ static void adc_rccreset(struct stm32_dev_s *priv, bool reset) regval &= ~adcbit; } putreg32(regval, STM32_RCC_APB2RSTR); + irqrestore(flags); } /******************************************************************************* |