Add ADuCRF101 library code from Analog Devices
This commit is contained in:
parent
d7cf3b1f74
commit
ee1ca8ac55
12 changed files with 13047 additions and 0 deletions
9879
cpu/arm/aducrf101/Common/ADuCRF101.h
Normal file
9879
cpu/arm/aducrf101/Common/ADuCRF101.h
Normal file
File diff suppressed because it is too large
Load diff
67
cpu/arm/aducrf101/Common/IAR/ADUCRF101.icf
Normal file
67
cpu/arm/aducrf101/Common/IAR/ADUCRF101.icf
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2014, Analog Devices, Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted (subject to the limitations in the
|
||||||
|
* disclaimer below) provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* - Neither the name of Analog Devices, Inc. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
|
||||||
|
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
|
||||||
|
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||||
|
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||||
|
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||||
|
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
/*###ICF### Section handled by ICF editor, don't touch! ****/
|
||||||
|
/*-Editor annotation file-*/
|
||||||
|
/* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_v1_0.xml" */
|
||||||
|
/*-Specials-*/
|
||||||
|
define symbol __ICFEDIT_intvec_start__ = 0x00000000;
|
||||||
|
/*-Memory Regions-*/
|
||||||
|
define symbol __ICFEDIT_region_ROM_start__ = 0x00000000;
|
||||||
|
define symbol __ICFEDIT_region_ROM_end__ = 0x0001FFFF;
|
||||||
|
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
|
||||||
|
define symbol __ICFEDIT_region_RAM_end__ = 0x20003FFF;
|
||||||
|
/*-Sizes-*/
|
||||||
|
define symbol __ICFEDIT_size_cstack__ = 0x400;
|
||||||
|
define symbol __ICFEDIT_size_heap__ = 0x200;
|
||||||
|
/**** End of ICF editor section. ###ICF###*/
|
||||||
|
|
||||||
|
|
||||||
|
define memory mem with size = 4G;
|
||||||
|
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
|
||||||
|
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__];
|
||||||
|
|
||||||
|
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
|
||||||
|
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
|
||||||
|
|
||||||
|
initialize by copy { readwrite };
|
||||||
|
do not initialize { section .noinit };
|
||||||
|
do not initialize { section .mainstackarea };
|
||||||
|
|
||||||
|
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
|
||||||
|
place at address mem:0x1FC { readonly section .PageZeroCheckSum };
|
||||||
|
place at address mem:0x1FFEC { readonly section .sigprot };
|
||||||
|
|
||||||
|
place in ROM_region { readonly };
|
||||||
|
place in RAM_region { readwrite,
|
||||||
|
block CSTACK, block HEAP };
|
99
cpu/arm/aducrf101/Common/IAR/Retarget.c
Normal file
99
cpu/arm/aducrf101/Common/IAR/Retarget.c
Normal file
|
@ -0,0 +1,99 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2014, Analog Devices, Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted (subject to the limitations in the
|
||||||
|
* disclaimer below) provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* - Neither the name of Analog Devices, Inc. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
|
||||||
|
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
|
||||||
|
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||||
|
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||||
|
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||||
|
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
Module : Retarget.c
|
||||||
|
Description : uart interface
|
||||||
|
Date : December 2012
|
||||||
|
Version : v2.00
|
||||||
|
Changelog : v1.00 Initial
|
||||||
|
v2.00 use of UrtLib functions
|
||||||
|
*/
|
||||||
|
#include <include.h>
|
||||||
|
#include "UrtLib.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#define CR 0x0D
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************************/
|
||||||
|
/* size_t __read(int handle,unsigned char *buf,size_t bufSize) */
|
||||||
|
/* Write data to a stream */
|
||||||
|
/* Needed for retargetting the IAR DLIB library for the ADUCRF101 */
|
||||||
|
/*************************************************************************/
|
||||||
|
size_t __read(int handle,unsigned char *buf,size_t bufSize)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
for (i=0x0; i<bufSize;i++)
|
||||||
|
{
|
||||||
|
// Wait for character available
|
||||||
|
while(!(COMLSR_DR==(pADI_UART->COMLSR & COMLSR_DR)));
|
||||||
|
buf[i] = pADI_UART->COMRX;
|
||||||
|
}
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*************************************************************************/
|
||||||
|
/* __write(int handle,const unsigned char *buf,size_t bufSize) */
|
||||||
|
/* Read data from a stream */
|
||||||
|
/* Needed for retargetting the IAR DLIB library for the ADUCRF101 */
|
||||||
|
/*************************************************************************/
|
||||||
|
size_t __write(int handle,const unsigned char *buf,size_t bufSize)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
for (i=0x0; i<bufSize;i++)
|
||||||
|
{
|
||||||
|
if (buf[i] == '\n')
|
||||||
|
{
|
||||||
|
while(!(COMLSR_THRE==(UrtLinSta(0) & COMLSR_THRE)));
|
||||||
|
UrtTx(0, 0x0D);
|
||||||
|
}
|
||||||
|
while(!(COMLSR_THRE==(UrtLinSta(0) & COMLSR_THRE)));
|
||||||
|
UrtTx(0, buf[i]);
|
||||||
|
}
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
224
cpu/arm/aducrf101/Common/IAR/startup_ADuCRF101.s
Normal file
224
cpu/arm/aducrf101/Common/IAR/startup_ADuCRF101.s
Normal file
|
@ -0,0 +1,224 @@
|
||||||
|
; Copyright (c) 2014, Analog Devices, Inc. All rights reserved.
|
||||||
|
;
|
||||||
|
; Redistribution and use in source and binary forms, with or without
|
||||||
|
; modification, are permitted (subject to the limitations in the
|
||||||
|
; disclaimer below) provided that the following conditions are met:
|
||||||
|
;
|
||||||
|
; - Redistributions of source code must retain the above copyright
|
||||||
|
; notice, this list of conditions and the following disclaimer.
|
||||||
|
;
|
||||||
|
; - Redistributions in binary form must reproduce the above copyright
|
||||||
|
; notice, this list of conditions and the following disclaimer in the
|
||||||
|
; documentation and/or other materials provided with the
|
||||||
|
; distribution.
|
||||||
|
;
|
||||||
|
; - Neither the name of Analog Devices, Inc. nor the names of its
|
||||||
|
; contributors may be used to endorse or promote products derived
|
||||||
|
; from this software without specific prior written permission.
|
||||||
|
;
|
||||||
|
; NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
|
||||||
|
; GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
|
||||||
|
; HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||||
|
; WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||||
|
; BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||||
|
; OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||||
|
; IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
; Module : startup_ADuCRF101.s
|
||||||
|
; Description : Cortex-M3 startup file - ADuCRF101 - EWARM Version
|
||||||
|
; Date : 15 February 2012
|
||||||
|
; Version : v1.00
|
||||||
|
; Changelog : v1.00 Initial
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
MODULE ?cstartup
|
||||||
|
|
||||||
|
;; Forward declaration of sections.
|
||||||
|
SECTION CSTACK:DATA:NOROOT(3)
|
||||||
|
|
||||||
|
SECTION .intvec:CODE:NOROOT(2)
|
||||||
|
|
||||||
|
EXTERN __iar_program_start
|
||||||
|
PUBLIC __vector_table
|
||||||
|
|
||||||
|
DATA
|
||||||
|
__vector_table
|
||||||
|
DCD sfe(CSTACK)
|
||||||
|
DCD __iar_program_start
|
||||||
|
|
||||||
|
DCD Nmi_Handler ; The NMI handler
|
||||||
|
DCD Fault_Handler ; The hard fault handler
|
||||||
|
DCD MemManage_Handler ; The MPU fault handler
|
||||||
|
DCD BusFault_Handler ; The bus fault handler
|
||||||
|
DCD UsageFault_Handler ; The usage fault handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD SVC_Handler ; SVCall handler
|
||||||
|
DCD DebugMon_Handler ; Debug monitor handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD PendSV_Handler ; The PendSV handler
|
||||||
|
DCD SysTick_Handler ; The SysTick handler
|
||||||
|
|
||||||
|
|
||||||
|
; External Interrupts
|
||||||
|
DCD WakeUp_Int_Handler ; Wake Up Timer [ 0]
|
||||||
|
DCD Ext_Int0_Handler ; External Interrupt 0 [ 1]
|
||||||
|
DCD Ext_Int1_Handler ; External Interrupt 1 [ 2]
|
||||||
|
DCD Ext_Int2_Handler ; External Interrupt 2 [ 3]
|
||||||
|
DCD Ext_Int3_Handler ; External Interrupt 3 [ 4]
|
||||||
|
DCD Ext_Int4_Handler ; External Interrupt 4 [ 5]
|
||||||
|
DCD Ext_Int5_Handler ; External Interrupt 5 [ 6]
|
||||||
|
DCD Ext_Int6_Handler ; External Interrupt 6 [ 7]
|
||||||
|
DCD Ext_Int7_Handler ; External Interrupt 7 [ 8]
|
||||||
|
DCD Ext_Int8_Handler ; External Interrupt 8 [ 9]
|
||||||
|
DCD WDog_Tmr_Int_Handler ; Watchdog timer handler [10]
|
||||||
|
DCD UnUsed_Handler ; Reserved [11]
|
||||||
|
DCD GP_Tmr0_Int_Handler ; General purpose timer 0 [12]
|
||||||
|
DCD GP_Tmr1_Int_Handler ; General purpose timer 1 [13]
|
||||||
|
DCD ADC0_Int_Handler ; ADC Interrupt [14]
|
||||||
|
DCD Flsh_Int_Handler ; Flash IRQ [15]
|
||||||
|
DCD UART_Int_Handler ; UART0 [16]
|
||||||
|
DCD SPI0_Int_Handler ; SPI 0 [17]
|
||||||
|
DCD SPI1_Int_Handler ; SPI 1 [18]
|
||||||
|
DCD I2C0_Slave_Int_Handler ; I2C0 Slave [19]
|
||||||
|
DCD I2C0_Master_Int_Handler ; I2C0 Master [20]
|
||||||
|
DCD UnUsed_Handler ; Reserved [21]
|
||||||
|
DCD UnUsed_Handler ; Reserved [22]
|
||||||
|
DCD DMA_Err_Int_Handler ; DMA Error interrupt [23]
|
||||||
|
DCD DMA_SPI1_TX_Int_Handler ; DMA SPI1 TX [24]
|
||||||
|
DCD DMA_SPI1_RX_Int_Handler ; DMA SPI1 RX [25]
|
||||||
|
DCD DMA_UART_TX_Int_Handler ; DMA UART TX [26]
|
||||||
|
DCD DMA_UART_RX_Int_Handler ; DMA UART RX [27]
|
||||||
|
DCD DMA_I2C0_STX_Int_Handler ; DMA I2C0 Slave TX [28]
|
||||||
|
DCD DMA_I2C0_SRX_Int_Handler ; DMA I2C0 Slave RX [29]
|
||||||
|
DCD DMA_I2C0_MTX_Int_Handler ; DMA I2C0 Master TX [30]
|
||||||
|
DCD DMA_I2C0_MRX_Int_Handler ; DMA I2C0 Master RX [31]
|
||||||
|
DCD UnUsed_Handler ; Reserved [32]
|
||||||
|
DCD UnUsed_Handler ; Reserved [33]
|
||||||
|
DCD UnUsed_Handler ; Reserved [34]
|
||||||
|
DCD DMA_ADC_Int_Handler ; DMA ADC [35]
|
||||||
|
DCD DMA_SPI0_TX_Int_Handler ; DMA SPI0 TX [36]
|
||||||
|
DCD DMA_SPI0_RX_Int_Handler ; DMA SPI0 RX [37]
|
||||||
|
DCD PWMTrip_Int_Handler ; PWM Trip [38]
|
||||||
|
DCD PWM0_Int_Handler ; PWM 0 [39]
|
||||||
|
DCD PWM1_Int_Handler ; PWM 1 [40]
|
||||||
|
DCD PWM2_Int_Handler ; PWM 2 [41]
|
||||||
|
DCD PWM3_Int_Handler ; PWM 3 [42]
|
||||||
|
DCD UnUsed_Handler ; Unused [43]
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;
|
||||||
|
;; Default interrupt handlers.
|
||||||
|
;;
|
||||||
|
PUBWEAK SysTick_Handler
|
||||||
|
PUBWEAK Nmi_Handler
|
||||||
|
PUBWEAK Fault_Handler
|
||||||
|
PUBWEAK MemManage_Handler
|
||||||
|
PUBWEAK BusFault_Handler
|
||||||
|
PUBWEAK UsageFault_Handler
|
||||||
|
PUBWEAK SVC_Handler
|
||||||
|
PUBWEAK DebugMon_Handler
|
||||||
|
PUBWEAK PendSV_Handler
|
||||||
|
PUBWEAK WakeUp_Int_Handler
|
||||||
|
PUBWEAK Ext_Int0_Handler
|
||||||
|
PUBWEAK Ext_Int1_Handler
|
||||||
|
PUBWEAK Ext_Int2_Handler
|
||||||
|
PUBWEAK Ext_Int3_Handler
|
||||||
|
PUBWEAK Ext_Int4_Handler
|
||||||
|
PUBWEAK Ext_Int5_Handler
|
||||||
|
PUBWEAK Ext_Int6_Handler
|
||||||
|
PUBWEAK Ext_Int7_Handler
|
||||||
|
PUBWEAK Ext_Int8_Handler
|
||||||
|
PUBWEAK WDog_Tmr_Int_Handler
|
||||||
|
PUBWEAK GP_Tmr0_Int_Handler
|
||||||
|
PUBWEAK GP_Tmr1_Int_Handler
|
||||||
|
PUBWEAK ADC0_Int_Handler
|
||||||
|
PUBWEAK Flsh_Int_Handler
|
||||||
|
PUBWEAK UART_Int_Handler
|
||||||
|
PUBWEAK SPI0_Int_Handler
|
||||||
|
PUBWEAK SPI1_Int_Handler
|
||||||
|
PUBWEAK I2C0_Slave_Int_Handler
|
||||||
|
PUBWEAK I2C0_Master_Int_Handler
|
||||||
|
PUBWEAK DMA_Err_Int_Handler
|
||||||
|
PUBWEAK DMA_SPI1_TX_Int_Handler
|
||||||
|
PUBWEAK DMA_SPI1_RX_Int_Handler
|
||||||
|
PUBWEAK DMA_UART_TX_Int_Handler
|
||||||
|
PUBWEAK DMA_UART_RX_Int_Handler
|
||||||
|
PUBWEAK DMA_I2C0_STX_Int_Handler
|
||||||
|
PUBWEAK DMA_I2C0_SRX_Int_Handler
|
||||||
|
PUBWEAK DMA_I2C0_MTX_Int_Handler
|
||||||
|
PUBWEAK DMA_I2C0_MRX_Int_Handler
|
||||||
|
PUBWEAK DMA_ADC_Int_Handler
|
||||||
|
PUBWEAK DMA_SPI0_TX_Int_Handler
|
||||||
|
PUBWEAK DMA_SPI0_RX_Int_Handler
|
||||||
|
PUBWEAK PWMTrip_Int_Handler
|
||||||
|
PUBWEAK PWM0_Int_Handler
|
||||||
|
PUBWEAK PWM1_Int_Handler
|
||||||
|
PUBWEAK PWM2_Int_Handler
|
||||||
|
PUBWEAK PWM3_Int_Handler
|
||||||
|
|
||||||
|
PUBWEAK UnUsed_Handler
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
THUMB
|
||||||
|
SECTION .text:CODE:REORDER(1)
|
||||||
|
Nmi_Handler
|
||||||
|
Fault_Handler
|
||||||
|
MemManage_Handler
|
||||||
|
BusFault_Handler
|
||||||
|
UsageFault_Handler
|
||||||
|
SVC_Handler
|
||||||
|
DebugMon_Handler
|
||||||
|
PendSV_Handler
|
||||||
|
SysTick_Handler
|
||||||
|
WakeUp_Int_Handler
|
||||||
|
Ext_Int0_Handler
|
||||||
|
Ext_Int1_Handler
|
||||||
|
Ext_Int2_Handler
|
||||||
|
Ext_Int3_Handler
|
||||||
|
Ext_Int4_Handler
|
||||||
|
Ext_Int5_Handler
|
||||||
|
Ext_Int6_Handler
|
||||||
|
Ext_Int7_Handler
|
||||||
|
Ext_Int8_Handler
|
||||||
|
WDog_Tmr_Int_Handler
|
||||||
|
GP_Tmr0_Int_Handler
|
||||||
|
GP_Tmr1_Int_Handler
|
||||||
|
ADC0_Int_Handler
|
||||||
|
Flsh_Int_Handler
|
||||||
|
UART_Int_Handler
|
||||||
|
SPI0_Int_Handler
|
||||||
|
SPI1_Int_Handler
|
||||||
|
I2C0_Slave_Int_Handler
|
||||||
|
I2C0_Master_Int_Handler
|
||||||
|
DMA_Err_Int_Handler
|
||||||
|
DMA_SPI1_TX_Int_Handler
|
||||||
|
DMA_SPI1_RX_Int_Handler
|
||||||
|
DMA_UART_TX_Int_Handler
|
||||||
|
DMA_UART_RX_Int_Handler
|
||||||
|
DMA_I2C0_STX_Int_Handler
|
||||||
|
DMA_I2C0_SRX_Int_Handler
|
||||||
|
DMA_I2C0_MTX_Int_Handler
|
||||||
|
DMA_I2C0_MRX_Int_Handler
|
||||||
|
DMA_ADC_Int_Handler
|
||||||
|
DMA_SPI0_TX_Int_Handler
|
||||||
|
DMA_SPI0_RX_Int_Handler
|
||||||
|
PWMTrip_Int_Handler
|
||||||
|
PWM0_Int_Handler
|
||||||
|
PWM1_Int_Handler
|
||||||
|
PWM2_Int_Handler
|
||||||
|
PWM3_Int_Handler
|
||||||
|
UnUsed_Handler
|
||||||
|
B UnUsed_Handler
|
||||||
|
|
||||||
|
END
|
106
cpu/arm/aducrf101/Common/RealView/Retarget.c
Normal file
106
cpu/arm/aducrf101/Common/RealView/Retarget.c
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2014, Analog Devices, Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted (subject to the limitations in the
|
||||||
|
* disclaimer below) provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* - Neither the name of Analog Devices, Inc. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
|
||||||
|
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
|
||||||
|
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||||
|
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||||
|
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||||
|
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
Module : retarget.c
|
||||||
|
Description :
|
||||||
|
Date : December 2012
|
||||||
|
Version : v2.00
|
||||||
|
Changelog : v1.00 Initial
|
||||||
|
v2.00 use of UrtLib functions
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <rt_misc.h>
|
||||||
|
#include <include.h>
|
||||||
|
|
||||||
|
#pragma import(__use_no_semihosting_swi)
|
||||||
|
|
||||||
|
#define CR 0x0D
|
||||||
|
struct __FILE { int handle; /* Add whatever you need here */ };
|
||||||
|
FILE __stdout;
|
||||||
|
FILE __stdin;
|
||||||
|
|
||||||
|
|
||||||
|
// Re-targetting the Realview library functions
|
||||||
|
/*
|
||||||
|
* writes the character specified by c (converted to an unsigned char) to
|
||||||
|
* the output stream pointed to by stream, at the position indicated by the
|
||||||
|
* asociated file position indicator (if defined), and advances the
|
||||||
|
* indicator appropriately. If the file position indicator is not defined,
|
||||||
|
* the character is appended to the output stream.
|
||||||
|
* Returns: the character written. If a write error occurs, the error
|
||||||
|
* indicator is set and fputc returns EOF.
|
||||||
|
*/
|
||||||
|
int fputc(int ch, FILE * stream )
|
||||||
|
{
|
||||||
|
if(ch == '\n')
|
||||||
|
while(!(COMLSR_THRE==(UrtLinSta(0) & COMLSR_THRE)));
|
||||||
|
UrtTx(0, CR); /* output CR */
|
||||||
|
while(!(COMLSR_THRE==(UrtLinSta(0) & COMLSR_THRE)));
|
||||||
|
UrtTx(0, ch);
|
||||||
|
return(ch);
|
||||||
|
}
|
||||||
|
|
||||||
|
int __backspace(FILE *stream)
|
||||||
|
{
|
||||||
|
return 0x0;
|
||||||
|
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* obtains the next character (if present) as an unsigned char converted to
|
||||||
|
* an int, from the input stream pointed to by stream, and advances the
|
||||||
|
* associated file position indicator (if defined).
|
||||||
|
* Returns: the next character from the input stream pointed to by stream.
|
||||||
|
* If the stream is at end-of-file, the end-of-file indicator is
|
||||||
|
* set and fgetc returns EOF. If a read error occurs, the error
|
||||||
|
* indicator is set and fgetc returns EOF.
|
||||||
|
*/
|
||||||
|
int fgetc(FILE * stream)
|
||||||
|
{
|
||||||
|
return (UrtRx(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int ferror(FILE *f) {
|
||||||
|
/* Your implementation of ferror */
|
||||||
|
return EOF;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void _ttywrch(int ch) { UrtTx(0, ch); }
|
||||||
|
|
||||||
|
|
||||||
|
void _sys_exit(int return_code) {
|
||||||
|
label: goto label; /* endless loop */
|
||||||
|
}
|
312
cpu/arm/aducrf101/Common/RealView/startup_ADuCRF101.s
Normal file
312
cpu/arm/aducrf101/Common/RealView/startup_ADuCRF101.s
Normal file
|
@ -0,0 +1,312 @@
|
||||||
|
; Copyright (c) 2014, Analog Devices, Inc. All rights reserved.
|
||||||
|
;
|
||||||
|
; Redistribution and use in source and binary forms, with or without
|
||||||
|
; modification, are permitted (subject to the limitations in the
|
||||||
|
; disclaimer below) provided that the following conditions are met:
|
||||||
|
;
|
||||||
|
; - Redistributions of source code must retain the above copyright
|
||||||
|
; notice, this list of conditions and the following disclaimer.
|
||||||
|
;
|
||||||
|
; - Redistributions in binary form must reproduce the above copyright
|
||||||
|
; notice, this list of conditions and the following disclaimer in the
|
||||||
|
; documentation and/or other materials provided with the
|
||||||
|
; distribution.
|
||||||
|
;
|
||||||
|
; - Neither the name of Analog Devices, Inc. nor the names of its
|
||||||
|
; contributors may be used to endorse or promote products derived
|
||||||
|
; from this software without specific prior written permission.
|
||||||
|
;
|
||||||
|
; NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
|
||||||
|
; GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
|
||||||
|
; HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||||
|
; WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
; MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||||
|
; BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
; WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||||
|
; OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||||
|
; IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
; Module : startup_ADuCRF101.s
|
||||||
|
; Description : Cortex-M3 startup file - ADuCRF101 - RealView Version
|
||||||
|
; Date : 14 January 2013
|
||||||
|
; Version : v1.01
|
||||||
|
; Changelog : v1.01 Added call to SystemInit
|
||||||
|
; Changelog : v1.00 Initial
|
||||||
|
|
||||||
|
IMPORT __use_no_semihosting_swi
|
||||||
|
; Amount of memory (in bytes) allocated for Stack
|
||||||
|
; Tailor this value to your application needs
|
||||||
|
; <h> Stack Configuration
|
||||||
|
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
; </h>
|
||||||
|
|
||||||
|
Stack_Size EQU 0x00000400
|
||||||
|
|
||||||
|
AREA STACK, NOINIT, READWRITE, ALIGN=3
|
||||||
|
Stack_Mem SPACE Stack_Size
|
||||||
|
__initial_sp
|
||||||
|
|
||||||
|
|
||||||
|
; <h> Heap Configuration
|
||||||
|
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||||
|
; </h>
|
||||||
|
|
||||||
|
Heap_Size EQU 0x00000200
|
||||||
|
|
||||||
|
AREA HEAP, NOINIT, READWRITE, ALIGN=3
|
||||||
|
__heap_base
|
||||||
|
Heap_Mem SPACE Heap_Size
|
||||||
|
__heap_limit
|
||||||
|
|
||||||
|
PRESERVE8
|
||||||
|
THUMB
|
||||||
|
|
||||||
|
|
||||||
|
; Vector Table Mapped to Address 0 at Reset
|
||||||
|
AREA RESET, DATA, READONLY
|
||||||
|
EXPORT __Vectors
|
||||||
|
EXPORT __Vectors_End
|
||||||
|
EXPORT __Vectors_Size
|
||||||
|
|
||||||
|
__Vectors DCD __initial_sp ; Top of Stack
|
||||||
|
DCD Reset_Handler ; Reset Handler
|
||||||
|
DCD NMI_Handler ; The NMI handler
|
||||||
|
DCD HardFault_Handler ; The hard fault handler
|
||||||
|
DCD MemManage_Handler ; The MPU fault handler
|
||||||
|
DCD BusFault_Handler ; The bus fault handler
|
||||||
|
DCD UsageFault_Handler ; The usage fault handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD SVC_Handler ; SVCall handler
|
||||||
|
DCD DebugMon_Handler ; Debug monitor handler
|
||||||
|
DCD 0 ; Reserved
|
||||||
|
DCD PendSV_Handler ; The PendSV handler
|
||||||
|
DCD SysTick_Handler ; The SysTick handler
|
||||||
|
|
||||||
|
; External Interrupts
|
||||||
|
DCD WakeUp_Int_Handler ; Wake Up Timer [ 0]
|
||||||
|
DCD Ext_Int0_Handler ; External Interrupt 0 [ 1]
|
||||||
|
DCD Ext_Int1_Handler ; External Interrupt 1 [ 2]
|
||||||
|
DCD Ext_Int2_Handler ; External Interrupt 2 [ 3]
|
||||||
|
DCD Ext_Int3_Handler ; External Interrupt 3 [ 4]
|
||||||
|
DCD Ext_Int4_Handler ; External Interrupt 4 [ 5]
|
||||||
|
DCD Ext_Int5_Handler ; External Interrupt 5 [ 6]
|
||||||
|
DCD Ext_Int6_Handler ; External Interrupt 6 [ 7]
|
||||||
|
DCD Ext_Int7_Handler ; External Interrupt 7 [ 8]
|
||||||
|
DCD Ext_Int8_Handler ; External Interrupt 8 [ 9]
|
||||||
|
DCD WDog_Tmr_Int_Handler ; Watchdog timer handler [10]
|
||||||
|
DCD UnUsed_Handler ; Reserved [11]
|
||||||
|
DCD GP_Tmr0_Int_Handler ; General purpose timer 0 [12]
|
||||||
|
DCD GP_Tmr1_Int_Handler ; General purpose timer 1 [13]
|
||||||
|
DCD ADC0_Int_Handler ; ADC Interrupt [14]
|
||||||
|
DCD Flsh_Int_Handler ; Flash IRQ [15]
|
||||||
|
DCD UART_Int_Handler ; UART0 [16]
|
||||||
|
DCD SPI0_Int_Handler ; SPI 0 [17]
|
||||||
|
DCD SPI1_Int_Handler ; SPI 1 [18]
|
||||||
|
DCD I2C0_Slave_Int_Handler ; I2C0 Slave [19]
|
||||||
|
DCD I2C0_Master_Int_Handler ; I2C0 Master [20]
|
||||||
|
DCD UnUsed_Handler ; Reserved [21]
|
||||||
|
DCD UnUsed_Handler ; Reserved [22]
|
||||||
|
DCD DMA_Err_Int_Handler ; DMA Error interrupt [23]
|
||||||
|
DCD DMA_SPI1_TX_Int_Handler ; DMA SPI1 TX [24]
|
||||||
|
DCD DMA_SPI1_RX_Int_Handler ; DMA SPI1 RX [25]
|
||||||
|
DCD DMA_UART_TX_Int_Handler ; DMA UART TX [26]
|
||||||
|
DCD DMA_UART_RX_Int_Handler ; DMA UART RX [27]
|
||||||
|
DCD DMA_I2C0_STX_Int_Handler ; DMA I2C0 Slave TX [28]
|
||||||
|
DCD DMA_I2C0_SRX_Int_Handler ; DMA I2C0 Slave RX [29]
|
||||||
|
DCD DMA_I2C0_MTX_Int_Handler ; DMA I2C0 Master TX [30]
|
||||||
|
DCD DMA_I2C0_MRX_Int_Handler ; DMA I2C0 Master RX [31]
|
||||||
|
DCD UnUsed_Handler ; Reserved [32]
|
||||||
|
DCD UnUsed_Handler ; Reserved [33]
|
||||||
|
DCD UnUsed_Handler ; Reserved [34]
|
||||||
|
DCD DMA_ADC_Int_Handler ; DMA ADC [35]
|
||||||
|
DCD DMA_SPI0_TX_Int_Handler ; DMA SPI0 TX [36]
|
||||||
|
DCD DMA_SPI0_RX_Int_Handler ; DMA SPI0 RX [37]
|
||||||
|
DCD PWMTrip_Int_Handler ; PWM Trip [38]
|
||||||
|
DCD PWM0_Int_Handler ; PWM 0 [39]
|
||||||
|
DCD PWM1_Int_Handler ; PWM 1 [40]
|
||||||
|
DCD PWM2_Int_Handler ; PWM 2 [41]
|
||||||
|
DCD PWM3_Int_Handler ; PWM 3 [42]
|
||||||
|
DCD UnUsed_Handler ; Unused [43]
|
||||||
|
__Vectors_End
|
||||||
|
|
||||||
|
__Vectors_Size EQU __Vectors_End - __Vectors
|
||||||
|
|
||||||
|
AREA |.text|, CODE, READONLY
|
||||||
|
|
||||||
|
; Reset handler
|
||||||
|
Reset_Handler PROC
|
||||||
|
EXPORT Reset_Handler [WEAK]
|
||||||
|
IMPORT SystemInit
|
||||||
|
IMPORT __main
|
||||||
|
LDR R0, =SystemInit ; Defined in system_ADuCRF101.c
|
||||||
|
BLX R0
|
||||||
|
LDR R0, =__main
|
||||||
|
BX R0
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
; Dummy Exception Handlers (infinite loops which can be modified)
|
||||||
|
|
||||||
|
NMI_Handler PROC
|
||||||
|
EXPORT NMI_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
HardFault_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT HardFault_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
MemManage_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT MemManage_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
BusFault_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT BusFault_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
UsageFault_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT UsageFault_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
SVC_Handler PROC
|
||||||
|
EXPORT SVC_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
DebugMon_Handler\
|
||||||
|
PROC
|
||||||
|
EXPORT DebugMon_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
PendSV_Handler PROC
|
||||||
|
EXPORT PendSV_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
SysTick_Handler PROC
|
||||||
|
EXPORT SysTick_Handler [WEAK]
|
||||||
|
B .
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
Default_Handler PROC
|
||||||
|
|
||||||
|
EXPORT WakeUp_Int_Handler [WEAK]
|
||||||
|
EXPORT Ext_Int0_Handler [WEAK]
|
||||||
|
EXPORT Ext_Int1_Handler [WEAK]
|
||||||
|
EXPORT Ext_Int2_Handler [WEAK]
|
||||||
|
EXPORT Ext_Int3_Handler [WEAK]
|
||||||
|
EXPORT Ext_Int4_Handler [WEAK]
|
||||||
|
EXPORT Ext_Int5_Handler [WEAK]
|
||||||
|
EXPORT Ext_Int6_Handler [WEAK]
|
||||||
|
EXPORT Ext_Int7_Handler [WEAK]
|
||||||
|
EXPORT Ext_Int8_Handler [WEAK]
|
||||||
|
EXPORT WDog_Tmr_Int_Handler [WEAK]
|
||||||
|
EXPORT GP_Tmr0_Int_Handler [WEAK]
|
||||||
|
EXPORT GP_Tmr1_Int_Handler [WEAK]
|
||||||
|
EXPORT ADC0_Int_Handler [WEAK]
|
||||||
|
EXPORT Flsh_Int_Handler [WEAK]
|
||||||
|
EXPORT UART_Int_Handler [WEAK]
|
||||||
|
EXPORT SPI0_Int_Handler [WEAK]
|
||||||
|
EXPORT SPI1_Int_Handler [WEAK]
|
||||||
|
EXPORT I2C0_Slave_Int_Handler [WEAK]
|
||||||
|
EXPORT I2C0_Master_Int_Handler [WEAK]
|
||||||
|
EXPORT DMA_Err_Int_Handler [WEAK]
|
||||||
|
EXPORT DMA_SPI1_TX_Int_Handler [WEAK]
|
||||||
|
EXPORT DMA_SPI1_RX_Int_Handler [WEAK]
|
||||||
|
EXPORT DMA_UART_TX_Int_Handler [WEAK]
|
||||||
|
EXPORT DMA_UART_RX_Int_Handler [WEAK]
|
||||||
|
EXPORT DMA_I2C0_STX_Int_Handler [WEAK]
|
||||||
|
EXPORT DMA_I2C0_SRX_Int_Handler [WEAK]
|
||||||
|
EXPORT DMA_I2C0_MTX_Int_Handler [WEAK]
|
||||||
|
EXPORT DMA_I2C0_MRX_Int_Handler [WEAK]
|
||||||
|
EXPORT DMA_ADC_Int_Handler [WEAK]
|
||||||
|
EXPORT DMA_SPI0_TX_Int_Handler [WEAK]
|
||||||
|
EXPORT DMA_SPI0_RX_Int_Handler [WEAK]
|
||||||
|
EXPORT PWMTrip_Int_Handler [WEAK]
|
||||||
|
EXPORT PWM0_Int_Handler [WEAK]
|
||||||
|
EXPORT PWM1_Int_Handler [WEAK]
|
||||||
|
EXPORT PWM2_Int_Handler [WEAK]
|
||||||
|
EXPORT PWM3_Int_Handler [WEAK]
|
||||||
|
EXPORT UnUsed_Handler [WEAK]
|
||||||
|
|
||||||
|
|
||||||
|
WakeUp_Int_Handler
|
||||||
|
Ext_Int0_Handler
|
||||||
|
Ext_Int1_Handler
|
||||||
|
Ext_Int2_Handler
|
||||||
|
Ext_Int3_Handler
|
||||||
|
Ext_Int4_Handler
|
||||||
|
Ext_Int5_Handler
|
||||||
|
Ext_Int6_Handler
|
||||||
|
Ext_Int7_Handler
|
||||||
|
Ext_Int8_Handler
|
||||||
|
WDog_Tmr_Int_Handler
|
||||||
|
GP_Tmr0_Int_Handler
|
||||||
|
GP_Tmr1_Int_Handler
|
||||||
|
ADC0_Int_Handler
|
||||||
|
Flsh_Int_Handler
|
||||||
|
UART_Int_Handler
|
||||||
|
SPI0_Int_Handler
|
||||||
|
SPI1_Int_Handler
|
||||||
|
I2C0_Slave_Int_Handler
|
||||||
|
I2C0_Master_Int_Handler
|
||||||
|
DMA_Err_Int_Handler
|
||||||
|
DMA_SPI1_TX_Int_Handler
|
||||||
|
DMA_SPI1_RX_Int_Handler
|
||||||
|
DMA_UART_TX_Int_Handler
|
||||||
|
DMA_UART_RX_Int_Handler
|
||||||
|
DMA_I2C0_STX_Int_Handler
|
||||||
|
DMA_I2C0_SRX_Int_Handler
|
||||||
|
DMA_I2C0_MTX_Int_Handler
|
||||||
|
DMA_I2C0_MRX_Int_Handler
|
||||||
|
DMA_ADC_Int_Handler
|
||||||
|
DMA_SPI0_TX_Int_Handler
|
||||||
|
DMA_SPI0_RX_Int_Handler
|
||||||
|
PWMTrip_Int_Handler
|
||||||
|
PWM0_Int_Handler
|
||||||
|
PWM1_Int_Handler
|
||||||
|
PWM2_Int_Handler
|
||||||
|
PWM3_Int_Handler
|
||||||
|
UnUsed_Handler
|
||||||
|
|
||||||
|
B .
|
||||||
|
|
||||||
|
ENDP
|
||||||
|
|
||||||
|
ALIGN
|
||||||
|
|
||||||
|
;*******************************************************************************
|
||||||
|
; User Stack and Heap initialization
|
||||||
|
;*******************************************************************************
|
||||||
|
IF :DEF:__MICROLIB
|
||||||
|
|
||||||
|
EXPORT __initial_sp
|
||||||
|
EXPORT __heap_base
|
||||||
|
EXPORT __heap_limit
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
|
||||||
|
IMPORT __use_two_region_memory
|
||||||
|
EXPORT __user_initial_stackheap
|
||||||
|
|
||||||
|
__user_initial_stackheap
|
||||||
|
|
||||||
|
LDR R0, = Heap_Mem
|
||||||
|
LDR R1, =(Stack_Mem + Stack_Size)
|
||||||
|
LDR R2, = (Heap_Mem + Heap_Size)
|
||||||
|
LDR R3, = Stack_Mem
|
||||||
|
BX LR
|
||||||
|
|
||||||
|
ALIGN
|
||||||
|
|
||||||
|
ENDIF
|
||||||
|
|
||||||
|
END
|
||||||
|
|
61
cpu/arm/aducrf101/Common/aducrf101-include.h
Normal file
61
cpu/arm/aducrf101/Common/aducrf101-include.h
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2014, Analog Devices, Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted (subject to the limitations in the
|
||||||
|
* disclaimer below) provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* - Neither the name of Analog Devices, Inc. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
|
||||||
|
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
|
||||||
|
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||||
|
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||||
|
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||||
|
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
@module include.h
|
||||||
|
@brief Main Include file
|
||||||
|
@version V0.2
|
||||||
|
@author PAD CSE group, Analog Devices Inc
|
||||||
|
@date January 2013
|
||||||
|
|
||||||
|
@par Revision History:
|
||||||
|
- V0.1, February 2012: initial version.
|
||||||
|
- V0.2, January 2013: addition of PwmLib, FeeLib and DmaLib
|
||||||
|
remove uart.h
|
||||||
|
**/
|
||||||
|
|
||||||
|
#ifndef __INCLUDE_H
|
||||||
|
#define __INCLUDE_H
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include <defs.h>
|
||||||
|
|
||||||
|
#include <ADuCRF101.h>
|
||||||
|
|
||||||
|
#include "radioeng.h"
|
||||||
|
|
||||||
|
#endif // __INCLUDE_H
|
42
cpu/arm/aducrf101/Common/defs.h
Normal file
42
cpu/arm/aducrf101/Common/defs.h
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2014, Analog Devices, Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted (subject to the limitations in the
|
||||||
|
* disclaimer below) provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* - Neither the name of Analog Devices, Inc. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
|
||||||
|
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
|
||||||
|
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||||
|
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||||
|
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||||
|
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
@file defs.h
|
||||||
|
@brief Global definitions.
|
||||||
|
@version V0.1
|
||||||
|
@author PAD CSE group, Analog Devices Inc
|
||||||
|
@date January 2012
|
||||||
|
**/
|
||||||
|
|
||||||
|
typedef enum {FALSE = 0, TRUE = !FALSE} boolean;
|
1788
cpu/arm/aducrf101/Common/radioeng.c
Normal file
1788
cpu/arm/aducrf101/Common/radioeng.c
Normal file
File diff suppressed because it is too large
Load diff
174
cpu/arm/aducrf101/Common/radioeng.h
Normal file
174
cpu/arm/aducrf101/Common/radioeng.h
Normal file
|
@ -0,0 +1,174 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2014, Analog Devices, Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted (subject to the limitations in the
|
||||||
|
* disclaimer below) provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* - Neither the name of Analog Devices, Inc. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
|
||||||
|
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
|
||||||
|
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||||
|
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||||
|
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||||
|
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
@file radioeng.h
|
||||||
|
@brief Radio Interface Engine Functions
|
||||||
|
@version v1.0
|
||||||
|
@author PAD CSE group, Analog Devices Inc
|
||||||
|
@date May 08th 2013
|
||||||
|
**/
|
||||||
|
|
||||||
|
#define RIE_U32 unsigned long
|
||||||
|
#define RIE_U16 unsigned short int
|
||||||
|
#define RIE_U8 unsigned char
|
||||||
|
#define RIE_S8 signed char
|
||||||
|
|
||||||
|
/*! \enum RIE_BaseConfigs
|
||||||
|
* Variables of this type are used to define the Base Configuration
|
||||||
|
*/
|
||||||
|
/*! \var RIE_BaseConfigs DR_1_0kbps_Dev10_0kHz
|
||||||
|
* Base configuration of 1 kbps datarate, 10.0 kHz frequency deviation.
|
||||||
|
Use for achieving longer distances.
|
||||||
|
*/
|
||||||
|
/*! \var RIE_BaseConfigs DR_38_4kbps_Dev20kHz
|
||||||
|
* Base configuration of 38.4 kbps datarate, 20 kHz frequency deviation.
|
||||||
|
Use as a compromise of distance and power.
|
||||||
|
*/
|
||||||
|
/*! \var RIE_BaseConfigs DR_300_0kbps_Dev75_0kHz
|
||||||
|
* Base configuration of 300 kbps datarate, 75 kHz frequency deviation.
|
||||||
|
Use for achieving faster transmission times hence lower power.
|
||||||
|
*/
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
DR_1_0kbps_Dev10_0kHz = 0x0,
|
||||||
|
DR_38_4kbps_Dev20kHz = 0x1,
|
||||||
|
DR_300_0kbps_Dev75_0kHz = 0x2,
|
||||||
|
UnsupportedDRDev
|
||||||
|
} RIE_BaseConfigs;
|
||||||
|
|
||||||
|
/*! \enum RIE_ModulationTypes
|
||||||
|
* Variables of this type are used to define a tx modulation type
|
||||||
|
*/
|
||||||
|
/*! \var RIE_ModulationTypes FSK_Modulation
|
||||||
|
* FSK Modulation
|
||||||
|
*/
|
||||||
|
/*! \var RIE_ModulationTypes GFSK_Modulation
|
||||||
|
* GFSK Modulation
|
||||||
|
*/
|
||||||
|
typedef enum {FSK_Modulation = 0, GFSK_Modulation = 1} RIE_ModulationTypes;
|
||||||
|
|
||||||
|
/*! \enum RIE_PATypes
|
||||||
|
* Variables of this type are used to define a PA type
|
||||||
|
*/
|
||||||
|
/*! \var RIE_PATypes DifferentialPA
|
||||||
|
* Differential PA
|
||||||
|
*/
|
||||||
|
/*! \var RIE_PATypes SingleEndedPA
|
||||||
|
* Single Ended PA
|
||||||
|
*/
|
||||||
|
typedef enum {DifferentialPA = 0, SingleEndedPA = 1} RIE_PATypes;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum {PowerLevel0 ,PowerLevel1 ,PowerLevel2 ,PowerLevel3,
|
||||||
|
PowerLevel4 ,PowerLevel5 ,PowerLevel6 ,PowerLevel7,
|
||||||
|
PowerLevel8 ,PowerLevel9 ,PowerLevel10,PowerLevel11,
|
||||||
|
PowerLevel12,PowerLevel13,PowerLevel14,PowerLevel15
|
||||||
|
} RIE_PAPowerLevel;
|
||||||
|
|
||||||
|
|
||||||
|
/*! \enum RIE_BOOL
|
||||||
|
* Variables of this type are used to define a TRUE or FALSE condition
|
||||||
|
*/
|
||||||
|
/*! \var RIE_BOOL RIE_TRUE
|
||||||
|
* TRUE condition
|
||||||
|
*/
|
||||||
|
/*! \var RIE_BOOL RIE_FALSE
|
||||||
|
* FALSE condition
|
||||||
|
*/
|
||||||
|
typedef enum {RIE_FALSE = 0, RIE_TRUE = !RIE_FALSE} RIE_BOOL;
|
||||||
|
|
||||||
|
|
||||||
|
/*! \enum RIE_Responses
|
||||||
|
* Variables of this type are used to define the return value from functions
|
||||||
|
*/
|
||||||
|
/*! \var RIE_Responses RIE_Success
|
||||||
|
* Successful completion
|
||||||
|
*/
|
||||||
|
/*! \var RIE_Responses RIE_RadioSPICommsFail
|
||||||
|
* SPI communications with the radio failure.
|
||||||
|
*/
|
||||||
|
/*! \var RIE_Responses RIE_UnsupportedRadioConfig
|
||||||
|
* This is an unsupported radio configuration
|
||||||
|
*/
|
||||||
|
/*! \var RIE_Responses RIE_Unimplemented
|
||||||
|
* This feature has not been implemented
|
||||||
|
*/
|
||||||
|
/*! \var RIE_Responses RIE_InvalidParamter
|
||||||
|
* An invaild parameter was passed
|
||||||
|
*/
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
RIE_Success = 0x0,
|
||||||
|
RIE_RadioSPICommsFail = 0x1,
|
||||||
|
RIE_UnsupportedRadioConfig = 0x2,
|
||||||
|
RIE_Unimplemented = 0x3,
|
||||||
|
RIE_InvalidParamter = 0x4,
|
||||||
|
} RIE_Responses;
|
||||||
|
|
||||||
|
// Added in Radio Interface Engine v0.1
|
||||||
|
RIE_Responses RadioGetAPIVersion (RIE_U32 *pVersion);
|
||||||
|
RIE_Responses RadioInit (RIE_BaseConfigs BaseConfig);
|
||||||
|
RIE_Responses RadioPowerOff (void);
|
||||||
|
RIE_Responses RadioTerminateRadioOp (void);
|
||||||
|
RIE_Responses RadioSetFrequency (RIE_U32 Frequency);
|
||||||
|
RIE_Responses RadioSetModulationType (RIE_ModulationTypes ModulationType);
|
||||||
|
RIE_Responses RadioPayldManchesterEncode(RIE_BOOL bEnable);
|
||||||
|
RIE_Responses RadioPayldDataWhitening (RIE_BOOL bEnable);
|
||||||
|
RIE_Responses RadioTxPacketFixedLen (RIE_U8 Len, RIE_U8 *pData);
|
||||||
|
RIE_BOOL RadioTxPacketComplete (void);
|
||||||
|
RIE_Responses RadioTxSetPA (RIE_PATypes PAType,RIE_PAPowerLevel Power);
|
||||||
|
RIE_Responses RadioTxCarrier (void);
|
||||||
|
RIE_Responses RadioTxPreamble (void);
|
||||||
|
RIE_Responses RadioRxPacketFixedLen (RIE_U8 Len);
|
||||||
|
RIE_BOOL RadioRxPacketAvailable (void);
|
||||||
|
RIE_Responses RadioRxPacketRead (RIE_U8 BufferLen,RIE_U8 *pPktLen,RIE_U8 *pData,RIE_S8 *pRSSIdBm);
|
||||||
|
RIE_Responses RadioRxBERTestMode (void);
|
||||||
|
|
||||||
|
// Added in Radio Interface Engine v0.2
|
||||||
|
RIE_Responses RadioSwitchConfig (RIE_BaseConfigs BaseConfig);
|
||||||
|
RIE_Responses RadioRadioGetRSSI (RIE_S8 *pRSSIdBm);
|
||||||
|
RIE_Responses RadioTxSetPower (RIE_PAPowerLevel Power);
|
||||||
|
|
||||||
|
// Added in Radio Interface Engine v0.3
|
||||||
|
RIE_Responses RadioTxPacketVariableLen (RIE_U8 Len, RIE_U8 *pData);
|
||||||
|
RIE_Responses RadioRxPacketVariableLen (void);
|
||||||
|
|
||||||
|
// Added in Radio Interface Engine v0.5
|
||||||
|
RIE_Responses RadioDeInit (void);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
179
cpu/arm/aducrf101/Common/system_ADuCRF101.c
Normal file
179
cpu/arm/aducrf101/Common/system_ADuCRF101.c
Normal file
|
@ -0,0 +1,179 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2014, Analog Devices, Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted (subject to the limitations in the
|
||||||
|
* disclaimer below) provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* - Neither the name of Analog Devices, Inc. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
|
||||||
|
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
|
||||||
|
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||||
|
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||||
|
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||||
|
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
@file system_ADUCRF101.c
|
||||||
|
@brief CMSIS Cortex-M3 Device Peripheral Access Layer Implementation File
|
||||||
|
for the ADuCRF101
|
||||||
|
@version v1.0
|
||||||
|
@author PAD CSE group, Analog Devices Inc
|
||||||
|
@date January 14th 2013
|
||||||
|
**/
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
#include "ADuCRF101.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
DEFINES
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
/* Extract the Clock Divider */
|
||||||
|
#define __CCLK_DIV (1 << (pADI_CLKCTL->CLKCON & CLKCON_CD_MSK) )
|
||||||
|
|
||||||
|
/* define the clock multiplexer input frequencies */
|
||||||
|
#define __HFOSC 16000000
|
||||||
|
#define __LFXTAL 32768
|
||||||
|
#define __LFOSC 32768
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
Internal Clock Variables
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
static uint32_t uClk = 0; /* Undivided System Clock Frequency (UCLK) */
|
||||||
|
static uint32_t uClkDiv = 0; /* Divided System Clock Frequency (UCLK_DIV) */
|
||||||
|
|
||||||
|
/* Frequency of the external clock source connected to P0.5 */
|
||||||
|
static uint32_t SystemExtClock = 0;
|
||||||
|
|
||||||
|
/*----------------------------------------------------------------------------
|
||||||
|
Clock functions
|
||||||
|
*---------------------------------------------------------------------------*/
|
||||||
|
void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */
|
||||||
|
{
|
||||||
|
/* pre-processor verification that clock mux mask and allowed values agree */
|
||||||
|
#if ((CLKCON_CLKMUX_HFOSC \
|
||||||
|
| CLKCON_CLKMUX_LFXTAL \
|
||||||
|
| CLKCON_CLKMUX_LFOSC \
|
||||||
|
| CLKCON_CLKMUX_EXTP05) \
|
||||||
|
== CLKCON_CLKMUX_MSK)
|
||||||
|
|
||||||
|
/* update the system core clock according the the current clock mux setting */
|
||||||
|
switch (pADI_CLKCTL->CLKCON & CLKCON_CLKMUX_MSK ) {
|
||||||
|
|
||||||
|
case CLKCON_CLKMUX_HFOSC:
|
||||||
|
uClk = __HFOSC;
|
||||||
|
break;
|
||||||
|
case CLKCON_CLKMUX_LFXTAL:
|
||||||
|
uClk = __LFXTAL;
|
||||||
|
break;
|
||||||
|
case CLKCON_CLKMUX_LFOSC:
|
||||||
|
uClk = __LFOSC;
|
||||||
|
break;
|
||||||
|
case CLKCON_CLKMUX_ECLKIN:
|
||||||
|
uClk = SystemExtClock;
|
||||||
|
break;
|
||||||
|
/* no need to catch default case due to pre-processor test */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* update the divided system clock */
|
||||||
|
uClkDiv = uClk / __CCLK_DIV;
|
||||||
|
|
||||||
|
#else
|
||||||
|
#error "Clock mux mask and allowed value mismatch!"
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the system
|
||||||
|
*
|
||||||
|
* @param none
|
||||||
|
* @return none
|
||||||
|
*
|
||||||
|
* @brief Setup the microcontroller system.
|
||||||
|
* Initialize the System and update the SystemFrequency variable.
|
||||||
|
*/
|
||||||
|
void SystemInit (void)
|
||||||
|
{
|
||||||
|
/* reset CLKCON register */
|
||||||
|
pADI_CLKCTL->CLKCON = CLKCON_RVAL;
|
||||||
|
|
||||||
|
/* reset XOSCCON register */
|
||||||
|
pADI_CLKCTL->XOSCCON = XOSCCON_RVAL;
|
||||||
|
|
||||||
|
/* compute internal clocks */
|
||||||
|
SystemCoreClockUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Sets the system external clock frequency
|
||||||
|
*
|
||||||
|
* @param ExtClkFreq External clock frequency in Hz
|
||||||
|
* @return none
|
||||||
|
*
|
||||||
|
* Sets the clock frequency of the source connected to P0.5 clock input source
|
||||||
|
*/
|
||||||
|
void SetSystemExtClkFreq (uint32_t ExtClkFreq)
|
||||||
|
{
|
||||||
|
SystemExtClock = ExtClkFreq;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Gets the system external clock frequency
|
||||||
|
*
|
||||||
|
* @return External Clock frequency
|
||||||
|
*
|
||||||
|
* Gets the clock frequency of the source connected to P0.5 clock input source
|
||||||
|
*/
|
||||||
|
uint32_t GetSystemExtClkFreq (void)
|
||||||
|
{
|
||||||
|
return SystemExtClock;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* set the system clock dividers */
|
||||||
|
void SystemSetClockDivider(uint16_t div)
|
||||||
|
{
|
||||||
|
/* critical region */
|
||||||
|
__disable_irq();
|
||||||
|
|
||||||
|
/* read-modify-write without any interrupts */
|
||||||
|
|
||||||
|
pADI_CLKCTL->CLKCON &= ~(CLKCON_CD_MSK); /* keep everything else */
|
||||||
|
pADI_CLKCTL->CLKCON |= div; /* set new value */
|
||||||
|
|
||||||
|
/* end critical region */
|
||||||
|
__enable_irq();
|
||||||
|
|
||||||
|
/* refresh internal clock variables */
|
||||||
|
SystemCoreClockUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint32_t SystemGetClockFrequency(void)
|
||||||
|
{
|
||||||
|
return uClkDiv;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
116
cpu/arm/aducrf101/Common/system_ADuCRF101.h
Normal file
116
cpu/arm/aducrf101/Common/system_ADuCRF101.h
Normal file
|
@ -0,0 +1,116 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) 2014, Analog Devices, Inc. All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted (subject to the limitations in the
|
||||||
|
* disclaimer below) provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* - Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
*
|
||||||
|
* - Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the
|
||||||
|
* distribution.
|
||||||
|
*
|
||||||
|
* - Neither the name of Analog Devices, Inc. nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived
|
||||||
|
* from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
|
||||||
|
* GRANTED BY THIS LICENSE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
|
||||||
|
* HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||||
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||||
|
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||||
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
||||||
|
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||||
|
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
@file system_ADUCRF101.h
|
||||||
|
@brief: CMSIS Cortex-M3 Device Peripheral Access Layer Header File
|
||||||
|
for the ADuCRF101
|
||||||
|
@version v0.2
|
||||||
|
@author PAD CSE group, Analog Devices Inc
|
||||||
|
@date March 09th 2012
|
||||||
|
**/
|
||||||
|
|
||||||
|
|
||||||
|
/** @addtogroup CMSIS
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @addtogroup aducrf101_system
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __SYSTEM_ADUCRF101_H__
|
||||||
|
#define __SYSTEM_ADUCRF101_H__
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Initialize the system
|
||||||
|
*
|
||||||
|
* @param none
|
||||||
|
* @return none
|
||||||
|
*
|
||||||
|
* Setup the microcontroller system.
|
||||||
|
* Initialize the System and update the SystemCoreClock variable.
|
||||||
|
*/
|
||||||
|
extern void SystemInit (void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Update internal SystemCoreClock variable
|
||||||
|
*
|
||||||
|
* @param none
|
||||||
|
* @return none
|
||||||
|
*
|
||||||
|
* Updates the internal SystemCoreClock with current core
|
||||||
|
* Clock retrieved from cpu registers.
|
||||||
|
*/
|
||||||
|
extern void SystemCoreClockUpdate (void);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Sets the system external clock frequency
|
||||||
|
*
|
||||||
|
* @param ExtClkFreq External clock frequency in Hz
|
||||||
|
* @return none
|
||||||
|
*
|
||||||
|
* Sets the clock frequency of the source connected to P0.5 clock input source
|
||||||
|
*/
|
||||||
|
extern void SetSystemExtClkFreq (uint32_t ExtClkFreq);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Gets the system external clock frequency
|
||||||
|
*
|
||||||
|
* @return External Clock frequency
|
||||||
|
*
|
||||||
|
* Gets the clock frequency of the source connected to P0.5 clock input source
|
||||||
|
*/
|
||||||
|
extern uint32_t GetSystemExtClkFreq (void);
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __SYSTEM_ADUCRF101_H__ */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
Loading…
Add table
Reference in a new issue