Initial import: PWM32E C/W 100% firmware
This commit is contained in:
@@ -0,0 +1,232 @@
|
||||
/*!
|
||||
* \file system_it_xinc.c
|
||||
*
|
||||
* \brief Target system interruption implementation
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include "system_it_xinc.h"
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Func Prototype
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief This function handles NMI exception.
|
||||
*
|
||||
* @param[in]
|
||||
* @param[in]
|
||||
****************************************************************************************
|
||||
*/
|
||||
void NMI_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN NonMaskableInt_IRQn */
|
||||
DEBUG("%s\n", __func__);
|
||||
/* USER CODE END NonMaskableInt_IRQn */
|
||||
while (1)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief This function handles Hard Fault exception.
|
||||
*
|
||||
* @param[in]
|
||||
* @param[in]
|
||||
****************************************************************************************
|
||||
*/
|
||||
void HardFault_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN HardFault_IRQn */
|
||||
DEBUG("%s\n", __func__);
|
||||
/* USER CODE END HardFault_IRQn */
|
||||
while (1)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief This function handles Memory Manage exception.
|
||||
*
|
||||
* @param[in]
|
||||
* @param[in]
|
||||
****************************************************************************************
|
||||
*/
|
||||
void MemManage_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN */
|
||||
DEBUG("%s\n", __func__);
|
||||
/* USER CODE END */
|
||||
while (1)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief This function handles Bus Fault exception.
|
||||
*
|
||||
* @param[in]
|
||||
* @param[in]
|
||||
****************************************************************************************
|
||||
*/
|
||||
void BusFault_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN */
|
||||
DEBUG("%s\n", __func__);
|
||||
/* USER CODE END */
|
||||
while (1)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief This function handles Usage Fault exception.
|
||||
*
|
||||
* @param[in]
|
||||
* @param[in]
|
||||
****************************************************************************************
|
||||
*/
|
||||
void UsageFault_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN */
|
||||
DEBUG("%s\n", __func__);
|
||||
/* USER CODE END */
|
||||
while (1)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief This function handles SVCall exception.
|
||||
*
|
||||
* @param[in]
|
||||
* @param[in]
|
||||
****************************************************************************************
|
||||
*/
|
||||
void SVC_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN SVCall_IRQn */
|
||||
DEBUG("%s\n", __func__);
|
||||
/* USER CODE END SVCall_IRQn */
|
||||
while (1)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief This function handles Debug Monitor exception.
|
||||
*
|
||||
* @param[in]
|
||||
* @param[in]
|
||||
****************************************************************************************
|
||||
*/
|
||||
void DebugMon_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN */
|
||||
DEBUG("%s\n", __func__);
|
||||
/* USER CODE END */
|
||||
while (1)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief This function handles PendSVC exception.
|
||||
*
|
||||
* @param[in]
|
||||
* @param[in]
|
||||
****************************************************************************************
|
||||
*/
|
||||
void PendSV_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN PendSV_IRQn */
|
||||
DEBUG("%s\n", __func__);
|
||||
/* USER CODE END PendSV_IRQn */
|
||||
while (1)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/****************************** Hard Fault Handler Functions *******************************/
|
||||
/*------------------------------------------------------------------------------------
|
||||
Private Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
void HardFault_Handler_c(unsigned int * HardFault_args)
|
||||
{
|
||||
/*栈帧里面内容:*/
|
||||
unsigned int stack_r0; //压栈的 R0
|
||||
unsigned int stack_r1; //压栈的 R1
|
||||
unsigned int stack_r2; //压栈的 R2
|
||||
unsigned int stack_r3; //压栈的 R3
|
||||
unsigned int stack_r12; //压栈的 R12
|
||||
unsigned int stack_lr; //压栈的 lr
|
||||
unsigned int stack_pc; //压栈的 pc
|
||||
unsigned int stack_psr; //压栈的 psr
|
||||
|
||||
stack_r0 = ((unsigned int)HardFault_args[0]);
|
||||
stack_r1 = ((unsigned int)HardFault_args[1]);
|
||||
stack_r2 = ((unsigned int)HardFault_args[2]);
|
||||
stack_r3 = ((unsigned int)HardFault_args[3]);
|
||||
stack_r12 = ((unsigned int)HardFault_args[4]);
|
||||
stack_lr = ((unsigned int)HardFault_args[5]);
|
||||
stack_pc = ((unsigned int)HardFault_args[6]);
|
||||
stack_psr = ((unsigned int)HardFault_args[7]);
|
||||
|
||||
DEBUG("----%s----\n", __func__);
|
||||
DEBUG("R0=%x\n",stack_r0);
|
||||
DEBUG("R1=%x\n",stack_r1);
|
||||
DEBUG("R2=%x\n",stack_r2);
|
||||
DEBUG("R3=%x\n",stack_r3);
|
||||
DEBUG("R12=%x\n",stack_r12);
|
||||
DEBUG("LR[R14]=%x\n",stack_lr);
|
||||
DEBUG("PC[R15]=%x\n",stack_pc);
|
||||
DEBUG("PSR=%x\n",stack_psr);
|
||||
DEBUG("SCB_SHCSR=%x\n",SCB->SHCSR);
|
||||
DEBUG("---------------------------\n");
|
||||
|
||||
while(1);
|
||||
}
|
||||
|
||||
/*******************************************************************************************/
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
/*!
|
||||
* \file system_it_xinc.h
|
||||
*
|
||||
* \brief The header of system_it_xinc.c
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __SYSTEM_IT_XINC_H__
|
||||
#define __SYSTEM_IT_XINC_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include "xc6xxx.h"
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Exported Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
void NMI_Handler( void );
|
||||
void HardFault_Handler( void );
|
||||
void MemManage_Handler( void );
|
||||
void BusFault_Handler( void );
|
||||
void UsageFault_Handler( void );
|
||||
void SVC_Handler( void );
|
||||
void DebugMon_Handler( void );
|
||||
void PendSV_Handler( void );
|
||||
|
||||
void HardFault_Handler_c(unsigned int * HardFault_args);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __SYSTEM_IT_XINC_H__ */
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
/**
|
||||
* Initialize the system
|
||||
*
|
||||
* @param none
|
||||
* @return none
|
||||
*
|
||||
* @brief Setup the microcontroller system
|
||||
*
|
||||
*/
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
|
||||
#include "xc6xxx.h"
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
#define __DEBUG_OUT_PORT 0
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
#define VECTOR_NUM 48
|
||||
|
||||
void set_vector(void)
|
||||
{
|
||||
#if (USE_XIP == 1)
|
||||
__disable_irq();
|
||||
for (uint32_t i = 0, *Pvector = (uint32_t *)(0x11001000 + 0),
|
||||
*_vector_table = (uint32_t *)(0x10000000);
|
||||
i < VECTOR_NUM; i++) // copy vertor table
|
||||
{
|
||||
_vector_table[i] = *Pvector++;
|
||||
}
|
||||
|
||||
*((volatile unsigned int *)(0x4000013C)) =
|
||||
0x10000001; // inter vertor table remap
|
||||
__enable_irq();
|
||||
#endif
|
||||
}
|
||||
|
||||
static void WDT_ResetInit(void)
|
||||
{
|
||||
cpr_ctlapbclken_grctl__wdt_pclk_en__setf(ENABLE);
|
||||
|
||||
cpr_rstctl_ctlapb_sw__wdt_rstn__setf(RSTCTL_ENABLE);
|
||||
cpr_rstctl_ctlapb_sw__wdt_rstn__setf(RSTCTL_DISABLE);
|
||||
|
||||
cpr_rstctl_wdtrst_mask_set(
|
||||
(WDT_SYS_RSTN_MASK_DISABLE | WDT_M0_RSTN_MASK_ENABLE));
|
||||
|
||||
cpr_lp_ctl__ctl_wdt_tclk_en__setf(ENABLE);
|
||||
wdt_cr__wdt_en__setf(DISABLE);
|
||||
}
|
||||
|
||||
void SystemInit(void)
|
||||
{
|
||||
|
||||
WDT_ResetInit();
|
||||
|
||||
#if (USE_XIP == 1)
|
||||
|
||||
set_vector();
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
__RAM_CODE int sendchar(int c)
|
||||
{
|
||||
unsigned int status;
|
||||
#if (__DEBUG_OUT_PORT == 1)
|
||||
for (;;) {
|
||||
status = (*((volatile unsigned *)(0x40011000 + 0x14)));
|
||||
status &= 0x20;
|
||||
if (status == 0x20)
|
||||
break;
|
||||
}
|
||||
(*((volatile unsigned *)(0x40011000 + 0x00))) = c;
|
||||
return (1);
|
||||
#else
|
||||
for (;;) {
|
||||
status = (*((volatile unsigned *)(0x40010000 + 0x14)));
|
||||
status &= 0x20;
|
||||
if (status == 0x20)
|
||||
break;
|
||||
}
|
||||
(*((volatile unsigned *)(0x40010000 + 0x00))) = c;
|
||||
return (1);
|
||||
#endif
|
||||
}
|
||||
|
||||
struct __FILE
|
||||
{
|
||||
int handle; /* Add whatever you need here */
|
||||
};
|
||||
|
||||
FILE __stdout;
|
||||
__RAM_CODE int fputc(int ch, FILE *f) { return (sendchar(ch)); }
|
||||
|
||||
int ferror(FILE *f)
|
||||
{
|
||||
/* Your implementation of ferror */
|
||||
return EOF;
|
||||
}
|
||||
|
||||
void _ttywrch(int ch) { sendchar(ch); }
|
||||
|
||||
void _sys_exit(int return_code)
|
||||
{
|
||||
label:
|
||||
goto label; /* endless loop */
|
||||
}
|
||||
@@ -0,0 +1,256 @@
|
||||
|
||||
;/*****************************************************************************
|
||||
; * @file: startup_xinc.s
|
||||
; * @purpose: CMSIS Cortex-M0 Core Device Startup File for the
|
||||
; * Device xinc.
|
||||
; *****************************************************************************/
|
||||
|
||||
Stack_Size EQU 0x00001000
|
||||
|
||||
AREA STACK, NOINIT, READWRITE, ALIGN=3
|
||||
Stack_Mem SPACE Stack_Size
|
||||
__initial_sp
|
||||
|
||||
Heap_Size EQU 0x00000000
|
||||
|
||||
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 ; NMI Handler
|
||||
DCD HardFault_Handler ; Hard Fault Handler
|
||||
DCD MemManage_Handler ; MPU Fault Handler
|
||||
DCD BusFault_Handler ; Bus Fault Handler
|
||||
DCD UsageFault_Handler ; 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 ; PendSV Handler
|
||||
DCD SysTick_Handler ; SysTick Handler
|
||||
|
||||
; External Interrupts
|
||||
; ToDo: Add here the vectors for the device specific external interrupts handler
|
||||
DCD BLE_Handler ; 0
|
||||
DCD DMA_Handler ; 1
|
||||
DCD CPR_Handler ; 2
|
||||
DCD GPIO_Handler ; 3
|
||||
DCD RTC_Handler ; 4
|
||||
DCD TIMER0_Handler ; 5
|
||||
DCD TIMER1_Handler ; 6
|
||||
DCD TIMER2_Handler ; 7
|
||||
DCD TIMER3_Handler ; 8
|
||||
DCD WDT_Handler ; 9
|
||||
DCD I2C_Handler ; 10
|
||||
DCD UART0_Handler ; 11
|
||||
DCD UART1_Handler ; 12
|
||||
DCD SPI0_Handler ; 13
|
||||
DCD SPI1_Handler ; 14
|
||||
DCD 0 ; 15
|
||||
DCD 0 ; 16
|
||||
DCD GADC_Handler ; 17
|
||||
DCD PWM_Handler ; 18
|
||||
DCD AES_Handler ; 19
|
||||
DCD USB_Handler ; 20
|
||||
DCD AUDIO_Handler ; 21
|
||||
DCD RF24G_Handler ; 22
|
||||
DCD SPI2_Handler ; 23
|
||||
DCD 0 ; 24
|
||||
DCD UART2_Handler ; 25
|
||||
DCD I2S_Handler ; 26
|
||||
DCD AOTIMER0_Handler ; 27
|
||||
DCD AOTIMER1_Handler ; 28
|
||||
DCD CMP_Handler ; 29
|
||||
DCD FMC_Handler ; 30
|
||||
DCD CAN_Handler ; 31
|
||||
|
||||
__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, =0x4000013C ; remap
|
||||
LDR r1, =0x10000001
|
||||
STR r1, [r0]
|
||||
|
||||
|
||||
|
||||
LDR R0, =SystemInit
|
||||
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
|
||||
IMPORT HardFault_Handler_c ;函数声明
|
||||
movs r0, #4 ;判断主栈指针还是进程栈指针
|
||||
mov r1, lr
|
||||
tst r0, r1
|
||||
beq hf_used_msp ;如果是主栈指针
|
||||
mrs r0, psp ;否则是进程栈指针,把进程栈指针地址付给 R0
|
||||
ldr r1, =HardFault_Handler_c ;跳转到 HardFault 中断程序
|
||||
bx r1
|
||||
hf_used_msp
|
||||
mrs r0, msp ;把主栈指针地址赋给 R0
|
||||
ldr r1, =HardFault_Handler_c
|
||||
bx r1
|
||||
;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
|
||||
|
||||
Default_Handler PROC
|
||||
EXPORT BLE_Handler [WEAK]
|
||||
EXPORT DMA_Handler [WEAK]
|
||||
EXPORT CPR_Handler [WEAK]
|
||||
EXPORT GPIO_Handler [WEAK]
|
||||
EXPORT RTC_Handler [WEAK]
|
||||
EXPORT TIMER0_Handler [WEAK]
|
||||
EXPORT TIMER1_Handler [WEAK]
|
||||
EXPORT TIMER2_Handler [WEAK]
|
||||
EXPORT TIMER3_Handler [WEAK]
|
||||
EXPORT WDT_Handler [WEAK]
|
||||
EXPORT I2C_Handler [WEAK]
|
||||
EXPORT UART0_Handler [WEAK]
|
||||
EXPORT UART1_Handler [WEAK]
|
||||
EXPORT SPI0_Handler [WEAK]
|
||||
EXPORT SPI1_Handler [WEAK]
|
||||
;EXPORT KBS_Handler [WEAK]
|
||||
;EXPORT QDEC_Handler [WEAK]
|
||||
EXPORT GADC_Handler [WEAK]
|
||||
EXPORT PWM_Handler [WEAK]
|
||||
EXPORT AES_Handler [WEAK]
|
||||
|
||||
EXPORT PendSV_Handler [WEAK]
|
||||
EXPORT SysTick_Handler [WEAK]
|
||||
|
||||
EXPORT USB_Handler [WEAK];20
|
||||
EXPORT AUDIO_Handler [WEAK];21
|
||||
EXPORT RF24G_Handler [WEAK];22
|
||||
EXPORT SPI2_Handler [WEAK];23
|
||||
;EXPORT MPU_Handler [WEAK];24
|
||||
EXPORT UART2_Handler [WEAK];25
|
||||
EXPORT I2S_Handler [WEAK];26
|
||||
EXPORT AOTIMER0_Handler [WEAK];27
|
||||
EXPORT AOTIMER1_Handler [WEAK];28
|
||||
EXPORT CMP_Handler [WEAK];29
|
||||
EXPORT FMC_Handler [WEAK];30
|
||||
EXPORT CAN_Handler [WEAK];31
|
||||
|
||||
PendSV_Handler
|
||||
SysTick_Handler
|
||||
BLE_Handler
|
||||
RF24G_Handler
|
||||
DMA_Handler
|
||||
CPR_Handler
|
||||
GPIO_Handler
|
||||
RTC_Handler
|
||||
TIMER0_Handler
|
||||
TIMER1_Handler
|
||||
TIMER2_Handler
|
||||
TIMER3_Handler
|
||||
WDT_Handler
|
||||
I2C_Handler
|
||||
I2S_Handler
|
||||
UART0_Handler
|
||||
UART1_Handler
|
||||
UART2_Handler
|
||||
SPI0_Handler
|
||||
SPI1_Handler
|
||||
SPI2_Handler
|
||||
;KBS_Handler
|
||||
;QDEC_Handler
|
||||
GADC_Handler
|
||||
PWM_Handler
|
||||
AUDIO_Handler
|
||||
;SIM_Handler
|
||||
AES_Handler
|
||||
AOTIMER0_Handler
|
||||
AOTIMER1_Handler
|
||||
CMP_Handler
|
||||
FMC_Handler
|
||||
CAN_Handler
|
||||
USB_Handler
|
||||
|
||||
B .
|
||||
ENDP
|
||||
|
||||
|
||||
ALIGN
|
||||
|
||||
; User Initial Stack & Heap
|
||||
|
||||
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
|
||||
|
||||
END
|
||||
@@ -0,0 +1,69 @@
|
||||
/*!
|
||||
* \file adc.h
|
||||
*
|
||||
* \brief The head file of adc.c
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __ADC_H__
|
||||
#define __ADC_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
#define ADC_CON_MAX 500
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
TypeDef
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Exported Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
void adc_demo(void);
|
||||
void adc_channelswitch_sw_demo(void);
|
||||
void adc_channelswitch_hw_demo(void);
|
||||
void mic_pga_adc_demo(void);
|
||||
void ADC_channelswitch_hw_Intr_Callback(void);
|
||||
void ADC_channelswitch_sw_Intr_Callback(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ADC_H__ */
|
||||
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
/*!
|
||||
* \file clock.h
|
||||
*
|
||||
* \brief The head file of clock.c
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __CLOCK_H__
|
||||
#define __CLOCK_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdint.h>
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
TypeDef
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Exported Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
void clock_init(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __CLOCK_H__ */
|
||||
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
/*!
|
||||
* \file main.h
|
||||
*
|
||||
* \brief The head file of main.c
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __MAIN_H__
|
||||
#define __MAIN_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "xc6xxx.h"
|
||||
|
||||
#include "clock.h"
|
||||
#include "adc.h"
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
TypeDef
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Exported Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __MAIN_H__ */
|
||||
|
||||
@@ -0,0 +1,99 @@
|
||||
/*!
|
||||
* \file pga_adc.h
|
||||
*
|
||||
* \brief The head file of pga_adc.h
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __BSP_PGA_ADC_H_
|
||||
#define __BSP_PGA_ADC_H_
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include "stdint.h"
|
||||
#include "xc60xx.h"
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
#define SAMPLING_DEBUG 1
|
||||
#define REC_TEST_EN 1//录音测试,定时录音
|
||||
|
||||
#define ADC_CLOCK_FREQ_8M ADC_CLK_DIV_0//ADC_FREQ_8M
|
||||
#define ADC_CLOCK_FREQ_4M ADC_CLK_DIV_2//ADC_FREQ_4M
|
||||
#define ADC_CLOCK_FREQ_2M ADC_CLK_DIV_4//ADC_FREQ_2M
|
||||
#define ADC_CLOCK_FREQ_1M ADC_CLK_DIV_8//ADC_FREQ_1M
|
||||
#define ADC_CLOCK_FREQ_500K ADC_CLK_DIV_16//ADC_FREQ_500K
|
||||
|
||||
#define ADC_FREQ_CLOCK ADC_CLK_DIV_4//ADC时钟选择
|
||||
|
||||
|
||||
#define MIC_SAMPLING_8K 0
|
||||
#define MIC_SAMPLING_16K 1
|
||||
#define SAMPLING_TYPE MIC_SAMPLING_16K
|
||||
|
||||
|
||||
#define MIC_SAMPLING_MAX_LEN 1*256//缓冲长度,根据需求调节
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
TypeDef
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
short mic_adc_buff[2][MIC_SAMPLING_MAX_LEN]; //双缓存buff,方便读取以及采样
|
||||
uint16_t pga_adc_rx_index; //缓存buff下标
|
||||
uint8_t save_buf_index; //双缓存buff下标,存放第几个mic_adc_buff[save_buf_index][]
|
||||
uint8_t buf_full_flag;
|
||||
|
||||
uint8_t freq_con; //采样率计算
|
||||
|
||||
#if SAMPLING_DEBUG
|
||||
uint32_t pga_adc_rx_con;
|
||||
uint8_t rx_flag;
|
||||
#endif
|
||||
|
||||
#if REC_TEST_EN || SAMPLING_DEBUG
|
||||
uint8_t rec_len_time;
|
||||
#endif
|
||||
|
||||
}Mic_sampling_cb;
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
extern Mic_sampling_cb m_sampling_cb;
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Exported Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
void audio_adc_rx_dma_event_handler(void);
|
||||
void pga_adc_rx_event_handler(uint16_t pga_adc_val);
|
||||
|
||||
static __inline uint8_t __Get_Adc_Channel(void)
|
||||
{
|
||||
uint32_t Channe = XC_ADC->CHAN_CTL;
|
||||
return ((Channe >> ADC_CHAN_CTL_SELECT_CHAN_Pos) & 0x0f);//bit0-bit3
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,196 @@
|
||||
/*!
|
||||
* \file adc.c
|
||||
*
|
||||
* \brief Target adc implementation
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include "adc.h"
|
||||
#include "xc_drv_adc.h"
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
uint32_t adc_val_buff[ADC_CON_MAX];
|
||||
uint16_t adc_con = 0;
|
||||
/*------------------------------------------------------------------------------------
|
||||
Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief adc_channel_sw_demo
|
||||
* @details
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
|
||||
void adc_channelswitch_sw_demo(void)
|
||||
{
|
||||
DEBUG("ADC channelswitch sw demo\n");
|
||||
|
||||
uint32_t val;
|
||||
uint16_t integer;
|
||||
uint16_t decimal;
|
||||
ADC_InitCfg_t adc_cfg ;
|
||||
ADC_FIFO_TypeDef_t *fifo_val = NULL;
|
||||
|
||||
delay_ms(500);
|
||||
|
||||
// Prevent GPIO6 from being connected to the op amp,
|
||||
// causing GADC\pull-up invalidation problem
|
||||
cpr_opa_ctrl_reg__pdbias__setf(DISABLE);
|
||||
|
||||
GPIO_InitCfg_t GPIO_InitCfg = { 0 };
|
||||
GPIO_InitCfg.Mux = GPIO_Mux0;
|
||||
GPIO_InitCfg.FunSel = GPIO_Dx;
|
||||
GPIO_InitCfg.Pull = GPIO_NOPULL;
|
||||
// Board Led1 Initialization
|
||||
GPIO_InitCfg.Dir = GPIO_DIR_INPUT;
|
||||
GPIO_InitCfg.Int = NOT_INT;
|
||||
GPIO_InitCfg.Pin = GPIO_20;
|
||||
xc_gpio_init(&GPIO_InitCfg);
|
||||
|
||||
GPIO_InitCfg.Pin = GPIO_18;
|
||||
xc_gpio_init(&GPIO_InitCfg);
|
||||
|
||||
GPIO_InitCfg.Pin = GPIO_19;
|
||||
xc_gpio_init(&GPIO_InitCfg);
|
||||
|
||||
GPIO_InitCfg.Pin = GPIO_0;
|
||||
xc_gpio_init(&GPIO_InitCfg);
|
||||
|
||||
xc_gpio_fun_sel(GPIO_3, UART0_TX);
|
||||
xc_gpio_fun_sel(GPIO_2, UART0_RX);
|
||||
|
||||
adc_cfg.Freq = ADC_FREQ_4M;
|
||||
adc_cfg.RefVol = ADC_REF_VOL_3_3V;
|
||||
adc_cfg.SampEdge = ADC_SAMPEDGE_RISE;
|
||||
adc_cfg.ExtDataMode = ADC_EXT_DATA_MODE_32BIT;
|
||||
adc_cfg.ExtEdgeSel = ADC_EXT_EDGE_SEL_INTER;
|
||||
adc_cfg.ExtSampleNum = ADC_EXT_SAMPLE_NUM_4;
|
||||
adc_cfg.ExtTriggerSel = ADC_EXT_TRIGGER_SEL_PWM0;
|
||||
|
||||
xc_adc_init(&adc_cfg);
|
||||
|
||||
xc_adc_ch_not_auto_set(ADC_CH4_PIN0);
|
||||
|
||||
xc_adc_enable_it(ADC_INT_FIFO_ERROR_INT_SET | ADC_INT_READ_REQ_INT_SET);
|
||||
|
||||
NVIC_EnableIRQ(GADC_IRQn);
|
||||
|
||||
xc_adc_fifo_req_len_set(ADC_FIFO_CTL_READ_REQ_THRESH_LEN_8);
|
||||
|
||||
xc_adc_fifo_flush();
|
||||
|
||||
xc_adc_it_set(adc_int_get());
|
||||
|
||||
xc_adc_enable();
|
||||
|
||||
while(1)
|
||||
{
|
||||
|
||||
if (adc_con >= ADC_CON_MAX && adc_con != 0xffff)
|
||||
{
|
||||
fifo_val = (ADC_FIFO_TypeDef_t*)&val;
|
||||
|
||||
for(uint16_t i = 0; i < 500; i++)
|
||||
{
|
||||
val = adc_val_buff[i];
|
||||
|
||||
integer = ((uint32_t)(fifo_val->value_1)*(3.3*100))/(1.0*4095)/100;
|
||||
decimal = ((uint32_t)((fifo_val->value_1*(3.3*100))/4095)%100);
|
||||
DEBUG("i_dex1: %4d ch : %d val: %d adc_vol=%d.%02dV\n",i, fifo_val->chanel_1,fifo_val->value_1,integer, decimal);
|
||||
|
||||
integer = ((uint32_t)(fifo_val->value_2)*(3.3*100))/(1.0*4095)/100;
|
||||
decimal = ((uint32_t)((fifo_val->value_2*(3.3*100))/4095)%100);
|
||||
DEBUG("i_dex2: %4d ch : %d val: %d adc_vol=%d.%02dV\n",i, fifo_val->chanel_2,fifo_val->value_2,integer, decimal);
|
||||
|
||||
if ((i % 2) )
|
||||
DEBUG("\r\n\r\n");
|
||||
|
||||
}
|
||||
adc_con = 0xffff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void ADC_channelswitch_sw_Intr_Callback(void)
|
||||
{
|
||||
uint32_t adc_int;
|
||||
static uint8_t adc_start = 0;
|
||||
|
||||
adc_int = xc_adc_it_get();
|
||||
|
||||
if(!(adc_int & (ADC_INT_READ_REQ_INT_SET |ADC_INT_FIFO_ERROR_INT_SET )))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (adc_con >= ADC_CON_MAX)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
xc_adc_it_set(xc_adc_it_get());
|
||||
|
||||
if (++adc_start > 3)
|
||||
adc_start = 0;
|
||||
|
||||
switch(adc_start)
|
||||
{
|
||||
case 0:
|
||||
xc_adc_ch_not_auto_set(ADC_CH1_PIN20);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
xc_adc_ch_not_auto_set(ADC_CH12_PIN2);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
xc_adc_ch_not_auto_set(ADC_CH4_PIN0);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
xc_adc_ch_not_auto_set( ADC_CH6_PIN4);
|
||||
break;
|
||||
}
|
||||
|
||||
for(int t=0; t< ADC_FIFO_CTL_READ_REQ_THRESH_LEN_2; t++)
|
||||
{
|
||||
adc_val_buff[adc_con] = xc_adc_data_get();
|
||||
adc_con++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void adc_intr_callback(void)
|
||||
{
|
||||
ADC_channelswitch_sw_Intr_Callback();
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
/*!
|
||||
* \file main.c
|
||||
*
|
||||
* \brief Target main implementation
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include "main.h"
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Func Prototype
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
void app_uart_init(void)
|
||||
{
|
||||
GPIO_InitCfg_t gpio_cfg = {0};
|
||||
|
||||
gpio_cfg.Mux = GPIO_Mux0;
|
||||
gpio_cfg.Pull = GPIO_PULLUP;
|
||||
gpio_cfg.Int = NOT_INT;
|
||||
gpio_cfg.FunSel = UART0_TX;
|
||||
|
||||
gpio_cfg.Pin = GPIO_18;
|
||||
gpio_cfg.Dir = GPIO_DIR_OUTPUT;
|
||||
xc_gpio_init(&gpio_cfg);
|
||||
|
||||
gpio_cfg.FunSel = UART0_RX;
|
||||
gpio_cfg.Pin = GPIO_19;
|
||||
gpio_cfg.Dir = GPIO_DIR_INPUT;
|
||||
xc_gpio_init(&gpio_cfg);
|
||||
|
||||
UART_InitCfg_t uart_cfg = {0};
|
||||
|
||||
uart_cfg.Parity = UART_PARITY_DISABLE;
|
||||
uart_cfg.StopBits = UART_STOP_1_BITS;
|
||||
uart_cfg.WordLength = UART_DATA_8_BITS;
|
||||
uart_cfg.BaudRate = UART_BAUDRATE_115200;
|
||||
uart_cfg.HardwareFlowControl = UART_HWFC_DISABLE;
|
||||
|
||||
xc_uart_init(UART0_IDX, &uart_cfg);
|
||||
}
|
||||
|
||||
|
||||
void clock_init(void)
|
||||
{
|
||||
CLOCK_InitCfg_t clock_cfg;
|
||||
|
||||
clock_cfg.hfclk_src = CLOCK_HFCLK_SRC_XTAL;
|
||||
clock_cfg.hfclk_in = CLOCK_HFCLK_IN_32M;
|
||||
clock_cfg.lfclk_src = CLOCK_LFCLK_SRC_RC;
|
||||
|
||||
if (clock_cfg.lfclk_src == CLOCK_LFCLK_SRC_XTAL) {
|
||||
clock_cfg.lfclk_in = CLOCK_LFCLK_IN_32768;
|
||||
} else if (clock_cfg.lfclk_src == CLOCK_LFCLK_SRC_RC) {
|
||||
clock_cfg.lfclk_in = CLOCK_LFCLK_IN_32K;
|
||||
}
|
||||
|
||||
xc_clock_init_cfg(&clock_cfg);
|
||||
|
||||
SysTick_Config(xc_clock_hfclk_in_get() / 100);
|
||||
SysTick->CTRL &= ~SysTick_CTRL_TICKINT_Msk;
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
// Clock Initialization
|
||||
clock_init();
|
||||
|
||||
app_uart_init();
|
||||
|
||||
DEBUG("__START__\n");
|
||||
|
||||
|
||||
/*-----adc channelswitch sw Demo ----- */
|
||||
|
||||
adc_channelswitch_sw_demo();
|
||||
|
||||
|
||||
|
||||
while(1)
|
||||
{
|
||||
/* main loop */
|
||||
;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,613 @@
|
||||
/*!
|
||||
* \file pga_adc.c
|
||||
*
|
||||
* \brief Target pga adc implementation
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include "pga_adc.h"
|
||||
#include "adc.h"
|
||||
#include "ringbuffer.h"
|
||||
#include "xc6xxx_hal_adc.h"
|
||||
#include "xc6xxx_hal_uart.h"
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
#define USER_NOISE_EN 0
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
Mic_sampling_cb m_sampling_cb;
|
||||
extern void UART_SendByte(UART_TypeDef* UARTx, uint8_t Byte);
|
||||
extern uint8_t adc_ch_buff[1000];
|
||||
extern uint32_t adc_val_buff[500];
|
||||
extern uint16_t adc_con;
|
||||
/*------------------------------------------------------------------------------------
|
||||
Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
****************************************************************************************
|
||||
* @brief
|
||||
*
|
||||
* @param[in]
|
||||
* @param[in]
|
||||
|
||||
* @return[out]
|
||||
*
|
||||
****************************************************************************************
|
||||
*/
|
||||
void adc_uart_init(void)
|
||||
{
|
||||
|
||||
// uint8_t rxbuff[26];
|
||||
|
||||
GPIO_InitCfg_t gpio_cfg = {0};
|
||||
|
||||
gpio_cfg.Mux = GPIO_Mux0;
|
||||
gpio_cfg.Pull = GPIO_PULLUP;
|
||||
gpio_cfg.Int = NOT_INT;
|
||||
|
||||
gpio_cfg.Pin = GPIO_3;
|
||||
gpio_cfg.Dir = GPIO_DIR_OUTPUT;
|
||||
gpio_cfg.FunSel = UART1_TX;
|
||||
xc_gpio_init(&gpio_cfg);
|
||||
|
||||
gpio_cfg.Pin = GPIO_2;
|
||||
gpio_cfg.Dir = GPIO_DIR_INPUT;
|
||||
gpio_cfg.FunSel = UART1_RX;
|
||||
xc_gpio_init(&gpio_cfg);
|
||||
|
||||
UART_InitCfg_t uart_cfg = {0};
|
||||
|
||||
uart_cfg.Parity = UART_PARITY_DISABLE;
|
||||
uart_cfg.StopBits = UART_STOP_1_BITS;
|
||||
uart_cfg.WordLength = UART_DATA_8_BITS;
|
||||
uart_cfg.BaudRate = UART_BAUDRATE_1M;
|
||||
uart_cfg.HardwareFlowControl = UART_HWFC_DISABLE;
|
||||
|
||||
xc_uart_init(XC_UART1, &uart_cfg);
|
||||
|
||||
UART_Enable_RxIT(XC_UART1);
|
||||
NVIC_EnableIRQ(UART1_IRQn);
|
||||
}
|
||||
|
||||
void uart_seed_data(uint8_t data) { UART_SendByte(XC_UART1, data); }
|
||||
|
||||
void uart_seed_buff(uint8_t *Data, uint16_t len)
|
||||
{
|
||||
UART_SendData(XC_UART1, Data, len);
|
||||
}
|
||||
|
||||
// extern unsigned int filter_data(unsigned int data);
|
||||
// 对采样到的ADC值进行处理
|
||||
void pga_adc_rx_event_handler(uint16_t pga_adc_val)
|
||||
{
|
||||
#if USER_NOISE_EN
|
||||
static uint8_t delay_con = 0;
|
||||
static uint32_t voice_data_bk = 0;
|
||||
#endif
|
||||
static uint8_t freq_con = 0;
|
||||
|
||||
short voice_data = 0;
|
||||
|
||||
freq_con++;
|
||||
if (freq_con < m_sampling_cb.freq_con)
|
||||
return;
|
||||
freq_con = 0;
|
||||
|
||||
#if SAMPLING_DEBUG
|
||||
if (m_sampling_cb.rx_flag)
|
||||
return;
|
||||
|
||||
m_sampling_cb.pga_adc_rx_con++;
|
||||
#endif
|
||||
|
||||
#if REC_TEST_EN || SAMPLING_DEBUG
|
||||
if (!m_sampling_cb.rec_len_time) {
|
||||
#if SAMPLING_DEBUG
|
||||
m_sampling_cb.rx_flag = 1;
|
||||
#endif //SAMPLING_DEBUG
|
||||
return;
|
||||
}
|
||||
#endif // REC_TEST_EN || SAMPLING_DEBUG
|
||||
|
||||
// voice_data = pga_adc_val;
|
||||
// if (pga_adc_val > 50) pga_adc_val = pga_adc_val - 50;//平移
|
||||
|
||||
voice_data = pga_adc_val;
|
||||
|
||||
#if USER_NOISE_EN
|
||||
if (pga_adc_val > 2100 || pga_adc_val < 1900) {
|
||||
delay_con = 0;
|
||||
} else {
|
||||
delay_con++;
|
||||
if (delay_con >= 50) {
|
||||
delay_con = 50;
|
||||
pga_adc_val = (voice_data_bk + pga_adc_val) / 2;
|
||||
pga_adc_val = 1024 + pga_adc_val / 2;
|
||||
}
|
||||
}
|
||||
|
||||
voice_data_bk = voice_data = pga_adc_val;
|
||||
#endif //USER_NOISE_EN
|
||||
|
||||
if (voice_data > 2047) {
|
||||
voice_data = (((uint32_t)voice_data - 2047) * 0x7fff / 2048);
|
||||
voice_data &= ~0x8000;
|
||||
} else {
|
||||
voice_data = (((uint32_t)2047 - voice_data) * 0x7fff / 2048);
|
||||
voice_data = 0x7fff - voice_data;
|
||||
voice_data |= 0x8000;
|
||||
}
|
||||
|
||||
m_sampling_cb.mic_adc_buff[m_sampling_cb.save_buf_index]
|
||||
[m_sampling_cb.pga_adc_rx_index] = voice_data;
|
||||
|
||||
m_sampling_cb.pga_adc_rx_index++;
|
||||
|
||||
if (m_sampling_cb.pga_adc_rx_index >= MIC_SAMPLING_MAX_LEN) {
|
||||
m_sampling_cb.pga_adc_rx_index = 0;
|
||||
m_sampling_cb.save_buf_index = !m_sampling_cb.save_buf_index;
|
||||
m_sampling_cb.buf_full_flag = 1;
|
||||
}
|
||||
}
|
||||
|
||||
#if (USE_XIP == 1)
|
||||
/**
|
||||
* @brief mic_pga_adc_sampling_set
|
||||
* @details
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
|
||||
void mic_pga_adc_sampling_set(void)
|
||||
{
|
||||
CLOCK_HighFreq_In_Typedef uclock_freq = CLOCK_HighFreq_Get();
|
||||
#if (SAMPLING_TYPE == MIC_SAMPLING_8K)
|
||||
|
||||
#if (ADC_FREQ_CLOCK == ADC_CLK_DIV_2)
|
||||
if (uclock_freq == CLOCK_HFCLK_IN_96M) {
|
||||
m_sampling_cb.freq_con = 32;
|
||||
} else if (uclock_freq == CLOCK_HFCLK_IN_64M) {
|
||||
m_sampling_cb.freq_con = 24;
|
||||
} else {
|
||||
m_sampling_cb.freq_con = 19;
|
||||
}
|
||||
#else
|
||||
//===========ADC时钟为2/4M的时候
|
||||
if (uclock_freq == CLOCK_HFCLK_IN_96M) {
|
||||
m_sampling_cb.freq_con = 32;
|
||||
} else if (uclock_freq == CLOCK_HFCLK_IN_64M) {
|
||||
m_sampling_cb.freq_con = 21;
|
||||
} else {
|
||||
m_sampling_cb.freq_con = 15;
|
||||
}
|
||||
#endif //(ADC_FREQ_CLOCK == ADC_CLK_DIV_2)
|
||||
|
||||
#else // 16k采样
|
||||
|
||||
#if (ADC_FREQ_CLOCK == ADC_CLK_DIV_2)
|
||||
if (uclock_freq == CLOCK_HFCLK_IN_96M) {
|
||||
m_sampling_cb.freq_con = 18;
|
||||
} else if (uclock_freq == CLOCK_HFCLK_IN_64M) {
|
||||
m_sampling_cb.freq_con = 12;
|
||||
} else {
|
||||
m_sampling_cb.freq_con = 9;
|
||||
}
|
||||
#elif (ADC_FREQ_CLOCK == ADC_CLK_DIV_4)
|
||||
if (uclock_freq == CLOCK_HFCLK_IN_96M) {
|
||||
m_sampling_cb.freq_con = 13;
|
||||
} else if (uclock_freq == CLOCK_HFCLK_IN_64M) {
|
||||
m_sampling_cb.freq_con = 8;
|
||||
} else {
|
||||
m_sampling_cb.freq_con = 7;
|
||||
}
|
||||
#else
|
||||
//===========ADC时钟为2的时候
|
||||
if (uclock_freq == CLOCK_HFCLK_IN_96M) {
|
||||
m_sampling_cb.freq_con = 16;
|
||||
} else if (uclock_freq == CLOCK_HFCLK_IN_64M) {
|
||||
m_sampling_cb.freq_con = 9;
|
||||
} else {
|
||||
m_sampling_cb.freq_con = 5;
|
||||
}
|
||||
#endif //(ADC_FREQ_CLOCK == ADC_CLK_DIV_2)
|
||||
|
||||
#endif //(SAMPLING_TYPE == MIC_SAMPLING_8K)
|
||||
}
|
||||
|
||||
#else
|
||||
/**
|
||||
* @brief mic_pga_adc_sampling_set
|
||||
* @details
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
void mic_pga_adc_sampling_set(void)
|
||||
{
|
||||
CLOCK_HighFreq_In_Typedef uclock_freq = CLOCK_HighFreq_Get();
|
||||
#if (SAMPLING_TYPE == MIC_SAMPLING_8K)
|
||||
|
||||
if (uclock_freq == CLOCK_HFCLK_IN_96M) {
|
||||
m_sampling_cb.freq_con = 32;
|
||||
} else if (uclock_freq == CLOCK_HFCLK_IN_64M) {
|
||||
m_sampling_cb.freq_con = 24;
|
||||
} else {
|
||||
m_sampling_cb.freq_con = 20;
|
||||
}
|
||||
|
||||
//===========ADC采样率为2/4M的时候
|
||||
if (uclock_freq == CLOCK_HFCLK_IN_96M)
|
||||
// {
|
||||
// m_sampling_cb.freq_con = 32;
|
||||
// }
|
||||
// else if (uclock_freq == CLOCK_HFCLK_IN_64M)
|
||||
// {
|
||||
// m_sampling_cb.freq_con = 21;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// m_sampling_cb.freq_con = 20;
|
||||
// }
|
||||
|
||||
#else
|
||||
if (uclock_freq == CLOCK_HFCLK_IN_96M) {
|
||||
m_sampling_cb.freq_con = 16;
|
||||
} else if (uclock_freq == CLOCK_HFCLK_IN_64M) {
|
||||
m_sampling_cb.freq_con = 12;
|
||||
} else {
|
||||
m_sampling_cb.freq_con = 10;
|
||||
}
|
||||
|
||||
//===========ADC采样率为2/4M的时候
|
||||
// if (uclock_freq == CLOCK_HFCLK_IN_96M)
|
||||
// {
|
||||
// m_sampling_cb.freq_con = 16;
|
||||
// }
|
||||
// else if (uclock_freq == CLOCK_HFCLK_IN_64M)
|
||||
// {
|
||||
// m_sampling_cb.freq_con = 9;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// m_sampling_cb.freq_con = 7;
|
||||
// }
|
||||
|
||||
#endif // (SAMPLING_TYPE == MIC_SAMPLING_8K)
|
||||
}
|
||||
|
||||
#endif //USE_XIP == 1
|
||||
|
||||
/**
|
||||
* @brief mic_pga_adc_sampling_set
|
||||
* @details
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
|
||||
uint32_t pga_adc_data_uart_byte_delay(void)
|
||||
{
|
||||
uint32_t delay = 0;
|
||||
CLOCK_HighFreq_In_Typedef uclock_freq = CLOCK_HighFreq_Get();
|
||||
|
||||
#if (ADC_FREQ_CLOCK == ADC_CLK_DIV_2)
|
||||
if (uclock_freq == CLOCK_HFCLK_IN_64M) {
|
||||
delay = 210;
|
||||
} else {
|
||||
delay = 75;
|
||||
}
|
||||
#else
|
||||
if (uclock_freq == CLOCK_HFCLK_IN_64M) {
|
||||
delay = 210;
|
||||
} else {
|
||||
delay = 86;
|
||||
}
|
||||
#endif
|
||||
return delay;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief pga_init
|
||||
* @details
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
|
||||
void pga_init(void)
|
||||
{
|
||||
uint32_t adc_reg = 0;
|
||||
|
||||
DEBUG("audio_adc_ctrl_reg0 = %x\n", *((volatile unsigned int *)(0x400001BC)));
|
||||
//for(int i=0; i<0x100000; i++); //delay
|
||||
|
||||
adc_reg = *((volatile unsigned int *)(0x400001BC));
|
||||
|
||||
adc_reg &= ~(1 << 28);
|
||||
adc_reg |= (1 << 28); // opa第1级增益 +20DB
|
||||
adc_reg &= ~(0x0f << 24);
|
||||
adc_reg |= (0x0a << 24); // opa第2级增益 +16DB //主要修改增益处(<24-27>)
|
||||
|
||||
adc_reg &= ~(0x7 << 21);
|
||||
adc_reg |= (0x7 << 21); // BIT21-23电流大小控制,最大为000,最小为111
|
||||
|
||||
adc_reg &= ~(0x0F << 0); // bias寄存器 控制电流
|
||||
|
||||
adc_reg &= ~(0x1 << 4); // opa pd信号
|
||||
|
||||
adc_reg &= ~(1 << 12); // open pdbias
|
||||
|
||||
adc_reg |= (0x1 << 5); // 差分
|
||||
|
||||
adc_reg &= ~(1 << 7); // open pdbias pga第1级增益,
|
||||
|
||||
*((volatile unsigned int *)(0x400001BC)) = adc_reg;
|
||||
DEBUG("after audio_adc_ctrl_reg0 = %x\n", *((volatile unsigned int *)(0x400001BC)));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief mic_pga_adc_demo
|
||||
* @details
|
||||
* @param void
|
||||
* @retval void
|
||||
*/
|
||||
|
||||
void mic_pga_adc_demo(void)
|
||||
{
|
||||
// DEBUG("__MIC_PGA_ADC_DEMO__\r");
|
||||
adc_uart_init();
|
||||
|
||||
// uint16_t adc_val = 0;
|
||||
adc_cfg adc_cfg;
|
||||
|
||||
GPIO_InitCfg_t GPIO_InitCfg = {0};
|
||||
|
||||
GPIO_InitCfg.Mux = GPIO_Mux0;
|
||||
GPIO_InitCfg.FunSel = GPIO_Dx;
|
||||
GPIO_InitCfg.Pull = GPIO_NOPULL;
|
||||
// Board Led1 Initialization
|
||||
GPIO_InitCfg.Dir = GPIO_DIR_INPUT;
|
||||
GPIO_InitCfg.Int = NOT_INT;
|
||||
GPIO_InitCfg.Pin = 6;
|
||||
xc_gpio_init(&GPIO_InitCfg);
|
||||
|
||||
// GPIO_InitCfg.Pin = 8;
|
||||
// xc_gpio_init(&GPIO_InitCfg);
|
||||
//
|
||||
// GPIO_InitCfg.Pin = 9;
|
||||
// xc_gpio_init(&GPIO_InitCfg);
|
||||
|
||||
#if SAMPLING_DEBUG || REC_TEST_EN
|
||||
TIMER_BaseInitTypeDef Timer_Init;
|
||||
|
||||
Timer_Init.src_clk = TIMER_CLK_SRC_32M_DIV;
|
||||
Timer_Init.mode = TIMER_MODE_CYCLE_COUNT;
|
||||
Timer_Init.div_clk = TIMER_DIV_CLK_1MHzOr1K;
|
||||
// Timer0 Config & Start
|
||||
TIMER_Base_Init(XC_TIMER1, &Timer_Init);
|
||||
TIMER_SetUs(XC_TIMER1,1000000); // 测试采样到的时候改成1秒,录音测试改成5秒或者其他
|
||||
#endif
|
||||
|
||||
// pga初始化
|
||||
pga_init();
|
||||
|
||||
/*----- Special Pin -----*/
|
||||
/*< SWD 和 SWCK 引脚也可以作为 ADC 使用,
|
||||
注意 PIN 脚的功能重映射 >*/
|
||||
// xc_gpio_fun_sel(12,GPIO_Mux1);
|
||||
// xc_gpio_fun_sel(13,GPIO_Mux1);
|
||||
/*-----------------------*/
|
||||
|
||||
adc_cfg.Freq = ADC_FREQ_4M;
|
||||
adc_cfg.RefVol = ADC_REF_VOL_3_3V;
|
||||
adc_cfg.SampEdge = ADC_SAMPEDGE_FALL;
|
||||
adc_cfg.ExtDataMode = ADC_DATA_MODE_32BIT;
|
||||
adc_cfg.ExtEdgeSel = ADC_EXT_EDGE_SEL_INTER; // ADC_EXT_EDGE_SEL_EXTERN_RISE // ADC_EXT_EDGE_SEL_EXTERN_BOTH
|
||||
adc_cfg.ExtSampleNum = ADC_SAMPLE_NUM_16;
|
||||
adc_cfg.ExtTriggerSel = ADC_TRIGGER_SEL_PWM0;
|
||||
|
||||
ADC_Init(XC_ADC, &adc_cfg);
|
||||
|
||||
// 采样率设置
|
||||
mic_pga_adc_sampling_set(); // ADC改动跟着改动
|
||||
|
||||
__ADC_ChannelSet(XC_ADC, ADC_CHANNEL13_PIN6);
|
||||
|
||||
__ADC_FIFO_ReqIntLenthSet(XC_ADC);
|
||||
|
||||
__ADC_FIFO_Flush(XC_ADC);
|
||||
|
||||
__ADC_Clear_IT_Flag(XC_ADC);
|
||||
|
||||
//=============中断=======================
|
||||
ADC_Enable_IT(XC_ADC, ADC_INT_EN_READ_REQ_EN_ENABLE |
|
||||
ADC_INT_EN_FIFO_ERROR_EN_ENABLE);
|
||||
NVIC_EnableIRQ(GADC_IRQn);
|
||||
|
||||
__ADC_Enable(XC_ADC);
|
||||
|
||||
#if SAMPLING_DEBUG || REC_TEST_EN
|
||||
TIMER_Start_IT(XC_TIMER1);
|
||||
m_sampling_cb.rec_len_time = 5; // 秒
|
||||
|
||||
uint8_t rec_time;
|
||||
rec_time = m_sampling_cb.rec_len_time;
|
||||
#endif
|
||||
|
||||
DEBUG("start adc\n");
|
||||
|
||||
short voice_data = 0;
|
||||
uint16_t voice_adc_rx_index = 0;
|
||||
uint32_t uart_byte_delay = pga_adc_data_uart_byte_delay();
|
||||
|
||||
while (1) {
|
||||
#if SAMPLING_DEBUG
|
||||
if (m_sampling_cb.rx_flag) {
|
||||
delay_ms(500);
|
||||
DEBUG("sampling: %d.%dKhz\n",(m_sampling_cb.pga_adc_rx_con / rec_time) / 1000,
|
||||
(m_sampling_cb.pga_adc_rx_con / rec_time) % 1000);
|
||||
}
|
||||
#endif
|
||||
//ADC_MIC_StartGetValue(XC_ADC, ADC_CHANNEL13_PIN6,&adc_val); //轮询
|
||||
if (m_sampling_cb.buf_full_flag) {
|
||||
m_sampling_cb.buf_full_flag = 0;
|
||||
|
||||
voice_adc_rx_index = 0;
|
||||
while (voice_adc_rx_index < MIC_SAMPLING_MAX_LEN) {
|
||||
voice_data = m_sampling_cb.mic_adc_buff[!m_sampling_cb.save_buf_index]
|
||||
[voice_adc_rx_index];
|
||||
//DEBUG("%d\n",voice_data);
|
||||
uart_seed_data(voice_data & 0xff);
|
||||
for (uint16_t i = 0; i < uart_byte_delay; i++); // 64M延时
|
||||
uart_seed_data((voice_data >> 8) & 0xff);
|
||||
for (uint16_t i = 0; i < uart_byte_delay; i++); // 64M延时
|
||||
voice_adc_rx_index++;
|
||||
}
|
||||
// m_sampling_cb.save_buf_index = !m_sampling_cb.save_buf_index;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Timer1_Callback(void *context)
|
||||
{
|
||||
(void)context;
|
||||
#if SAMPLING_DEBUG
|
||||
//m_sampling_cb.rx_flag = 1;
|
||||
#endif
|
||||
#if REC_TEST_EN
|
||||
if (m_sampling_cb.rec_len_time)
|
||||
{
|
||||
//DEBUG("m_sampling_cb.rec_len_time\n");
|
||||
m_sampling_cb.rec_len_time--;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//=========================================PGA+ADC相关的=========================================
|
||||
void ADC_MIC_StartGetValue(ADC_TypeDef* ADCx, ADC_ChannelTypeDef Channel,uint16_t *adc_val)
|
||||
{
|
||||
uint32_t val;
|
||||
ADC_FIFO_TypeDef *fifo_val = NULL;
|
||||
|
||||
if (__Get_Adc_Channel() != Channel)
|
||||
{
|
||||
__ADC_Disable(ADCx);
|
||||
|
||||
__ADC_ChannelSet(ADCx, Channel);
|
||||
|
||||
__ADC_FIFO_ReqIntLenthSet(ADCx);
|
||||
|
||||
__ADC_FIFO_Flush(ADCx);
|
||||
|
||||
__ADC_Clear_IT_Flag(ADCx);
|
||||
|
||||
__ADC_Enable(ADCx);
|
||||
}
|
||||
|
||||
val = ADCx->INT_RAW;
|
||||
if(((val & ADC_INT_READ_REQ_INT_Msk) != ADC_INT_READ_REQ_INT_Msk))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
__ADC_Clear_IT_Flag(ADCx);
|
||||
|
||||
fifo_val = (ADC_FIFO_TypeDef*)&val;
|
||||
|
||||
for(int t=0; t< ADC_FIFO_CTL_READ_REQ_THRESH_LEN_8; t++)
|
||||
{
|
||||
val = ADCx->FIFO;
|
||||
|
||||
if(fifo_val->chanel_1 != fifo_val->chanel_2)
|
||||
{
|
||||
// DEBUG("channel error :%d\n",t);
|
||||
continue;
|
||||
}
|
||||
|
||||
if(fifo_val->chanel_1 != Channel)
|
||||
{
|
||||
// DEBUG("channel error :%d\n",t);
|
||||
continue;
|
||||
}
|
||||
|
||||
pga_adc_rx_event_handler(fifo_val->value_1);
|
||||
pga_adc_rx_event_handler(fifo_val->value_2);
|
||||
|
||||
}
|
||||
|
||||
*adc_val = fifo_val->value_1;
|
||||
|
||||
__ADC_FIFO_Flush(ADCx);
|
||||
// __ADC_Disable(ADCx);
|
||||
// __ADC_ChannelSet(ADCx, Channel);
|
||||
// __ADC_Clear_IT_Flag(XC_ADC);
|
||||
// __ADC_Enable(XC_ADC);
|
||||
}
|
||||
//=================================================================================
|
||||
|
||||
void PGA_ADC_Intr_Callback(void)
|
||||
{
|
||||
uint32_t adc_int;
|
||||
uint32_t val;
|
||||
|
||||
ADC_FIFO_TypeDef *fifo_val = NULL;
|
||||
|
||||
adc_int = XC_ADC->INT;
|
||||
|
||||
if(!(adc_int & (ADC_INT_READ_REQ_INT_Msk | ADC_INT_FIFO_ERROR_INT_Msk)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
//开关ADC会影响采样率,需要重新调整
|
||||
//__ADC_Disable(XC_ADC);
|
||||
fifo_val = (ADC_FIFO_TypeDef*)&val;
|
||||
|
||||
for(int t=0; t< ADC_FIFO_CTL_READ_REQ_THRESH_LEN_8; t++)
|
||||
{
|
||||
val = XC_ADC->FIFO;
|
||||
|
||||
if(fifo_val->chanel_1 == ADC_CHANNEL13_PIN6)
|
||||
{
|
||||
pga_adc_rx_event_handler(fifo_val->value_1);
|
||||
}
|
||||
if(fifo_val->chanel_2 == ADC_CHANNEL13_PIN6)
|
||||
{
|
||||
pga_adc_rx_event_handler(fifo_val->value_2);
|
||||
}
|
||||
//if (t==7)
|
||||
// __ADC_Enable(XC_ADC);
|
||||
|
||||
}
|
||||
// __ADC_Enable(XC_ADC);
|
||||
__ADC_FIFO_Flush(XC_ADC);
|
||||
|
||||
}
|
||||
|
||||
void ADC_Intr_Callback(void)
|
||||
{
|
||||
ADC_channelswitch_hw_Intr_Callback(); //adc硬件切换
|
||||
// ADC_channelswitch_sw_Intr_Callback();//adc软件切换
|
||||
// PGA_ADC_Intr_Callback(); //录音pga
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
|
||||
FUNC void Initialization(void)
|
||||
{
|
||||
SP = _RDWORD(0x10000000);
|
||||
PC = _RDWORD(0x10000004);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
LOAD %L INCREMENTAL
|
||||
Initialization();
|
||||
@@ -0,0 +1,84 @@
|
||||
|
||||
|
||||
|
||||
FUNC void InitGpio(void)
|
||||
{
|
||||
// Config IOMUX
|
||||
/*
|
||||
gpio_mux_ctl_u(33,1);//d2
|
||||
gpio_mux_ctl_u(34,1);//d3
|
||||
gpio_mux_ctl_u(35,2);//clk
|
||||
gpio_mux_ctl_u(36,2);//cs
|
||||
gpio_mux_ctl_u(37,2);//d0 rx
|
||||
gpio_mux_ctl_u(38,2);//d1 tx
|
||||
*/
|
||||
_WDWORD(0x4000019c, 0x00002A94);
|
||||
}
|
||||
FUNC void InitFlash(void)
|
||||
{
|
||||
|
||||
}
|
||||
FUNC void InitXIP(void)
|
||||
{
|
||||
|
||||
_WDWORD(0x40000104,0x040000);//reset ssi0
|
||||
_WDWORD(0x40000104,0x040004);//reset ssi0
|
||||
_WDWORD(0x40000050,0x110000);//close spi0 mclk
|
||||
_WDWORD(0x40000070,0x1000000);//close spi0 pclk
|
||||
|
||||
|
||||
//config fmc
|
||||
_WDWORD(0x40000270, 0x0503);
|
||||
_Sleep_(1);// delay about 400us
|
||||
_WDWORD(0x40000270, 0x3503);
|
||||
//config cache
|
||||
_Sleep_(1);// delay about 400us
|
||||
_WDWORD(0x52000000, 0x0);
|
||||
_Sleep_(1);// delay about 400us
|
||||
_WDWORD(0x52000000, 0x21);
|
||||
_Sleep_(1);// delay about 400us
|
||||
_Sleep_(1);// delay about 400us
|
||||
_Sleep_(1);// delay about 400us
|
||||
_Sleep_(1);// delay about 400us
|
||||
|
||||
|
||||
//config xip spi
|
||||
_WDWORD(0x51000008, 0); //disable spi
|
||||
|
||||
_WDWORD(0x5100002c,0); //close IE
|
||||
_WDWORD(0x51000000,0x1F); //32bit SPI data
|
||||
_WDWORD(0x51000010,0x01); //enable select slave -- SE
|
||||
_WDWORD(0x51000018,0x0); //TXFTL be set 0
|
||||
_WDWORD(0x5100001c,0x0); //RXFTL be set 0
|
||||
|
||||
_WDWORD(0x5100010c, 0x01);//enable select slave
|
||||
_WDWORD(0x51000114, 0xFF);//XIP time out
|
||||
|
||||
_WDWORD(0x51000014, 0x2);//div 2
|
||||
|
||||
//quad
|
||||
_WDWORD(0x51000108, (2)|(6<<4)|(2<<9)|(1<<22)|(1<<29)|(1<<23)|(0<<24)|(8<<13));
|
||||
_WDWORD(0x51000100, 0x6b);//quad read cmd
|
||||
_WDWORD(0x51000104, 0x6b);//quad read cmd
|
||||
|
||||
|
||||
// //dual
|
||||
// _WDWORD(0x51000108, (1)|(6<<4)|(2<<9)|(1<<22)|(1<<29)|(1<<23)|(0)|(8<<13));
|
||||
// _WDWORD(0x51000100, 0x3b);//dual read cmd
|
||||
// _WDWORD(0x51000104, 0x3b);//dual read cmd
|
||||
|
||||
|
||||
_WDWORD(0x51000008, 1); //enable spi
|
||||
}
|
||||
|
||||
FUNC void Initialization(void)
|
||||
{
|
||||
InitGpio();
|
||||
InitFlash();
|
||||
InitXIP();
|
||||
SP = _RDWORD(0x11001000);
|
||||
PC = _RDWORD(0x11001004);
|
||||
_WDWORD(0x4000013C, 0x11001001);
|
||||
}
|
||||
LOAD %L INCREMENTAL
|
||||
Initialization();
|
||||
@@ -0,0 +1,131 @@
|
||||
;;;
|
||||
;;;
|
||||
|
||||
|
||||
;;LOAD 0x10000000
|
||||
;;{
|
||||
;;EXE 0x10000000
|
||||
;;{
|
||||
;;startup_xinc.o (RESET, +FIRST)
|
||||
;;* (+RO)
|
||||
|
||||
;;}
|
||||
;;; L2CAP_CODE +0
|
||||
;;; {
|
||||
;;; * (l2cap_code)
|
||||
;;; }
|
||||
;;; GATT_CODE +0
|
||||
;;; {
|
||||
;;; * (gatt_code)
|
||||
;;; }
|
||||
;;; GAP_CODE +0
|
||||
;;; {
|
||||
;;; * (gap_code)
|
||||
;;; }
|
||||
;;; LLC_CODE +0
|
||||
;;; {
|
||||
;;; * (llc_code)
|
||||
;;; }
|
||||
;;; LLD_CODE +0
|
||||
;;; {
|
||||
;;; * (lld_code)
|
||||
;;; }
|
||||
;;;
|
||||
;;; LLM_CODE +0
|
||||
;;; {
|
||||
;;; * (llm_code)
|
||||
;;; }
|
||||
;;; ECC_CODE +0
|
||||
;;; {
|
||||
;;; * (ecc_code)
|
||||
;;; }
|
||||
;;RW +0000
|
||||
;;{
|
||||
;;* (+RW,+ZI)
|
||||
;;}
|
||||
|
||||
;;; KE_CODE +0
|
||||
;;; {
|
||||
;;; *(ke_code)
|
||||
;;;
|
||||
;;; }
|
||||
|
||||
;;; AES_CODE +0
|
||||
;;; {
|
||||
;;; * (aes_code)
|
||||
;;; }
|
||||
;;; CO_CODE +0
|
||||
;;; {
|
||||
;;; * (co_code)
|
||||
;;; }
|
||||
;;;
|
||||
;;; NVDS_CODE +0
|
||||
;;; {
|
||||
;;; * (nvds_code)
|
||||
;;; }
|
||||
;;;
|
||||
;;; SCH_CODE +0
|
||||
;;; {
|
||||
;;; * (sch_code)
|
||||
;;; }
|
||||
;;; LL_CO_CODE +0
|
||||
;;; {
|
||||
;;; * (ll_co_code)
|
||||
;;; }
|
||||
|
||||
;;ScatterAssert(ImageLength(RW) < 1024 * 28)
|
||||
;;;
|
||||
;;;
|
||||
;;; ScatterAssert(ImageLength(KE_CODE) < 100)
|
||||
;;; ScatterAssert(ImageLength(ECC_CODE) < 0x100)
|
||||
;;; ScatterAssert(ImageLength(AES_CODE) < 0x10)
|
||||
;;; ScatterAssert(ImageLength(CO_CODE) < 0x100)
|
||||
;;; ScatterAssert(ImageLength(NVDS_CODE) < 0x100)
|
||||
;;; ScatterAssert(ImageLength(GAP_CODE) < 0x100)
|
||||
;;; ScatterAssert(ImageLength(GATT_CODE) < 0x100)
|
||||
;;; ScatterAssert(ImageLength(L2CAP_CODE) < 0x100)
|
||||
;;; ScatterAssert(ImageLength(SCH_CODE) < 0x100)
|
||||
;;; ScatterAssert(ImageLength(LL_CO_CODE) < 0x100)
|
||||
;;; ScatterAssert(ImageLength(LLC_CODE) < 0x110)
|
||||
;;; ScatterAssert(ImageLength(LLD_CODE) < 0x1210)
|
||||
;;; ScatterAssert(ImageLength(LLM_CODE) < 0x910)
|
||||
;;; ScatterAssert(ImageLength(EXE)+ ImageLength(RW) + ImageLength(KE_CODE) + ImageLength(ECC_CODE) + ImageLength(AES_CODE)
|
||||
;;; + ImageLength(CO_CODE)+ ImageLength(NVDS_CODE)+ ImageLength(GAP_CODE)+ ImageLength(GATT_CODE)
|
||||
;;; + ImageLength(L2CAP_CODE)+ ImageLength(SCH_CODE)+ ImageLength(LL_CO_CODE)+ ImageLength(LLC_CODE)
|
||||
;;; + ImageLength(LLD_CODE)+ ImageLength(LLM_CODE)< 96*1024)
|
||||
;;}
|
||||
|
||||
LOAD 0x10000000
|
||||
{
|
||||
EXE 0x10000000
|
||||
{
|
||||
startup_xinc.o (RESET, +FIRST)
|
||||
* (+RO)
|
||||
|
||||
}
|
||||
|
||||
RW +0000
|
||||
{
|
||||
* (+RW,+ZI)
|
||||
}
|
||||
|
||||
ScatterAssert(ImageLength(RW) < 1024 * 28)
|
||||
}
|
||||
|
||||
|
||||
|
||||
;LOAD 0x11001000
|
||||
;{
|
||||
;EXE 0x11001000
|
||||
;{
|
||||
;startup_xinc.o (RESET, +FIRST)
|
||||
;* (+RO)
|
||||
|
||||
;}
|
||||
|
||||
;RW 0x10002000
|
||||
;{
|
||||
;* (+RW,+ZI)
|
||||
;*(ram_code)
|
||||
;}
|
||||
;}
|
||||
@@ -0,0 +1,131 @@
|
||||
;;;
|
||||
;;;
|
||||
|
||||
|
||||
;;LOAD 0x10000000
|
||||
;;{
|
||||
;;EXE 0x10000000
|
||||
;;{
|
||||
;;startup_xinc.o (RESET, +FIRST)
|
||||
;;* (+RO)
|
||||
|
||||
;;}
|
||||
;;; L2CAP_CODE +0
|
||||
;;; {
|
||||
;;; * (l2cap_code)
|
||||
;;; }
|
||||
;;; GATT_CODE +0
|
||||
;;; {
|
||||
;;; * (gatt_code)
|
||||
;;; }
|
||||
;;; GAP_CODE +0
|
||||
;;; {
|
||||
;;; * (gap_code)
|
||||
;;; }
|
||||
;;; LLC_CODE +0
|
||||
;;; {
|
||||
;;; * (llc_code)
|
||||
;;; }
|
||||
;;; LLD_CODE +0
|
||||
;;; {
|
||||
;;; * (lld_code)
|
||||
;;; }
|
||||
;;;
|
||||
;;; LLM_CODE +0
|
||||
;;; {
|
||||
;;; * (llm_code)
|
||||
;;; }
|
||||
;;; ECC_CODE +0
|
||||
;;; {
|
||||
;;; * (ecc_code)
|
||||
;;; }
|
||||
;;RW +0000
|
||||
;;{
|
||||
;;* (+RW,+ZI)
|
||||
;;}
|
||||
|
||||
;;; KE_CODE +0
|
||||
;;; {
|
||||
;;; *(ke_code)
|
||||
;;;
|
||||
;;; }
|
||||
|
||||
;;; AES_CODE +0
|
||||
;;; {
|
||||
;;; * (aes_code)
|
||||
;;; }
|
||||
;;; CO_CODE +0
|
||||
;;; {
|
||||
;;; * (co_code)
|
||||
;;; }
|
||||
;;;
|
||||
;;; NVDS_CODE +0
|
||||
;;; {
|
||||
;;; * (nvds_code)
|
||||
;;; }
|
||||
;;;
|
||||
;;; SCH_CODE +0
|
||||
;;; {
|
||||
;;; * (sch_code)
|
||||
;;; }
|
||||
;;; LL_CO_CODE +0
|
||||
;;; {
|
||||
;;; * (ll_co_code)
|
||||
;;; }
|
||||
|
||||
;;ScatterAssert(ImageLength(RW) < 1024 * 28)
|
||||
;;;
|
||||
;;;
|
||||
;;; ScatterAssert(ImageLength(KE_CODE) < 100)
|
||||
;;; ScatterAssert(ImageLength(ECC_CODE) < 0x100)
|
||||
;;; ScatterAssert(ImageLength(AES_CODE) < 0x10)
|
||||
;;; ScatterAssert(ImageLength(CO_CODE) < 0x100)
|
||||
;;; ScatterAssert(ImageLength(NVDS_CODE) < 0x100)
|
||||
;;; ScatterAssert(ImageLength(GAP_CODE) < 0x100)
|
||||
;;; ScatterAssert(ImageLength(GATT_CODE) < 0x100)
|
||||
;;; ScatterAssert(ImageLength(L2CAP_CODE) < 0x100)
|
||||
;;; ScatterAssert(ImageLength(SCH_CODE) < 0x100)
|
||||
;;; ScatterAssert(ImageLength(LL_CO_CODE) < 0x100)
|
||||
;;; ScatterAssert(ImageLength(LLC_CODE) < 0x110)
|
||||
;;; ScatterAssert(ImageLength(LLD_CODE) < 0x1210)
|
||||
;;; ScatterAssert(ImageLength(LLM_CODE) < 0x910)
|
||||
;;; ScatterAssert(ImageLength(EXE)+ ImageLength(RW) + ImageLength(KE_CODE) + ImageLength(ECC_CODE) + ImageLength(AES_CODE)
|
||||
;;; + ImageLength(CO_CODE)+ ImageLength(NVDS_CODE)+ ImageLength(GAP_CODE)+ ImageLength(GATT_CODE)
|
||||
;;; + ImageLength(L2CAP_CODE)+ ImageLength(SCH_CODE)+ ImageLength(LL_CO_CODE)+ ImageLength(LLC_CODE)
|
||||
;;; + ImageLength(LLD_CODE)+ ImageLength(LLM_CODE)< 96*1024)
|
||||
;;}
|
||||
|
||||
;LOAD 0x10000000
|
||||
;{
|
||||
;EXE 0x10000000
|
||||
;{
|
||||
;startup_xinc.o (RESET, +FIRST)
|
||||
;* (+RO)
|
||||
|
||||
;}
|
||||
|
||||
;RW +0000
|
||||
;{
|
||||
;* (+RW,+ZI)
|
||||
;}
|
||||
|
||||
;ScatterAssert(ImageLength(RW) < 1024 * 28)
|
||||
;}
|
||||
|
||||
|
||||
|
||||
LOAD 0x11001000
|
||||
{
|
||||
EXE 0x11001000
|
||||
{
|
||||
startup_xinc.o (RESET, +FIRST)
|
||||
* (+RO)
|
||||
|
||||
}
|
||||
|
||||
RW 0x10002000
|
||||
{
|
||||
* (+RW,+ZI)
|
||||
*(ram_code)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
Xincboot_tool.exe 0_ram.bin 1_ram_download.bin 0 0 0 0 1
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
.\Tools\xinchip_xip_tool.exe .\Output\0_ram.bin .\Output\xip_dual .\Output\periph_Demo_xip_download.bin
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env python
|
||||
#-*- coding:UTF-8 -*-
|
||||
import socket
|
||||
from select import select
|
||||
import time
|
||||
import os
|
||||
import sys
|
||||
import threading
|
||||
import json
|
||||
import struct
|
||||
import binascii
|
||||
import time
|
||||
import re
|
||||
import fileinput
|
||||
|
||||
|
||||
|
||||
def dump_addr(addr):
|
||||
file_asm = "./Xinc_ble_sdk_asm"
|
||||
cur_func = ""
|
||||
with open(file_asm, 'r') as fd:
|
||||
for line in fd:
|
||||
if re.match(r" \w+", line) != None:
|
||||
cur_func = line.strip()
|
||||
#
|
||||
if re.search("^ 0x", line) != None and re.search(addr, line) != None:
|
||||
print(addr, cur_func)
|
||||
break
|
||||
fd.close()
|
||||
|
||||
if __name__ == "__main__":
|
||||
file_in = "./dump.txt"
|
||||
|
||||
for line in fileinput.input(file_in):
|
||||
# 处理 PC 指针信息
|
||||
if re.search("PC = ", line) != None:
|
||||
pc_addr = line.split("PC = ")[1].split(",")[0]
|
||||
#print(hex(int(pc_addr, 16)))
|
||||
dump_addr(hex(int(pc_addr, 16)))
|
||||
|
||||
# 处理 栈信息
|
||||
if re.search("^[0-9]",line) != None:
|
||||
#print(line)
|
||||
stack = line.split('=')[1].replace('\n', '').split(' ')
|
||||
for addr in stack:
|
||||
if addr == ' ' or re.search("^1", addr) == None:
|
||||
continue
|
||||
#print(addr, hex(int(addr,16)-1))
|
||||
dump_addr(hex(int(addr,16)-1))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,728 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_optx.xsd">
|
||||
|
||||
<SchemaVersion>1.0</SchemaVersion>
|
||||
|
||||
<Header>### uVision Project, (C) Keil Software</Header>
|
||||
|
||||
<Extensions>
|
||||
<cExt>*.c</cExt>
|
||||
<aExt>*.s*; *.src; *.a*</aExt>
|
||||
<oExt>*.obj; *.o</oExt>
|
||||
<lExt>*.lib</lExt>
|
||||
<tExt>*.txt; *.h; *.inc</tExt>
|
||||
<pExt>*.plm</pExt>
|
||||
<CppX>*.cpp</CppX>
|
||||
<nMigrate>0</nMigrate>
|
||||
</Extensions>
|
||||
|
||||
<DaveTm>
|
||||
<dwLowDateTime>0</dwLowDateTime>
|
||||
<dwHighDateTime>0</dwHighDateTime>
|
||||
</DaveTm>
|
||||
|
||||
<Target>
|
||||
<TargetName>periph_demo</TargetName>
|
||||
<ToolsetNumber>0x4</ToolsetNumber>
|
||||
<ToolsetName>ARM-ADS</ToolsetName>
|
||||
<TargetOption>
|
||||
<CLKADS>12000000</CLKADS>
|
||||
<OPTTT>
|
||||
<gFlags>1</gFlags>
|
||||
<BeepAtEnd>1</BeepAtEnd>
|
||||
<RunSim>0</RunSim>
|
||||
<RunTarget>1</RunTarget>
|
||||
<RunAbUc>0</RunAbUc>
|
||||
</OPTTT>
|
||||
<OPTHX>
|
||||
<HexSelection>1</HexSelection>
|
||||
<FlashByte>65535</FlashByte>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
</OPTHX>
|
||||
<OPTLEX>
|
||||
<PageWidth>79</PageWidth>
|
||||
<PageLength>66</PageLength>
|
||||
<TabStop>8</TabStop>
|
||||
<ListingPath>.\Listings\</ListingPath>
|
||||
</OPTLEX>
|
||||
<ListingPage>
|
||||
<CreateCListing>1</CreateCListing>
|
||||
<CreateAListing>1</CreateAListing>
|
||||
<CreateLListing>1</CreateLListing>
|
||||
<CreateIListing>0</CreateIListing>
|
||||
<AsmCond>1</AsmCond>
|
||||
<AsmSymb>1</AsmSymb>
|
||||
<AsmXref>0</AsmXref>
|
||||
<CCond>1</CCond>
|
||||
<CCode>0</CCode>
|
||||
<CListInc>0</CListInc>
|
||||
<CSymb>0</CSymb>
|
||||
<LinkerCodeListing>0</LinkerCodeListing>
|
||||
</ListingPage>
|
||||
<OPTXL>
|
||||
<LMap>1</LMap>
|
||||
<LComments>1</LComments>
|
||||
<LGenerateSymbols>1</LGenerateSymbols>
|
||||
<LLibSym>1</LLibSym>
|
||||
<LLines>1</LLines>
|
||||
<LLocSym>1</LLocSym>
|
||||
<LPubSym>1</LPubSym>
|
||||
<LXref>0</LXref>
|
||||
<LExpSel>0</LExpSel>
|
||||
</OPTXL>
|
||||
<OPTFL>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<IsCurrentTarget>1</IsCurrentTarget>
|
||||
</OPTFL>
|
||||
<CpuCode>7</CpuCode>
|
||||
<DebugOpt>
|
||||
<uSim>0</uSim>
|
||||
<uTrg>1</uTrg>
|
||||
<sLdApp>1</sLdApp>
|
||||
<sGomain>1</sGomain>
|
||||
<sRbreak>1</sRbreak>
|
||||
<sRwatch>1</sRwatch>
|
||||
<sRmem>1</sRmem>
|
||||
<sRfunc>1</sRfunc>
|
||||
<sRbox>1</sRbox>
|
||||
<tLdApp>1</tLdApp>
|
||||
<tGomain>1</tGomain>
|
||||
<tRbreak>1</tRbreak>
|
||||
<tRwatch>1</tRwatch>
|
||||
<tRmem>1</tRmem>
|
||||
<tRfunc>0</tRfunc>
|
||||
<tRbox>1</tRbox>
|
||||
<tRtrace>1</tRtrace>
|
||||
<sRSysVw>1</sRSysVw>
|
||||
<tRSysVw>1</tRSysVw>
|
||||
<sRunDeb>0</sRunDeb>
|
||||
<sLrtime>0</sLrtime>
|
||||
<bEvRecOn>1</bEvRecOn>
|
||||
<bSchkAxf>0</bSchkAxf>
|
||||
<bTchkAxf>0</bTchkAxf>
|
||||
<nTsel>4</nTsel>
|
||||
<sDll></sDll>
|
||||
<sDllPa></sDllPa>
|
||||
<sDlgDll></sDlgDll>
|
||||
<sDlgPa></sDlgPa>
|
||||
<sIfile></sIfile>
|
||||
<tDll></tDll>
|
||||
<tDllPa></tDllPa>
|
||||
<tDlgDll></tDlgDll>
|
||||
<tDlgPa></tDlgPa>
|
||||
<tIfile>.\Linker\Initialization.ini</tIfile>
|
||||
<pMon>Segger\JL2CM3.dll</pMon>
|
||||
</DebugOpt>
|
||||
<TargetDriverDllRegistry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>ARMRTXEVENTFLAGS</Key>
|
||||
<Name>-L70 -Z18 -C0 -M0 -T1</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>DLGTARM</Key>
|
||||
<Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>ARMDBGFLAGS</Key>
|
||||
<Name></Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>JL2CM3</Key>
|
||||
<Name>-U-O206 -O206 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO65554 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO7 -FD10000000 -FC1000 -FN0</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>DLGUARM</Key>
|
||||
<Name>€裴 ?</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>UL2CM3</Key>
|
||||
<Name>-U -O206 -S0 -C0 -P00 -TO65554 -TC10000000 -TT10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD10000000 -FC1000 -FN0</Name>
|
||||
</SetRegEntry>
|
||||
</TargetDriverDllRegistry>
|
||||
<Breakpoint/>
|
||||
<WatchWindow1>
|
||||
<Ww>
|
||||
<count>0</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>CurPageNum</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>1</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>CurStartPsr</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>2</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>NextPageNum</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>3</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>buff_idx</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>4</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>pre_len</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>5</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>pre_addr</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>6</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>buff</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>7</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>sta</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>8</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>a</ItemText>
|
||||
</Ww>
|
||||
</WatchWindow1>
|
||||
<MemoryWindow1>
|
||||
<Mm>
|
||||
<WinNumber>1</WinNumber>
|
||||
<SubType>0</SubType>
|
||||
<ItemText>0x50001018</ItemText>
|
||||
<AccSizeX>0</AccSizeX>
|
||||
</Mm>
|
||||
</MemoryWindow1>
|
||||
<Tracepoint>
|
||||
<THDelay>0</THDelay>
|
||||
</Tracepoint>
|
||||
<DebugFlag>
|
||||
<trace>0</trace>
|
||||
<periodic>0</periodic>
|
||||
<aLwin>1</aLwin>
|
||||
<aCover>0</aCover>
|
||||
<aSer1>0</aSer1>
|
||||
<aSer2>0</aSer2>
|
||||
<aPa>0</aPa>
|
||||
<viewmode>1</viewmode>
|
||||
<vrSel>0</vrSel>
|
||||
<aSym>0</aSym>
|
||||
<aTbox>0</aTbox>
|
||||
<AscS1>0</AscS1>
|
||||
<AscS2>0</AscS2>
|
||||
<AscS3>0</AscS3>
|
||||
<aSer3>0</aSer3>
|
||||
<eProf>0</eProf>
|
||||
<aLa>0</aLa>
|
||||
<aPa1>0</aPa1>
|
||||
<AscS4>0</AscS4>
|
||||
<aSer4>0</aSer4>
|
||||
<StkLoc>0</StkLoc>
|
||||
<TrcWin>0</TrcWin>
|
||||
<newCpu>0</newCpu>
|
||||
<uProt>0</uProt>
|
||||
</DebugFlag>
|
||||
<LintExecutable></LintExecutable>
|
||||
<LintConfigFile></LintConfigFile>
|
||||
<bLintAuto>0</bLintAuto>
|
||||
<bAutoGenD>0</bAutoGenD>
|
||||
<LntExFlags>0</LntExFlags>
|
||||
<pMisraName></pMisraName>
|
||||
<pszMrule></pszMrule>
|
||||
<pSingCmds></pSingCmds>
|
||||
<pMultCmds></pMultCmds>
|
||||
<pMisraNamep></pMisraNamep>
|
||||
<pszMrulep></pszMrulep>
|
||||
<pSingCmdsp></pSingCmdsp>
|
||||
<pMultCmdsp></pMultCmdsp>
|
||||
</TargetOption>
|
||||
</Target>
|
||||
|
||||
<Target>
|
||||
<TargetName>periph_xip_demo</TargetName>
|
||||
<ToolsetNumber>0x4</ToolsetNumber>
|
||||
<ToolsetName>ARM-ADS</ToolsetName>
|
||||
<TargetOption>
|
||||
<CLKADS>12000000</CLKADS>
|
||||
<OPTTT>
|
||||
<gFlags>1</gFlags>
|
||||
<BeepAtEnd>1</BeepAtEnd>
|
||||
<RunSim>0</RunSim>
|
||||
<RunTarget>1</RunTarget>
|
||||
<RunAbUc>0</RunAbUc>
|
||||
</OPTTT>
|
||||
<OPTHX>
|
||||
<HexSelection>1</HexSelection>
|
||||
<FlashByte>65535</FlashByte>
|
||||
<HexRangeLowAddress>0</HexRangeLowAddress>
|
||||
<HexRangeHighAddress>0</HexRangeHighAddress>
|
||||
<HexOffset>0</HexOffset>
|
||||
</OPTHX>
|
||||
<OPTLEX>
|
||||
<PageWidth>79</PageWidth>
|
||||
<PageLength>66</PageLength>
|
||||
<TabStop>8</TabStop>
|
||||
<ListingPath>.\Listings\</ListingPath>
|
||||
</OPTLEX>
|
||||
<ListingPage>
|
||||
<CreateCListing>1</CreateCListing>
|
||||
<CreateAListing>1</CreateAListing>
|
||||
<CreateLListing>1</CreateLListing>
|
||||
<CreateIListing>0</CreateIListing>
|
||||
<AsmCond>1</AsmCond>
|
||||
<AsmSymb>1</AsmSymb>
|
||||
<AsmXref>0</AsmXref>
|
||||
<CCond>1</CCond>
|
||||
<CCode>0</CCode>
|
||||
<CListInc>0</CListInc>
|
||||
<CSymb>0</CSymb>
|
||||
<LinkerCodeListing>0</LinkerCodeListing>
|
||||
</ListingPage>
|
||||
<OPTXL>
|
||||
<LMap>1</LMap>
|
||||
<LComments>1</LComments>
|
||||
<LGenerateSymbols>1</LGenerateSymbols>
|
||||
<LLibSym>1</LLibSym>
|
||||
<LLines>1</LLines>
|
||||
<LLocSym>1</LLocSym>
|
||||
<LPubSym>1</LPubSym>
|
||||
<LXref>0</LXref>
|
||||
<LExpSel>0</LExpSel>
|
||||
</OPTXL>
|
||||
<OPTFL>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<IsCurrentTarget>0</IsCurrentTarget>
|
||||
</OPTFL>
|
||||
<CpuCode>7</CpuCode>
|
||||
<DebugOpt>
|
||||
<uSim>0</uSim>
|
||||
<uTrg>1</uTrg>
|
||||
<sLdApp>1</sLdApp>
|
||||
<sGomain>1</sGomain>
|
||||
<sRbreak>1</sRbreak>
|
||||
<sRwatch>1</sRwatch>
|
||||
<sRmem>1</sRmem>
|
||||
<sRfunc>1</sRfunc>
|
||||
<sRbox>1</sRbox>
|
||||
<tLdApp>1</tLdApp>
|
||||
<tGomain>1</tGomain>
|
||||
<tRbreak>1</tRbreak>
|
||||
<tRwatch>1</tRwatch>
|
||||
<tRmem>1</tRmem>
|
||||
<tRfunc>0</tRfunc>
|
||||
<tRbox>1</tRbox>
|
||||
<tRtrace>1</tRtrace>
|
||||
<sRSysVw>1</sRSysVw>
|
||||
<tRSysVw>1</tRSysVw>
|
||||
<sRunDeb>0</sRunDeb>
|
||||
<sLrtime>0</sLrtime>
|
||||
<bEvRecOn>1</bEvRecOn>
|
||||
<bSchkAxf>0</bSchkAxf>
|
||||
<bTchkAxf>0</bTchkAxf>
|
||||
<nTsel>4</nTsel>
|
||||
<sDll></sDll>
|
||||
<sDllPa></sDllPa>
|
||||
<sDlgDll></sDlgDll>
|
||||
<sDlgPa></sDlgPa>
|
||||
<sIfile></sIfile>
|
||||
<tDll></tDll>
|
||||
<tDllPa></tDllPa>
|
||||
<tDlgDll></tDlgDll>
|
||||
<tDlgPa></tDlgPa>
|
||||
<tIfile>.\Linker\Initialization.ini</tIfile>
|
||||
<pMon>Segger\JL2CM3.dll</pMon>
|
||||
</DebugOpt>
|
||||
<TargetDriverDllRegistry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>ARMRTXEVENTFLAGS</Key>
|
||||
<Name>-L70 -Z18 -C0 -M0 -T1</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>DLGTARM</Key>
|
||||
<Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>ARMDBGFLAGS</Key>
|
||||
<Name></Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>JL2CM3</Key>
|
||||
<Name>-U4294967295 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO7 -FD10000000 -FC4000 -FN0</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>UL2CM3</Key>
|
||||
<Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</Name>
|
||||
</SetRegEntry>
|
||||
</TargetDriverDllRegistry>
|
||||
<Breakpoint/>
|
||||
<Tracepoint>
|
||||
<THDelay>0</THDelay>
|
||||
</Tracepoint>
|
||||
<DebugFlag>
|
||||
<trace>0</trace>
|
||||
<periodic>0</periodic>
|
||||
<aLwin>0</aLwin>
|
||||
<aCover>0</aCover>
|
||||
<aSer1>0</aSer1>
|
||||
<aSer2>0</aSer2>
|
||||
<aPa>0</aPa>
|
||||
<viewmode>1</viewmode>
|
||||
<vrSel>0</vrSel>
|
||||
<aSym>0</aSym>
|
||||
<aTbox>0</aTbox>
|
||||
<AscS1>0</AscS1>
|
||||
<AscS2>0</AscS2>
|
||||
<AscS3>0</AscS3>
|
||||
<aSer3>0</aSer3>
|
||||
<eProf>0</eProf>
|
||||
<aLa>0</aLa>
|
||||
<aPa1>0</aPa1>
|
||||
<AscS4>0</AscS4>
|
||||
<aSer4>0</aSer4>
|
||||
<StkLoc>0</StkLoc>
|
||||
<TrcWin>0</TrcWin>
|
||||
<newCpu>0</newCpu>
|
||||
<uProt>0</uProt>
|
||||
</DebugFlag>
|
||||
<LintExecutable></LintExecutable>
|
||||
<LintConfigFile></LintConfigFile>
|
||||
<bLintAuto>0</bLintAuto>
|
||||
<bAutoGenD>0</bAutoGenD>
|
||||
<LntExFlags>0</LntExFlags>
|
||||
<pMisraName></pMisraName>
|
||||
<pszMrule></pszMrule>
|
||||
<pSingCmds></pSingCmds>
|
||||
<pMultCmds></pMultCmds>
|
||||
<pMisraNamep></pMisraNamep>
|
||||
<pszMrulep></pszMrulep>
|
||||
<pSingCmdsp></pSingCmdsp>
|
||||
<pMultCmdsp></pMultCmdsp>
|
||||
</TargetOption>
|
||||
</Target>
|
||||
|
||||
<Group>
|
||||
<GroupName>Startup</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>1</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\CMSIS\core_cm0.h</PathWithFileName>
|
||||
<FilenameWithoutPath>core_cm0.h</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>2</FileNumber>
|
||||
<FileType>2</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\app\Startup\xc60xx\startup_xinc.s</PathWithFileName>
|
||||
<FilenameWithoutPath>startup_xinc.s</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>3</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\Startup\system_xinc.c</PathWithFileName>
|
||||
<FilenameWithoutPath>system_xinc.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>4</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\Startup\system_it_xinc.c</PathWithFileName>
|
||||
<FilenameWithoutPath>system_it_xinc.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>Application</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>5</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\app\src\main.c</PathWithFileName>
|
||||
<FilenameWithoutPath>main.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>bsp</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>6</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\app\src\adc.c</PathWithFileName>
|
||||
<FilenameWithoutPath>adc.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>Drivers</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>7</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\ringbuffer.c</PathWithFileName>
|
||||
<FilenameWithoutPath>ringbuffer.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>8</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_adc.c</PathWithFileName>
|
||||
<FilenameWithoutPath>xc_drv_adc.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>9</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_aotimer.c</PathWithFileName>
|
||||
<FilenameWithoutPath>xc_drv_aotimer.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>10</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_calib.c</PathWithFileName>
|
||||
<FilenameWithoutPath>xc_drv_calib.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>11</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_clock.c</PathWithFileName>
|
||||
<FilenameWithoutPath>xc_drv_clock.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>12</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_fmc_spi.c</PathWithFileName>
|
||||
<FilenameWithoutPath>xc_drv_fmc_spi.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>13</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_gpio.c</PathWithFileName>
|
||||
<FilenameWithoutPath>xc_drv_gpio.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>14</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_i2c.c</PathWithFileName>
|
||||
<FilenameWithoutPath>xc_drv_i2c.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>15</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwm.c</PathWithFileName>
|
||||
<FilenameWithoutPath>xc_drv_pwm.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>16</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_pwr.c</PathWithFileName>
|
||||
<FilenameWithoutPath>xc_drv_pwr.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>17</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_rtc.c</PathWithFileName>
|
||||
<FilenameWithoutPath>xc_drv_rtc.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>18</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_spi.c</PathWithFileName>
|
||||
<FilenameWithoutPath>xc_drv_spi.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>19</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_sw_i2c.c</PathWithFileName>
|
||||
<FilenameWithoutPath>xc_drv_sw_i2c.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>20</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_systick.c</PathWithFileName>
|
||||
<FilenameWithoutPath>xc_drv_systick.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>21</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_timer.c</PathWithFileName>
|
||||
<FilenameWithoutPath>xc_drv_timer.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>22</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_uart.c</PathWithFileName>
|
||||
<FilenameWithoutPath>xc_drv_uart.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>23</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\..\..\..\..\component\xc6xx_drivers\Drivers\xc_driver\xc_drv_wdt.c</PathWithFileName>
|
||||
<FilenameWithoutPath>xc_drv_wdt.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
</ProjectOpt>
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user