Changed to use accessors instead of casting to volatile pointers.

In places where we were defining memory mapped peripheral buffers we
were using directly a cast to "volatile int_type *". For consistency we
should use dereferenced accessor like: &MMIO32(address)
This commit is contained in:
Piotr Esden-Tempski
2013-06-12 21:37:55 -07:00
parent 39fa9e4c58
commit 8da7fbd71e
10 changed files with 21 additions and 23 deletions

View File

@@ -122,13 +122,13 @@ void flash_program_word(uint32_t address, uint32_t data)
FLASH_CR |= FLASH_CR_PG;
/* Program the first half of the word. */
(*(volatile uint16_t *)address) = (uint16_t)data;
MMIO16(address) = (uint16_t)data;
/* Wait for the write to complete. */
flash_wait_for_last_operation();
/* Program the second half of the word. */
(*(volatile uint16_t *)(address + 2)) = data >> 16;
MMIO16(address + 2) = data >> 16;
/* Wait for the write to complete. */
flash_wait_for_last_operation();
@@ -143,7 +143,7 @@ void flash_program_half_word(uint32_t address, uint16_t data)
FLASH_CR |= FLASH_CR_PG;
(*(volatile uint16_t *)address) = data;
MMIO16(address) = data;
flash_wait_for_last_operation();
@@ -196,7 +196,7 @@ void flash_program_option_bytes(uint32_t address, uint16_t data)
}
FLASH_CR |= FLASH_CR_OPTPG; /* Enable option byte programming. */
(*(volatile uint16_t *)address) = data;
MMIO16(address) = data;
flash_wait_for_last_operation();
FLASH_CR &= ~FLASH_CR_OPTPG; /* Disable option byte programming. */
}

View File

@@ -30,9 +30,8 @@
* As the code can be used on both cores, the registers offset is modified
* according to the selected cores base address. */
#define dev_base_address (usbd_dev->driver->base_address)
#define REBASE(x) MMIO32((x)+(dev_base_address))
#define REBASE_FIFO(x) ((volatile uint32_t*)((dev_base_address) \
+ (OTG_FIFO(x))))
#define REBASE(x) MMIO32((x) + (dev_base_address))
#define REBASE_FIFO(x) (&MMIO32((dev_base_address) + (OTG_FIFO(x))))
void stm32fx07_set_address(usbd_device *usbd_dev, uint8_t addr)
{