diff options
author | Marti Bolivar <mbolivar@leaflabs.com> | 2011-06-15 17:11:41 -0400 |
---|---|---|
committer | Marti Bolivar <mbolivar@leaflabs.com> | 2011-10-18 13:30:17 -0400 |
commit | d85462d0517baac39f3c316924162cca3d9c785a (patch) | |
tree | 08a3417acacbae3f4666f0ee0cad893cfe3f8a8c /libmaple/usb/usb_hardware.c | |
parent | c6c959682084c8493a0c39754374e7dbe6cf1708 (diff) | |
download | librambutan-d85462d0517baac39f3c316924162cca3d9c785a.tar.gz librambutan-d85462d0517baac39f3c316924162cca3d9c785a.zip |
usb: Replace duplicated code with nvic.h API.
Replace calls to usbEnbISR()/usbDsbISR() with
nvic_irq_enable()/nvic_irq_disable(). Remove ST-style code. Use
nvic_sys_reset() instead of systemHardReset(). Rename some
conflicting #defines that including nvic.h created.
Signed-off-by: Marti Bolivar <mbolivar@leaflabs.com>
Diffstat (limited to 'libmaple/usb/usb_hardware.c')
-rw-r--r-- | libmaple/usb/usb_hardware.c | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/libmaple/usb/usb_hardware.c b/libmaple/usb/usb_hardware.c index 9a7d12c..e7fd078 100644 --- a/libmaple/usb/usb_hardware.c +++ b/libmaple/usb/usb_hardware.c @@ -31,6 +31,7 @@ * */ +#include "nvic.h" #include "usb_hardware.h" void nvicInit(NVIC_InitTypeDef* NVIC_InitStruct) { @@ -40,9 +41,7 @@ void nvicInit(NVIC_InitTypeDef* NVIC_InitStruct) { u32 tmppre = 0; u32 tmpsub = 0x0F; - SCB_TypeDef* rSCB = (SCB_TypeDef *) SCB_BASE; - NVIC_TypeDef* rNVIC = (NVIC_TypeDef *) NVIC_BASE; - + SCB_TypeDef* rSCB = (SCB_TypeDef *) SCB_BASE_ADDR; /* Compute the Corresponding IRQ Priority -------------------------------*/ tmppriority = (0x700 - (rSCB->AIRCR & (u32)0x700))>> 0x08; @@ -57,33 +56,31 @@ void nvicInit(NVIC_InitTypeDef* NVIC_InitStruct) { tmppriority = ((u32)tmppriority) << ((NVIC_InitStruct->NVIC_IRQChannel & (u8)0x03) * 0x08); - tmpreg = rNVIC->IPR[(NVIC_InitStruct->NVIC_IRQChannel >> 0x02)]; + tmpreg = NVIC_BASE->IP[(NVIC_InitStruct->NVIC_IRQChannel >> 0x02)]; tmpmask = (u32)0xFF << ((NVIC_InitStruct->NVIC_IRQChannel & (u8)0x03) * 0x08); tmpreg &= ~tmpmask; tmppriority &= tmpmask; tmpreg |= tmppriority; - rNVIC->IPR[(NVIC_InitStruct->NVIC_IRQChannel >> 0x02)] = tmpreg; + NVIC_BASE->IP[(NVIC_InitStruct->NVIC_IRQChannel >> 0x02)] = tmpreg; /* Enable the Selected IRQ Channels -------------------------------------*/ - rNVIC->ISER[(NVIC_InitStruct->NVIC_IRQChannel >> 0x05)] = + NVIC_BASE->ISER[(NVIC_InitStruct->NVIC_IRQChannel >> 0x05)] = (u32)0x01 << (NVIC_InitStruct->NVIC_IRQChannel & (u8)0x1F); } void nvicDisableInterrupts() { - NVIC_TypeDef* rNVIC = (NVIC_TypeDef *) NVIC_BASE; - rNVIC->ICER[0] = 0xFFFFFFFF; - rNVIC->ICER[1] = 0xFFFFFFFF; - rNVIC->ICPR[0] = 0xFFFFFFFF; - rNVIC->ICPR[1] = 0xFFFFFFFF; + nvic_irq_disable_all(); + NVIC_BASE->ICPR[0] = 0xFFFFFFFF; + NVIC_BASE->ICPR[1] = 0xFFFFFFFF; /* Disable the systick timer, which operates separately from NVIC */ SET_REG(STK_CTRL,0x04); } void systemHardReset(void) { - SCB_TypeDef* rSCB = (SCB_TypeDef *) SCB_BASE; + SCB_TypeDef* rSCB = (SCB_TypeDef *) SCB_BASE_ADDR; typedef void (*funcPtr)(void); /* Reset */ |