第三次上传
已实现功能: 1.波形输出 2.定时器 3.串口调试与通信 尚未完成:正确时间计算,平滑的梯形方波输出
This commit is contained in:
parent
8a454bcd9e
commit
77e6088821
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"files.associations": {
|
||||||
|
"ens1_gpio.h": "c",
|
||||||
|
"ens1_boost.h": "c"
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -152,6 +152,22 @@
|
||||||
<Bp>
|
<Bp>
|
||||||
<Number>0</Number>
|
<Number>0</Number>
|
||||||
<Type>0</Type>
|
<Type>0</Type>
|
||||||
|
<LineNumber>36</LineNumber>
|
||||||
|
<EnabledFlag>1</EnabledFlag>
|
||||||
|
<Address>0</Address>
|
||||||
|
<ByteObject>0</ByteObject>
|
||||||
|
<HtxType>0</HtxType>
|
||||||
|
<ManyObjects>0</ManyObjects>
|
||||||
|
<SizeOfObject>0</SizeOfObject>
|
||||||
|
<BreakByAccess>0</BreakByAccess>
|
||||||
|
<BreakIfRCount>0</BreakIfRCount>
|
||||||
|
<Filename>.\USER\mian.c</Filename>
|
||||||
|
<ExecCommand></ExecCommand>
|
||||||
|
<Expression></Expression>
|
||||||
|
</Bp>
|
||||||
|
<Bp>
|
||||||
|
<Number>1</Number>
|
||||||
|
<Type>0</Type>
|
||||||
<LineNumber>283</LineNumber>
|
<LineNumber>283</LineNumber>
|
||||||
<EnabledFlag>1</EnabledFlag>
|
<EnabledFlag>1</EnabledFlag>
|
||||||
<Address>268441304</Address>
|
<Address>268441304</Address>
|
||||||
|
|
@ -166,7 +182,7 @@
|
||||||
<Expression>\\ENS001_BASIC_PRJ\FWLIB/source/ENS1_UART.c\283</Expression>
|
<Expression>\\ENS001_BASIC_PRJ\FWLIB/source/ENS1_UART.c\283</Expression>
|
||||||
</Bp>
|
</Bp>
|
||||||
<Bp>
|
<Bp>
|
||||||
<Number>1</Number>
|
<Number>2</Number>
|
||||||
<Type>0</Type>
|
<Type>0</Type>
|
||||||
<LineNumber>36</LineNumber>
|
<LineNumber>36</LineNumber>
|
||||||
<EnabledFlag>1</EnabledFlag>
|
<EnabledFlag>1</EnabledFlag>
|
||||||
|
|
@ -289,7 +305,7 @@
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>2</FileNumber>
|
<FileNumber>2</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>1</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>.\FWLIB\source\ENS1_UART.c</PathWithFileName>
|
<PathWithFileName>.\FWLIB\source\ENS1_UART.c</PathWithFileName>
|
||||||
|
|
@ -349,7 +365,7 @@
|
||||||
<GroupNumber>2</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>7</FileNumber>
|
<FileNumber>7</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>1</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>.\FWLIB\source\ENS1_TIMER.c</PathWithFileName>
|
<PathWithFileName>.\FWLIB\source\ENS1_TIMER.c</PathWithFileName>
|
||||||
|
|
|
||||||
|
|
@ -19,13 +19,14 @@ History:
|
||||||
1.V1.0
|
1.V1.0
|
||||||
Date:
|
Date:
|
||||||
Author:
|
Author:
|
||||||
Modification: 놓경
|
Modification: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
*/
|
*/
|
||||||
#ifndef ENS1_GPIO_H
|
#ifndef ENS1_GPIO_H
|
||||||
#define ENS1_GPIO_H
|
#define ENS1_GPIO_H
|
||||||
#include "my_header.h"
|
#include "my_header.h"
|
||||||
#include "CMSDK_CM0.h"
|
#include "CMSDK_CM0.h"
|
||||||
extern uint8_t GPIO_AltFunction(GPIO_NUM GPIO_X , GPIO_AltFuncSel GPIO_AltFuncSelx);
|
extern uint8_t GPIO_AltFunction(GPIO_NUM GPIO_X , GPIO_AltFuncSel GPIO_AltFuncSelx);
|
||||||
|
extern int8_t GPIO_IO_Init(GPIO_NUM GPIO_X, I_O_SELECT INorOUT ,GPIOOType_TypeDef GPIO_OType,GPIO_PUPD_TypeDef GPIO_PUPD,OUTPUT_SPEED_TypeDef OUTPUT_SPEED,OUTPUT_PDRV_TypeDef OUTPUT_PDRV,FunctionalState ENABLEorNOT);
|
||||||
extern int8_t GPIO_IO_Select(GPIO_NUM GPIO_X, I_O_SELECT INorOUT ,FunctionalState ENABLEorNOT);
|
extern int8_t GPIO_IO_Select(GPIO_NUM GPIO_X, I_O_SELECT INorOUT ,FunctionalState ENABLEorNOT);
|
||||||
extern uint8_t GPIO_GetInputValue(GPIO_NUM GPIO_X);
|
extern uint8_t GPIO_GetInputValue(GPIO_NUM GPIO_X);
|
||||||
extern uint8_t GPIO_GetOutputValue(GPIO_NUM GPIO_X);
|
extern uint8_t GPIO_GetOutputValue(GPIO_NUM GPIO_X);
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ History:
|
||||||
1.V1.0
|
1.V1.0
|
||||||
Date:
|
Date:
|
||||||
Author:
|
Author:
|
||||||
Modification: 初版
|
Modification: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
*/
|
*/
|
||||||
#ifndef _ENS1_UART_H_
|
#ifndef _ENS1_UART_H_
|
||||||
#define _ENS1_UART_H_
|
#define _ENS1_UART_H_
|
||||||
|
|
@ -37,7 +37,38 @@ Modification:
|
||||||
#define InterruptEnable __enable_irq
|
#define InterruptEnable __enable_irq
|
||||||
typedef enum uartRcvfifoTrigger{byte_1=0 , bytes_4=1,bytes_8=2,bytes_14=3}uartRcvTrigger;
|
typedef enum uartRcvfifoTrigger{byte_1=0 , bytes_4=1,bytes_8=2,bytes_14=3}uartRcvTrigger;
|
||||||
typedef enum {OverSamp_16 = 0,OverSamp_13}UART_OverSamp;
|
typedef enum {OverSamp_16 = 0,OverSamp_13}UART_OverSamp;
|
||||||
/*uart参数设置结构体*/
|
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
StopLen_1 = 0,
|
||||||
|
StopLen_Other
|
||||||
|
}UART_StopLen;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
WordLen_5,
|
||||||
|
WordLen_6,
|
||||||
|
WordLen_7,
|
||||||
|
WordLen_8
|
||||||
|
}UART_WordLen;
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
Stick_RESET = 0,
|
||||||
|
Stick_SET
|
||||||
|
}UART_Stick_EN;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
Odd_SET = 0,
|
||||||
|
Even_SET
|
||||||
|
}UART_Even_EN;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
Parity_RESET = 0,
|
||||||
|
Parity_SET
|
||||||
|
}UART_Parity_EN;
|
||||||
|
|
||||||
|
/*uart<72><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ýṹ<C3BD><E1B9B9>*/
|
||||||
|
|
||||||
typedef struct uart_fifo{
|
typedef struct uart_fifo{
|
||||||
uartRcvTrigger level;
|
uartRcvTrigger level;
|
||||||
|
|
@ -48,8 +79,13 @@ typedef struct uart_fifo{
|
||||||
typedef struct uart_para{
|
typedef struct uart_para{
|
||||||
uint8_t UART_OverSampMode;
|
uint8_t UART_OverSampMode;
|
||||||
uint32_t UART_BaudRate;
|
uint32_t UART_BaudRate;
|
||||||
uint8_t UART_HardwareFlowControl; //硬件流控是否开启
|
uint8_t UART_HardwareFlowControl; //Ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>
|
||||||
UART_FifoStructrue* FifoSetting ;
|
UART_FifoStructrue* FifoSetting ;
|
||||||
|
UART_StopLen stop_len; //停止位长度
|
||||||
|
UART_WordLen Word_len; //数据位长度
|
||||||
|
UART_Stick_EN Stick_EN; //固定奇偶校验使能
|
||||||
|
UART_Even_EN Even_EN; //奇偶校验选择
|
||||||
|
UART_Parity_EN Parity_EN; //奇偶校验使能
|
||||||
}UART_InitStructure;
|
}UART_InitStructure;
|
||||||
|
|
||||||
extern UART_FifoStructrue UART0_Fifo;
|
extern UART_FifoStructrue UART0_Fifo;
|
||||||
|
|
@ -58,19 +94,19 @@ extern UART_FifoStructrue UART1_Fifo;
|
||||||
extern UART_InitStructure UART1_Init;
|
extern UART_InitStructure UART1_Init;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
中断资源说明:
|
<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>Դ˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
1、THREINT THR发送寄存器或发送FIFO空
|
1<EFBFBD><EFBFBD>THREINT THR<EFBFBD><EFBFBD><EFBFBD>ͼĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO<EFBFBD><EFBFBD>
|
||||||
2、RDAINT 接收寄存器数据可用 ,FIFO模式下触发接收阈值
|
2<EFBFBD><EFBFBD>RDAINT <EFBFBD><EFBFBD><EFBFBD>ռĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>FIFOģʽ<EFBFBD>´<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
3、RTOINT FIFO模式下接收超时:在最后四个字节时间内没有字节移除或者输入,在这个时间内至少有一个字节在接收FIFO中
|
3<EFBFBD><EFBFBD>RTOINT FIFOģʽ<EFBFBD>½<EFBFBD><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><EFBFBD>ֽ<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD>Ƴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>룬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD><EFBFBD>FIFO<EFBFBD><EFBFBD>
|
||||||
4、RLSINT 接收线路状态:发生了溢出错误,校验错误,帧错误或者中断
|
4<EFBFBD><EFBFBD>RLSINT <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
5、MSIINT 调制解调器状态:CTS更改状态(禁用autoflow),DSR/RI/DCD更改状态
|
5<EFBFBD><EFBFBD>MSIINT <EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>CTS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>autoflow<EFBFBD><EFBFBD><EFBFBD><EFBFBD>DSR/RI/DCD<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
*/
|
*/
|
||||||
/*中断使能*/
|
/*<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>*/
|
||||||
#define MSI_EN (uint8_t)0X8
|
#define MSI_EN (uint8_t)0X8
|
||||||
#define RLSI_EN (uint8_t)0X4
|
#define RLSI_EN (uint8_t)0X4
|
||||||
#define THRE_EN (uint8_t)0X2
|
#define THRE_EN (uint8_t)0X2
|
||||||
#define RDAI_EN (uint8_t)0X1
|
#define RDAI_EN (uint8_t)0X1
|
||||||
/*中断信息*/
|
/*<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>Ϣ*/
|
||||||
#define INT_MODEM_STATUS (uint8_t)0X0
|
#define INT_MODEM_STATUS (uint8_t)0X0
|
||||||
#define INT_THR_EMPTY (uint8_t)0X1
|
#define INT_THR_EMPTY (uint8_t)0X1
|
||||||
#define INT_RCV_DATA_AVAILABLE (uint8_t)0X2
|
#define INT_RCV_DATA_AVAILABLE (uint8_t)0X2
|
||||||
|
|
@ -78,8 +114,8 @@ extern UART_InitStructure UART1_Init;
|
||||||
#define INT_CHAR_TIMEOUT_INDICATION (uint8_t)0X6
|
#define INT_CHAR_TIMEOUT_INDICATION (uint8_t)0X6
|
||||||
|
|
||||||
typedef struct uart_it_para{
|
typedef struct uart_it_para{
|
||||||
uint8_t UartIntModel ; //选择中断的模式
|
uint8_t UartIntModel ; //ѡ<EFBFBD><EFBFBD><EFBFBD>жϵ<EFBFBD>ģʽ
|
||||||
uint8_t UartDMAEnable; //选择是否开启DMA
|
uint8_t UartDMAEnable; //ѡ<EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>DMA
|
||||||
}UART_ITStructure;
|
}UART_ITStructure;
|
||||||
|
|
||||||
extern UART_ITStructure UART0_ITSet;
|
extern UART_ITStructure UART0_ITSet;
|
||||||
|
|
@ -91,34 +127,34 @@ extern UART_ITStructure UART1_ITSet;
|
||||||
#define UART_WordLength_8b ((uint8_t)0x03)
|
#define UART_WordLength_8b ((uint8_t)0x03)
|
||||||
|
|
||||||
#define UART_NO_PARITY ((uint8_t)0x00 & 0xff)
|
#define UART_NO_PARITY ((uint8_t)0x00 & 0xff)
|
||||||
#define UART_LOGIC_1_ODD_NUM ((uint8_t)0x08 & 0xff) //逻辑1奇数个
|
#define UART_LOGIC_1_ODD_NUM ((uint8_t)0x08 & 0xff) //<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
#define UART_LOGIC_1_EVEN_NUM ((uint8_t)0x18 & 0xff) //逻辑1偶数个
|
#define UART_LOGIC_1_EVEN_NUM ((uint8_t)0x18 & 0xff) //<EFBFBD><EFBFBD>1ż<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
#define UART_STICK_PARITY_AS1 ((uint8_t)0x28 & 0xff) //固定奇偶校验为1
|
#define UART_STICK_PARITY_AS1 ((uint8_t)0x28 & 0xff) //<EFBFBD>̶<EFBFBD><EFBFBD><EFBFBD>żУ<EFBFBD><EFBFBD>Ϊ1
|
||||||
#define UART_STICK_PARITY_AS0 ((uint8_t)0x38 & 0xff)
|
#define UART_STICK_PARITY_AS0 ((uint8_t)0x38 & 0xff)
|
||||||
|
|
||||||
|
|
||||||
/*中断信息读取*/
|
/*<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD>ȡ*/
|
||||||
/*中断挂起*/
|
/*<EFBFBD>жϹ<EFBFBD><EFBFBD><EFBFBD>*/
|
||||||
uint8_t UART_INT_PEND(CMSDK_UART_TypeDef* UARTx); //为0时有UART的中断挂起
|
uint8_t UART_INT_PEND(CMSDK_UART_TypeDef* UARTx); //Ϊ0ʱ<EFBFBD><EFBFBD>UART<EFBFBD><EFBFBD><EFBFBD>жϹ<EFBFBD><EFBFBD><EFBFBD>
|
||||||
/*中断状态判断*/
|
/*<EFBFBD>ж<EFBFBD>״̬<EFBFBD>ж<EFBFBD>*/
|
||||||
uint8_t UART_INT_TYPE(CMSDK_UART_TypeDef* UARTx);
|
uint8_t UART_INT_TYPE(CMSDK_UART_TypeDef* UARTx);
|
||||||
/*fifo 使用指示器*/
|
/*fifo ʹ<EFBFBD><EFBFBD>ָʾ<EFBFBD><EFBFBD>*/
|
||||||
uint8_t UART_FIFO_USE(CMSDK_UART_TypeDef* UARTx); //0:非fifo模式 1:fifo 使能
|
uint8_t UART_FIFO_USE(CMSDK_UART_TypeDef* UARTx); //0:<EFBFBD><EFBFBD>fifoģʽ 1<><31>fifo ʹ<><CAB9>
|
||||||
/*清除传输FIFO*/
|
/*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO*/
|
||||||
void UART_TXCLR(CMSDK_UART_TypeDef* UARTx);
|
void UART_TXCLR(CMSDK_UART_TypeDef* UARTx);
|
||||||
/*清除接收FIFO*/
|
/*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>FIFO*/
|
||||||
void UART_RXCLR(CMSDK_UART_TypeDef* UARTx);
|
void UART_RXCLR(CMSDK_UART_TypeDef* UARTx);
|
||||||
/*FIFO使能*/
|
/*FIFOʹ<EFBFBD><EFBFBD>*/
|
||||||
void UART_FIFOEnable(CMSDK_UART_TypeDef* UARTx);
|
void UART_FIFOEnable(CMSDK_UART_TypeDef* UARTx);
|
||||||
/*FIFO关闭*/
|
/*FIFO<EFBFBD>ر<EFBFBD>*/
|
||||||
void UART_FIFODisable(CMSDK_UART_TypeDef* UARTx);
|
void UART_FIFODisable(CMSDK_UART_TypeDef* UARTx);
|
||||||
|
|
||||||
/*接收数据*/
|
/*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||||
uint8_t READ_UART_RCVBuff(CMSDK_UART_TypeDef* UARTx );
|
uint8_t READ_UART_RCVBuff(CMSDK_UART_TypeDef* UARTx );
|
||||||
/*发送数据*/
|
/*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||||
void WRITE_UART_THRBuff(CMSDK_UART_TypeDef* UARTx ,uint8_t data);
|
void WRITE_UART_THRBuff(CMSDK_UART_TypeDef* UARTx ,uint8_t data);
|
||||||
|
|
||||||
/*FIFO状态获取*/
|
/*FIFO״̬<EFBFBD><EFBFBD>ȡ*/
|
||||||
uint8_t UART_RX_FIFO_LEN(CMSDK_UART_TypeDef* UARTx) ;
|
uint8_t UART_RX_FIFO_LEN(CMSDK_UART_TypeDef* UARTx) ;
|
||||||
uint8_t UART_TX_FIFO_LEN(CMSDK_UART_TypeDef* UARTx) ;
|
uint8_t UART_TX_FIFO_LEN(CMSDK_UART_TypeDef* UARTx) ;
|
||||||
uint8_t UART_RX_FIFO_FULL(CMSDK_UART_TypeDef* UARTx) ;
|
uint8_t UART_RX_FIFO_FULL(CMSDK_UART_TypeDef* UARTx) ;
|
||||||
|
|
@ -126,19 +162,20 @@ uint8_t UART_RX_FIFO_EMPTY(CMSDK_UART_TypeDef* UARTx) ;
|
||||||
uint8_t UART_TX_FIFO_FULL(CMSDK_UART_TypeDef* UARTx) ;
|
uint8_t UART_TX_FIFO_FULL(CMSDK_UART_TypeDef* UARTx) ;
|
||||||
uint8_t UART_TX_FIFO_EMPTY(CMSDK_UART_TypeDef* UARTx) ;
|
uint8_t UART_TX_FIFO_EMPTY(CMSDK_UART_TypeDef* UARTx) ;
|
||||||
|
|
||||||
/*收发线状态获取*/
|
/*<EFBFBD>շ<EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD>ȡ*/
|
||||||
uint8_t UARTLine_RCVError(CMSDK_UART_TypeDef* UARTx);
|
uint8_t UARTLine_RCVError(CMSDK_UART_TypeDef* UARTx);
|
||||||
|
|
||||||
/*判断发送缓存是否为空*/
|
/*<EFBFBD>жϷ<EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><EFBFBD>*/
|
||||||
uint8_t UARTLine_TRANSEmpty(CMSDK_UART_TypeDef* UARTx);
|
uint8_t UARTLine_TRANSEmpty(CMSDK_UART_TypeDef* UARTx);
|
||||||
|
|
||||||
/*判断THR是否为空*/
|
/*<EFBFBD>ж<EFBFBD>THR<EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD><EFBFBD>*/
|
||||||
uint8_t UARTLine_THREmpty(CMSDK_UART_TypeDef* UARTx);
|
uint8_t UARTLine_THREmpty(CMSDK_UART_TypeDef* UARTx);
|
||||||
|
|
||||||
/*UART初始化*/
|
/*UART<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>*/
|
||||||
void UART_Init(CMSDK_UART_TypeDef *CMSDK_UART, UART_InitStructure* uart_paraX);
|
void UART_Init(CMSDK_UART_TypeDef *CMSDK_UART, UART_InitStructure* uart_paraX);
|
||||||
void UART_ITConfig(CMSDK_UART_TypeDef *CMSDK_UART, UART_ITStructure* uart_paraX);
|
void UART_ITConfig(CMSDK_UART_TypeDef *CMSDK_UART, UART_ITStructure* uart_paraX);
|
||||||
unsigned char UartPutc(CMSDK_UART_TypeDef *CMSDK_UART ,unsigned char my_ch);
|
unsigned char UartPutc(CMSDK_UART_TypeDef *CMSDK_UART ,unsigned char my_ch);
|
||||||
|
void Uart_Send(CMSDK_UART_TypeDef *CMSDK_UART ,uint8_t *data, uint8_t len);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -42,6 +42,12 @@ typedef struct {
|
||||||
uint16_t intensity; // 强度 (0-255)
|
uint16_t intensity; // 强度 (0-255)
|
||||||
uint16_t rest_time; // 休息时间 (ms)
|
uint16_t rest_time; // 休息时间 (ms)
|
||||||
uint16_t silent_time; // 静默时间 (ms)
|
uint16_t silent_time; // 静默时间 (ms)
|
||||||
|
|
||||||
|
// 缓进缓出控制参数
|
||||||
|
uint8_t ramp_up_time; // 缓进时间:2秒
|
||||||
|
uint8_t hold_time; // 保持时间:6秒
|
||||||
|
uint8_t ramp_down_time; // 缓出时间:2秒
|
||||||
|
uint8_t enable_ramp; // 启用渐进控制
|
||||||
} EMS_Config_TypeDef;
|
} EMS_Config_TypeDef;
|
||||||
|
|
||||||
// 电刺激控制函数
|
// 电刺激控制函数
|
||||||
|
|
@ -50,5 +56,6 @@ void EMS_Start(void);
|
||||||
void EMS_Stop(void);
|
void EMS_Stop(void);
|
||||||
void EMS_UpdateIntensity(uint16_t intensity);
|
void EMS_UpdateIntensity(uint16_t intensity);
|
||||||
void EMS_Process(void);
|
void EMS_Process(void);
|
||||||
|
void EMS_Process_Ramp(void); // 缓进缓出处理函数
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ History:
|
||||||
1.V1.0
|
1.V1.0
|
||||||
Date:
|
Date:
|
||||||
Author:
|
Author:
|
||||||
Modification: 初版
|
Modification: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ENS1_IIC.h"
|
#include "ENS1_IIC.h"
|
||||||
|
|
@ -33,37 +33,37 @@ IIC_ConfigStructure IIC1_Config =
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//bus error 判断(ITERREN使能)
|
//bus error <EFBFBD>жϣ<EFBFBD>ITERRENʹ<EFBFBD>ܣ<EFBFBD>
|
||||||
bool IIC_BUS_ERROR(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 8)&0x1) ? true :false);}
|
bool IIC_BUS_ERROR(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 8)&0x1) ? true :false);}
|
||||||
//应答错误判断
|
//Ӧ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
bool IIC_ACK_ERROR(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 10)&0x1) ? true :false);}
|
bool IIC_ACK_ERROR(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 10)&0x1) ? true :false);}
|
||||||
//仲裁
|
//<EFBFBD>ٲ<EFBFBD>
|
||||||
bool IIC_ARBITRAT_ERROR(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 9)&0x1) ? true :false);}
|
bool IIC_ARBITRAT_ERROR(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 9)&0x1) ? true :false);}
|
||||||
//溢出/下溢错误
|
//<EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
bool IIC_OVERRUN_ERROR(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 11)&0x1) ? true :false);}
|
bool IIC_OVERRUN_ERROR(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 11)&0x1) ? true :false);}
|
||||||
|
|
||||||
//ITEVFEN使能后有如下事件
|
//ITEVFENʹ<EFBFBD>ܺ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
||||||
//起始状态,起始位发送(主机模式)
|
//<EFBFBD><EFBFBD>ʼ״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼλ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD>
|
||||||
bool IIC_SB_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS)&0x1) ? true :false);}
|
bool IIC_SB_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS)&0x1) ? true :false);}
|
||||||
//地址发送(主机模式) / 地址匹配(从机事件)
|
//<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD> / <20><>ַƥ<D6B7>䣨<EFBFBD>ӻ<EFBFBD><D3BB>¼<EFBFBD><C2BC><EFBFBD>
|
||||||
bool IIC_ADDR_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 1)&0x1) ? true :false);}
|
bool IIC_ADDR_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 1)&0x1) ? true :false);}
|
||||||
//主机模式下,主机已发送10bit地址数据的第一个字节!!!
|
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD>£<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѷ<EFBFBD><EFBFBD><EFBFBD>10bit<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ݵĵ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ֽڣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
bool IIC_ADD10_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 3)&0x1) ? true :false);}
|
bool IIC_ADD10_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 3)&0x1) ? true :false);}
|
||||||
//从机模式下,停止条件被接收到
|
//<EFBFBD>ӻ<EFBFBD>ģʽ<EFBFBD>£<EFBFBD>ֹͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>
|
||||||
bool IIC_STOPF_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 4)&0x1) ? true :false);}
|
bool IIC_STOPF_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 4)&0x1) ? true :false);}
|
||||||
//数据字节传输成功
|
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽڴ<EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
|
||||||
bool IIC_BTF_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 2)&0x1) ? true :false);}
|
bool IIC_BTF_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 2)&0x1) ? true :false);}
|
||||||
|
|
||||||
//ITEVFEN 且 ITBUFEN 使能后,有如下事件
|
//ITEVFEN <EFBFBD><EFBFBD> ITBUFEN ʹ<>ܺ<EFBFBD><DCBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD>
|
||||||
//数据寄存器非空(接受器读到数据)
|
//<EFBFBD><EFBFBD><EFBFBD>ݼĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿգ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>
|
||||||
bool IIC_RxNE_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 5)&0x1) ? true :false);}
|
bool IIC_RxNE_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 5)&0x1) ? true :false);}
|
||||||
//数据寄存器空(传输完数据)
|
//<EFBFBD><EFBFBD><EFBFBD>ݼĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>
|
||||||
bool IIC_TxE_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 6)&0x1) ? true :false);}
|
bool IIC_TxE_EVENT(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 6)&0x1) ? true :false);}
|
||||||
|
|
||||||
//总线状态:繁忙与否
|
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD>æ<EFBFBD><EFBFBD><EFBFBD>
|
||||||
uint8_t IIC_Bus_BUSY(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (uint8_t)(((CMSDK_I2Cx->I2C_STS >> 13)&0x1) ? 1 :0);};
|
uint8_t IIC_Bus_BUSY(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (uint8_t)(((CMSDK_I2Cx->I2C_STS >> 13)&0x1) ? 1 :0);};
|
||||||
|
|
||||||
//模式确认
|
//ģʽȷ<EFBFBD><EFBFBD>
|
||||||
bool IIC_MASTER_MODE(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 12)&0x1) ? true :false);}
|
bool IIC_MASTER_MODE(CMSDK_I2C_TypeDef* CMSDK_I2Cx){return (bool)(((CMSDK_I2Cx->I2C_STS >> 12)&0x1) ? true :false);}
|
||||||
|
|
||||||
uint8_t IIC_Config_init(CMSDK_I2C_TypeDef* CMSDK_I2Cx ,IIC_ConfigStructure* IIC_Para )
|
uint8_t IIC_Config_init(CMSDK_I2C_TypeDef* CMSDK_I2Cx ,IIC_ConfigStructure* IIC_Para )
|
||||||
|
|
@ -80,7 +80,7 @@ uint8_t IIC_Config_init(CMSDK_I2C_TypeDef* CMSDK_I2Cx ,IIC_ConfigStructure* II
|
||||||
}
|
}
|
||||||
if(IIC_Para->MODE == IIC_SLAVE)
|
if(IIC_Para->MODE == IIC_SLAVE)
|
||||||
{
|
{
|
||||||
// CMSDK_I2Cx->I2C_CR2|=(1<<7);//|(1<<8);//中断使能--bit8:buffer中断 / bit7:事件中断 / bit6:错误中断
|
// CMSDK_I2Cx->I2C_CR2|=(1<<7);//|(1<<8);//<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>--bit8<74><38>buffer<65>ж<EFBFBD> / bit7<74><37><EFBFBD>¼<EFBFBD><C2BC>ж<EFBFBD> / bit6<74><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
CMSDK_I2Cx->I2C_CR1|=(1);
|
CMSDK_I2Cx->I2C_CR1|=(1);
|
||||||
CMSDK_I2Cx->I2C_OAR = IIC_Para->OWN_ADDRESS ;
|
CMSDK_I2Cx->I2C_OAR = IIC_Para->OWN_ADDRESS ;
|
||||||
if(IIC_Para->ACK_EN == true)
|
if(IIC_Para->ACK_EN == true)
|
||||||
|
|
@ -90,9 +90,9 @@ uint8_t IIC_Config_init(CMSDK_I2C_TypeDef* CMSDK_I2Cx ,IIC_ConfigStructure* II
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
IIC master transmitter:
|
IIC master transmitter:
|
||||||
IIC_CR2:配置中断时钟频率
|
IIC_CR2:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʱ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>
|
||||||
IIC_CR1:使能IIC接口
|
IIC_CR1:ʹ<EFBFBD><EFBFBD>IIC<EFBFBD>ӿ<EFBFBD>
|
||||||
IIC_CR1:配置START 位 IIC主机
|
IIC_CR1:<EFBFBD><EFBFBD><EFBFBD><EFBFBD>START λ IIC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
*/
|
*/
|
||||||
CMSDK_I2Cx->I2C_CR2 |= IIC_Para->IIC_SPEED ;
|
CMSDK_I2Cx->I2C_CR2 |= IIC_Para->IIC_SPEED ;
|
||||||
CMSDK_I2Cx->I2C_CR1 |= (1) ;
|
CMSDK_I2Cx->I2C_CR1 |= (1) ;
|
||||||
|
|
@ -125,7 +125,7 @@ void IIC_ITConfig(CMSDK_I2C_TypeDef* CMSDK_I2Cx ,uint16_t IIC_IT_SEL ,Functional
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void IIC_Cmd(CMSDK_I2C_TypeDef* CMSDK_I2Cx ,FunctionalState NewState) //使能IIC外设
|
void IIC_Cmd(CMSDK_I2C_TypeDef* CMSDK_I2Cx ,FunctionalState NewState) //ʹ<EFBFBD><EFBFBD>IIC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{
|
{
|
||||||
if(CMSDK_I2Cx ==CMSDK_I2C0)
|
if(CMSDK_I2Cx ==CMSDK_I2C0)
|
||||||
{
|
{
|
||||||
|
|
@ -157,8 +157,8 @@ void IIC_GenerateSTOP(CMSDK_I2C_TypeDef* CMSDK_I2Cx)
|
||||||
CMSDK_I2Cx->I2C_CR1 |= (1<<4);
|
CMSDK_I2Cx->I2C_CR1 |= (1<<4);
|
||||||
}
|
}
|
||||||
|
|
||||||
//general call 用于向总线所有设备发送消息,用于初始化从设备与设备同步
|
//general call <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD>豸ͬ<EFBFBD><EFBFBD>
|
||||||
//主设备通过向总线发送0x00地址来触发GENERAL CALL
|
//<EFBFBD><EFBFBD><EFBFBD>豸ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><EFBFBD><EFBFBD>0x00<EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GENERAL CALL
|
||||||
void IIC_GeneralCallCmd(CMSDK_I2C_TypeDef* CMSDK_I2Cx)
|
void IIC_GeneralCallCmd(CMSDK_I2C_TypeDef* CMSDK_I2Cx)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -172,7 +172,7 @@ void IIC_Send7bitAddress(CMSDK_I2C_TypeDef* CMSDK_I2Cx ,uint8_t Address)
|
||||||
void IIC_SendData(CMSDK_I2C_TypeDef* CMSDK_I2Cx , uint8_t data)
|
void IIC_SendData(CMSDK_I2C_TypeDef* CMSDK_I2Cx , uint8_t data)
|
||||||
{
|
{
|
||||||
CMSDK_I2Cx->I2C_DR = data;
|
CMSDK_I2Cx->I2C_DR = data;
|
||||||
while(IIC_BTF_EVENT(CMSDK_I2Cx) == false); //字节传输完成
|
while(IIC_BTF_EVENT(CMSDK_I2Cx) == false); //<EFBFBD>ֽڴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t IIC_ReadData(CMSDK_I2C_TypeDef* CMSDK_I2Cx)
|
uint8_t IIC_ReadData(CMSDK_I2C_TypeDef* CMSDK_I2Cx)
|
||||||
|
|
@ -211,9 +211,9 @@ void I2C0_Event_Handler(void)
|
||||||
}
|
}
|
||||||
if(IIC_STOPF_EVENT(CMSDK_I2C0) == true)
|
if(IIC_STOPF_EVENT(CMSDK_I2C0) == true)
|
||||||
{
|
{
|
||||||
//如果不再接收,则关闭IIC!!!
|
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٽ<EFBFBD><EFBFBD>գ<EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>IIC!!!
|
||||||
IIC_Cmd(CMSDK_I2C0 ,DISABLE) ;
|
IIC_Cmd(CMSDK_I2C0 ,DISABLE) ;
|
||||||
CMSDK_I2C0->I2C_CR2|=(1<<7); //中断使能--bit8:buffer中断 / bit7:事件中断 / bit6:错误中断
|
CMSDK_I2C0->I2C_CR2|=(1<<7); //<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>--bit8<74><38>buffer<65>ж<EFBFBD> / bit7<74><37><EFBFBD>¼<EFBFBD><C2BC>ж<EFBFBD> / bit6<74><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
CMSDK_I2C0->I2C_CR1|=(1);
|
CMSDK_I2C0->I2C_CR1|=(1);
|
||||||
CMSDK_I2C0->I2C_OAR = 0X78 ;
|
CMSDK_I2C0->I2C_OAR = 0X78 ;
|
||||||
CMSDK_I2C0->I2C_CR1 |= (1<<5);
|
CMSDK_I2C0->I2C_CR1 |= (1<<5);
|
||||||
|
|
@ -230,7 +230,6 @@ void I2C0_Event_Handler(void)
|
||||||
if(IIC_RxNE_EVENT(CMSDK_I2C0) == true)
|
if(IIC_RxNE_EVENT(CMSDK_I2C0) == true)
|
||||||
{
|
{
|
||||||
uint8_t read_data = (uint8_t)(CMSDK_I2C0->I2C_DR & 0xff);
|
uint8_t read_data = (uint8_t)(CMSDK_I2C0->I2C_DR & 0xff);
|
||||||
printf("%d\n", read_data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(IIC_TxE_EVENT(CMSDK_I2C0) == true)
|
if(IIC_TxE_EVENT(CMSDK_I2C0) == true)
|
||||||
|
|
@ -246,25 +245,21 @@ void I2C0_Error_Handler(void)
|
||||||
|
|
||||||
if(IIC_BUS_ERROR(CMSDK_I2C0) == true)
|
if(IIC_BUS_ERROR(CMSDK_I2C0) == true)
|
||||||
{
|
{
|
||||||
printf("bus error\n");
|
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(IIC_ACK_ERROR(CMSDK_I2C0) == true)
|
if(IIC_ACK_ERROR(CMSDK_I2C0) == true)
|
||||||
{
|
{
|
||||||
printf("IIC_ACK_ERROR\n");
|
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(IIC_ARBITRAT_ERROR(CMSDK_I2C0) == true)
|
if(IIC_ARBITRAT_ERROR(CMSDK_I2C0) == true)
|
||||||
{
|
{
|
||||||
printf("IIC_ARBITRAT_ERROR\n");
|
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(IIC_OVERRUN_ERROR(CMSDK_I2C0) == true)
|
if(IIC_OVERRUN_ERROR(CMSDK_I2C0) == true)
|
||||||
{
|
{
|
||||||
printf("IIC_OVERRUN_ERROR\n");
|
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -293,17 +288,16 @@ void I2C1_Event_Handler(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if(IIC_ADDR_EVENT(CMSDK_I2C1) == true) //作为从机,进入此处则地址匹配!
|
if(IIC_ADDR_EVENT(CMSDK_I2C1) == true) //<EFBFBD><EFBFBD>Ϊ<EFBFBD>ӻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˴<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַƥ<EFBFBD>䣡
|
||||||
{
|
{
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(IIC_STOPF_EVENT(CMSDK_I2C1) == true) //作为从机,接收到STOP信号
|
if(IIC_STOPF_EVENT(CMSDK_I2C1) == true) //<EFBFBD><EFBFBD>Ϊ<EFBFBD>ӻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>STOP<EFBFBD>ź<EFBFBD>
|
||||||
{
|
{
|
||||||
printf("get stop\n");
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٽ<EFBFBD><D9BD>գ<EFBFBD><D5A3><EFBFBD>ر<EFBFBD>IIC!!!
|
||||||
//如果不再接收,则关闭IIC!!!
|
|
||||||
IIC_Cmd(CMSDK_I2C1 ,DISABLE) ;
|
IIC_Cmd(CMSDK_I2C1 ,DISABLE) ;
|
||||||
CMSDK_I2C1->I2C_CR2|=(1<<7); //中断使能--bit8:buffer中断 / bit7:事件中断 / bit6:错误中断
|
CMSDK_I2C1->I2C_CR2|=(1<<7); //<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>--bit8<74><38>buffer<65>ж<EFBFBD> / bit7<74><37><EFBFBD>¼<EFBFBD><C2BC>ж<EFBFBD> / bit6<74><36><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
CMSDK_I2C1->I2C_CR1|=(1);
|
CMSDK_I2C1->I2C_CR1|=(1);
|
||||||
CMSDK_I2C1->I2C_OAR = 0X78 ;
|
CMSDK_I2C1->I2C_OAR = 0X78 ;
|
||||||
CMSDK_I2C1->I2C_CR1 |= (1<<5);
|
CMSDK_I2C1->I2C_CR1 |= (1<<5);
|
||||||
|
|
@ -317,10 +311,9 @@ void I2C1_Event_Handler(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
if((IIC_RxNE_EVENT(CMSDK_I2C1) == true)) //作为从机,buffer非空,读IIC_DR中的数据
|
if((IIC_RxNE_EVENT(CMSDK_I2C1) == true)) //<EFBFBD><EFBFBD>Ϊ<EFBFBD>ӻ<EFBFBD><EFBFBD><EFBFBD>buffer<EFBFBD>ǿգ<EFBFBD><EFBFBD><EFBFBD>IIC_DR<EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
{
|
{
|
||||||
uint8_t read_data = (uint8_t)(CMSDK_I2C1->I2C_DR & 0xff);
|
uint8_t read_data = (uint8_t)(CMSDK_I2C1->I2C_DR & 0xff);
|
||||||
printf("%d\n", read_data);
|
|
||||||
}
|
}
|
||||||
if(IIC_TxE_EVENT(CMSDK_I2C1) == true)
|
if(IIC_TxE_EVENT(CMSDK_I2C1) == true)
|
||||||
{
|
{
|
||||||
|
|
@ -335,25 +328,21 @@ void I2C1_Error_Handler(void)
|
||||||
|
|
||||||
if(IIC_BUS_ERROR(CMSDK_I2C1) == true)
|
if(IIC_BUS_ERROR(CMSDK_I2C1) == true)
|
||||||
{
|
{
|
||||||
printf("bus error\n");
|
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(IIC_ACK_ERROR(CMSDK_I2C1) == true)
|
if(IIC_ACK_ERROR(CMSDK_I2C1) == true)
|
||||||
{
|
{
|
||||||
printf("IIC_ACK_ERROR\n");
|
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(IIC_ARBITRAT_ERROR(CMSDK_I2C1) == true)
|
if(IIC_ARBITRAT_ERROR(CMSDK_I2C1) == true)
|
||||||
{
|
{
|
||||||
printf("IIC_ARBITRAT_ERROR\n");
|
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(IIC_OVERRUN_ERROR(CMSDK_I2C1) == true)
|
if(IIC_OVERRUN_ERROR(CMSDK_I2C1) == true)
|
||||||
{
|
{
|
||||||
printf("IIC_OVERRUN_ERROR\n");
|
|
||||||
return ;
|
return ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,14 +11,14 @@ History:
|
||||||
1.V1.0
|
1.V1.0
|
||||||
Date:
|
Date:
|
||||||
Author:
|
Author:
|
||||||
Modification: 初版
|
Modification: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
MTP说明
|
MTP˵<EFBFBD><EFBFBD>
|
||||||
1、MTP部分只能按块写入,每块有1024字节大小
|
1<EFBFBD><EFBFBD>MTP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD>ܰ<EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>,ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>1024<EFBFBD>ֽڴ<EFBFBD>С
|
||||||
块的编号:
|
<EFBFBD><EFBFBD>ı<EFBFBD>ţ<EFBFBD>
|
||||||
SECTOR 0 : 0000H - 03FFH
|
SECTOR 0 : 0000H - 03FFH
|
||||||
SECTOR 1 : 0400H - 07FFH
|
SECTOR 1 : 0400H - 07FFH
|
||||||
SECTOR 2 : 0800H - 0BFFH
|
SECTOR 2 : 0800H - 0BFFH
|
||||||
|
|
@ -34,8 +34,8 @@ SECTOR 7 : 1C00H - 1FFFH
|
||||||
uint16_t write_current_data[4]={0,0,0,0};
|
uint16_t write_current_data[4]={0,0,0,0};
|
||||||
STRUCT_MTP_TRIM MTP_FT_SET=
|
STRUCT_MTP_TRIM MTP_FT_SET=
|
||||||
{
|
{
|
||||||
.OSCA_FT = 0x10, //默认值为 0X10
|
.OSCA_FT = 0x10, //Ĭ<EFBFBD><EFBFBD>ֵΪ 0X10
|
||||||
.OSC32K_RTRIM = 0x10, //默认值为 0X10
|
.OSC32K_RTRIM = 0x10, //Ĭ<EFBFBD><EFBFBD>ֵΪ 0X10
|
||||||
.BG_TRIM = 0x88,
|
.BG_TRIM = 0x88,
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
@ -52,30 +52,29 @@ uint8_t MTP_init(void)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//MTP内保存的电流检测数据读取
|
//MTP<EFBFBD>ڱ<EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݶ<EFBFBD>ȡ
|
||||||
void flash_read(uint32_t start_addr,uint16_t *test_i){
|
void flash_read(uint32_t start_addr,uint16_t *test_i){
|
||||||
uint16_t result = 0;
|
uint16_t result = 0;
|
||||||
result = HW16_REG(start_addr);
|
result = HW16_REG(start_addr);
|
||||||
*test_i = result ;
|
*test_i = result ;
|
||||||
}
|
}
|
||||||
|
|
||||||
//向MTP中写入数据(仅限于向用户自定义块写入!!!)
|
//<EFBFBD><EFBFBD>MTP<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD>룡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
//可自定义读写的区域为MTP的第0x1BC0块(MTP_BASE_ADDR + 0x6F00)
|
//<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪMTP<EFBFBD>ĵ<EFBFBD>0x1BC0<EFBFBD>飨MTP_BASE_ADDR + 0x6F00<30><30>
|
||||||
int8_t flash_buff_write(uint32_t start_addr, uint16_t *buff) {
|
int8_t flash_buff_write(uint32_t start_addr, uint16_t *buff) {
|
||||||
HW32_REG(start_addr) = ((uint32_t)((*(buff+1)<<16)&0xffff0000) + ((*buff)&0x0000ffff));
|
HW32_REG(start_addr) = ((uint32_t)((*(buff+1)<<16)&0xffff0000) + ((*buff)&0x0000ffff));
|
||||||
// while(!(CMSDK_MTPREG->MTP_SR&0x00000002)){};
|
// while(!(CMSDK_MTPREG->MTP_SR&0x00000002)){};
|
||||||
if(HW32_REG(start_addr) != ((uint32_t)(*(buff+1)<<16) + *buff ))
|
if(HW32_REG(start_addr) != ((uint32_t)(*(buff+1)<<16) + *buff ))
|
||||||
{
|
{
|
||||||
printf("write error\n");
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int8_t flash_write_ctrl(uint16_t *buff , uint32_t start_addr){
|
int8_t flash_write_ctrl(uint16_t *buff , uint32_t start_addr){
|
||||||
CMSDK_MTPREG->MTP_CLR = 0xffffffff; //SR寄存器
|
CMSDK_MTPREG->MTP_CLR = 0xffffffff; //SR<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>
|
||||||
CMSDK_MTPREG->MTP_CR = 0x00000002; //2等待周期
|
CMSDK_MTPREG->MTP_CR = 0x00000002; //2<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
CMSDK_MTPREG->MTP_ACLR = 0x00000000; //允许软件读写从sector0 -sector 6 (sector7 作为bootloader区)
|
CMSDK_MTPREG->MTP_ACLR = 0x00000000; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>sector0 -sector 6 <20><>sector7 <20><>Ϊbootloader<65><72><EFBFBD><EFBFBD>
|
||||||
CMSDK_MTPREG->MTP_KEYR = 0x5a5a5a5a; //key
|
CMSDK_MTPREG->MTP_KEYR = 0x5a5a5a5a; //key
|
||||||
return flash_buff_write(start_addr, buff);
|
return flash_buff_write(start_addr, buff);
|
||||||
}
|
}
|
||||||
|
|
@ -83,7 +82,7 @@ int8_t flash_write_ctrl(uint16_t *buff , uint32_t start_addr){
|
||||||
int8_t write_data(void){
|
int8_t write_data(void){
|
||||||
uint16_t *wr_data = (uint16_t *)malloc(8*sizeof(uint8_t));
|
uint16_t *wr_data = (uint16_t *)malloc(8*sizeof(uint8_t));
|
||||||
memcpy(wr_data , write_current_data, 8);
|
memcpy(wr_data , write_current_data, 8);
|
||||||
int8_t val = flash_write_ctrl(wr_data,DATA_SAVE_ADDR); //第 0x1BC0块
|
int8_t val = flash_write_ctrl(wr_data,DATA_SAVE_ADDR); //<EFBFBD><EFBFBD> 0x1BC0<43><30>
|
||||||
val = flash_write_ctrl(wr_data+2, DATA_SAVE_ADDR + 4);
|
val = flash_write_ctrl(wr_data+2, DATA_SAVE_ADDR + 4);
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,13 +11,13 @@ History:
|
||||||
1.V1.0
|
1.V1.0
|
||||||
Date:
|
Date:
|
||||||
Author:
|
Author:
|
||||||
Modification: 初版
|
Modification: 2023-11-15
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ENS1_SPI.h"
|
#include "ENS1_SPI.h"
|
||||||
#include "ENS1_GPIO.h"
|
#include "ENS1_GPIO.h"
|
||||||
/*---------------------------------------------------fifo相关的函数头--------------------------------------------------*/
|
/*---------------------------------------------------fifo????????--------------------------------------------------*/
|
||||||
/*清除FIFO和计数清0*/
|
/* Clear FIFO and reset to 0 */
|
||||||
uint8_t CLR_TX_FIFO( CMSDK_SPI_TypeDef* SPIx)
|
uint8_t CLR_TX_FIFO( CMSDK_SPI_TypeDef* SPIx)
|
||||||
{
|
{
|
||||||
return (uint8_t)(SPIx->FCR>>8 & 0x1);
|
return (uint8_t)(SPIx->FCR>>8 & 0x1);
|
||||||
|
|
@ -27,47 +27,47 @@ uint8_t CLR_RX_FIFO(CMSDK_SPI_TypeDef* SPIx)
|
||||||
{
|
{
|
||||||
return (uint8_t)(SPIx->FCR>>1 & 0x1);
|
return (uint8_t)(SPIx->FCR>>1 & 0x1);
|
||||||
}
|
}
|
||||||
/*FIFO 状态读取*/
|
/*FIFO ?????*/
|
||||||
uint8_t RX_FIFO_LEN(CMSDK_SPI_TypeDef* SPIx)
|
uint8_t RX_FIFO_LEN(CMSDK_SPI_TypeDef* SPIx)
|
||||||
{
|
{
|
||||||
return (uint8_t)(((SPIx->FCR & 0x1) == 0x1) ? ((uint8_t)((SPIx->FSR & 0x001f0000)>>16)):0); //读取当前接收FIFO数据长度
|
return (uint8_t)(((SPIx->FCR & 0x1) == 0x1) ? ((uint8_t)((SPIx->FSR & 0x001f0000)>>16)):0); //??????????FIFO???????
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t TX_FIFO_LEN(CMSDK_SPI_TypeDef* SPIx)
|
uint8_t TX_FIFO_LEN(CMSDK_SPI_TypeDef* SPIx)
|
||||||
{
|
{
|
||||||
return (uint8_t)(((SPIx->FCR & 0x1) == 0x1) ? ((uint8_t)((SPIx->FSR & 0x00001f00)>>8)):0); //读取当前发送FIFO数据长度
|
return (uint8_t)(((SPIx->FCR & 0x1) == 0x1) ? ((uint8_t)((SPIx->FSR & 0x00001f00)>>8)):0); //??????????FIFO???????
|
||||||
}
|
}
|
||||||
|
|
||||||
SPI_BUSY_STATE BUSY_STATE(CMSDK_SPI_TypeDef* SPIx)
|
SPI_BUSY_STATE BUSY_STATE(CMSDK_SPI_TypeDef* SPIx)
|
||||||
{
|
{
|
||||||
return (SPI_BUSY_STATE)((((SPIx->FSR & 0x10) >> 4)==1) ? ( BUSY ) : ( NOTBUSY )); //读取当前SPI是否繁忙
|
return (SPI_BUSY_STATE)((((SPIx->FSR & 0x10) >> 4)==1) ? ( BUSY ) : ( NOTBUSY )); //??????SPI????
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t RX_FIFO_FULL(CMSDK_SPI_TypeDef* SPIx)
|
uint8_t RX_FIFO_FULL(CMSDK_SPI_TypeDef* SPIx)
|
||||||
{
|
{
|
||||||
return (uint8_t)((((SPIx->FSR & 0x8)>> 3 )==1) ? (1) : (0)) ; //当前读取FIFO是否为满?
|
return (uint8_t)((((SPIx->FSR & 0x8)>> 3 )==1) ? (1) : (0)) ; //??????FIFO????????
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t RX_FIFO_EMPTY(CMSDK_SPI_TypeDef* SPIx)
|
uint8_t RX_FIFO_EMPTY(CMSDK_SPI_TypeDef* SPIx)
|
||||||
{
|
{
|
||||||
return (uint8_t)((((SPIx->FSR & 0x4) >> 2)==1) ? (1) : (0) ) ; //当前读取FIFO是否为空?
|
return (uint8_t)((((SPIx->FSR & 0x4) >> 2)==1) ? (1) : (0) ) ; //??????FIFO???????
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t TX_FIFO_FULL(CMSDK_SPI_TypeDef* SPIx)
|
uint8_t TX_FIFO_FULL(CMSDK_SPI_TypeDef* SPIx)
|
||||||
{
|
{
|
||||||
return (uint8_t)((((SPIx->FSR & 0x2) >> 1)==1) ? (1) : (0)) ; //当前发送FIFO是否为满?
|
return (uint8_t)((((SPIx->FSR & 0x2) >> 1)==1) ? (1) : (0)) ; //???????FIFO????????
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t TX_FIFO_EMPTY(CMSDK_SPI_TypeDef* SPIx)
|
uint8_t TX_FIFO_EMPTY(CMSDK_SPI_TypeDef* SPIx)
|
||||||
{
|
{
|
||||||
return (uint8_t)(((SPIx->FSR & 0x1)==1) ? (1) : (0)) ; //当前发送FIFO是否为空?
|
return (uint8_t)(((SPIx->FSR & 0x1)==1) ? (1) : (0)) ; //???????FIFO???????
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*FIFO使能/DMA使能*/
|
/*FIFO???/DMA???*/
|
||||||
uint8_t SPI_FIFO_STATE(CMSDK_SPI_TypeDef* SPIx) //读FIFO设置
|
uint8_t SPI_FIFO_STATE(CMSDK_SPI_TypeDef* SPIx) //??FIFO????
|
||||||
{
|
{
|
||||||
return (uint8_t)(SPIx->FCR & 0x1) ;
|
return (uint8_t)(SPIx->FCR & 0x1) ;
|
||||||
}
|
}
|
||||||
|
|
@ -97,16 +97,16 @@ uint8_t SPI_FIFODMA_SET(CMSDK_SPI_TypeDef* SPIx ,bool TXDMA_SET ,bool RXDMA_SET)
|
||||||
return (uint8_t)((SPIx->CTRL2>>4)&0x3);
|
return (uint8_t)((SPIx->CTRL2>>4)&0x3);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*------------------------------------------------------fifo相关的函数尾--------------------------------------------------*/
|
/*------------------------------------------------------fifo???????<3F><>--------------------------------------------------*/
|
||||||
|
|
||||||
/*----------------------------------------------------------SPI配置-------------------------------------------------------*/
|
/*----------------------------------------------------------SPI????-------------------------------------------------------*/
|
||||||
//读取当前的SPI模式
|
//????????SPI??
|
||||||
uint8_t READ_SPI_MODE(CMSDK_SPI_TypeDef* SPIx)
|
uint8_t READ_SPI_MODE(CMSDK_SPI_TypeDef* SPIx)
|
||||||
{
|
{
|
||||||
return ((SPIx->CTRL1 & 0x7000) >> 12);
|
return ((SPIx->CTRL1 & 0x7000) >> 12);
|
||||||
}
|
}
|
||||||
|
|
||||||
//NSS通道选择
|
//NSS??????
|
||||||
uint8_t SPI_NSS_CHANNEL(CMSDK_SPI_TypeDef* SPIx ,NSS_CHANNEL_SEL NSSx ,FunctionalState ENorDIS)
|
uint8_t SPI_NSS_CHANNEL(CMSDK_SPI_TypeDef* SPIx ,NSS_CHANNEL_SEL NSSx ,FunctionalState ENorDIS)
|
||||||
{
|
{
|
||||||
if(ENorDIS == ENABLE)
|
if(ENorDIS == ENABLE)
|
||||||
|
|
@ -117,12 +117,12 @@ uint8_t SPI_NSS_CHANNEL(CMSDK_SPI_TypeDef* SPIx ,NSS_CHANNEL_SEL NSSx ,Functiona
|
||||||
return (uint8_t)((SPIx->CTRL2 & 0x0f00) >> 8);
|
return (uint8_t)((SPIx->CTRL2 & 0x0f00) >> 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
//spi的参数配置
|
//spi?????????
|
||||||
uint8_t SPI_Config_init(CMSDK_SPI_TypeDef* SPIx ,
|
uint8_t SPI_Config_init(CMSDK_SPI_TypeDef* SPIx ,
|
||||||
struct SPI_ModeConfig_Struct SPI_Config,
|
struct SPI_ModeConfig_Struct SPI_Config,
|
||||||
struct SPI_FIFO_Struct FIFO_Struct)
|
struct SPI_FIFO_Struct FIFO_Struct)
|
||||||
{
|
{
|
||||||
/*1、GPIO ALTER*/
|
/*1??GPIO ALTER*/
|
||||||
if(SPIx == CMSDK_SPI1)
|
if(SPIx == CMSDK_SPI1)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
@ -144,21 +144,21 @@ uint8_t SPI_Config_init(CMSDK_SPI_TypeDef* SPIx ,
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
2、写SPI_CTRL1寄存器
|
2??<EFBFBD><EFBFBD>SPI_CTRL1?????
|
||||||
(1)配置时钟波特率BAUD_RATE[2:0]
|
??1??????????????BAUD_RATE[2:0]
|
||||||
(2)配置时钟极性和相位 CPOL and CPHA bits
|
??2???????????????<EFBFBD><EFBFBD> CPOL and CPHA bits
|
||||||
(3)选择传输模式 BIDI_EN, BIDI_MODE, UNIDI_MODE bits
|
??3????????? BIDI_EN, BIDI_MODE, UNIDI_MODE bits
|
||||||
(4)配置LSB_SEL位来定义帧格式
|
??4??????LSB_SEL<EFBFBD><EFBFBD>??????????
|
||||||
(5)通过配置NSS_TOGGLE、NSS_MST_CTRL、NSS_MST_SW bits来选择NSS控制方式 bit11 9 8
|
??5?????????NSS_TOGGLE??NSS_MST_CTRL??NSS_MST_SW bits?????NSS?????? bit11 9 8
|
||||||
(6)通过配置MST_SLV_SEL位选择主模式或从模式
|
??6?????????MST_SLV_SEL<EFBFBD><EFBFBD>????????????
|
||||||
*/
|
*/
|
||||||
SPIx->CTRL1 = (SPIx->CTRL1&~ 0xffff) | ( SPI_Config.BAUD_FPCLKdivx << 4);
|
SPIx->CTRL1 = (SPIx->CTRL1&~ 0xffff) | ( SPI_Config.BAUD_FPCLKdivx << 4);
|
||||||
SPIx->CTRL1 |= (SPI_Config.SPI_MODE << 2);
|
SPIx->CTRL1 |= (SPI_Config.SPI_MODE << 2);
|
||||||
SPIx->CTRL1 |= (SPI_Config.SPI_TRANS_MODE << 12 );
|
SPIx->CTRL1 |= (SPI_Config.SPI_TRANS_MODE << 12 );
|
||||||
SPIx->CTRL1 &=~ (0x1 << 7); //帧格式默认大端模式
|
SPIx->CTRL1 &=~ (0x1 << 7); //???????????
|
||||||
SPIx->CTRL1 &=~ (0x1 << 8); //帧格式默认大端模式
|
SPIx->CTRL1 &=~ (0x1 << 8); //???????????
|
||||||
SPIx->CTRL1 &=~ (1 << 11);
|
SPIx->CTRL1 &=~ (1 << 11);
|
||||||
SPIx->CTRL1 |= (1 << 11) ; // 默认硬件生成NSS
|
SPIx->CTRL1 |= (1 << 11) ; // ??????????NSS
|
||||||
|
|
||||||
if(SPI_Config.MS_SEL == MASTER)
|
if(SPI_Config.MS_SEL == MASTER)
|
||||||
{
|
{
|
||||||
|
|
@ -169,12 +169,12 @@ uint8_t SPI_Config_init(CMSDK_SPI_TypeDef* SPIx ,
|
||||||
SPIx->CTRL1 &=~ (1<<1);
|
SPIx->CTRL1 &=~ (1<<1);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
3、写SPI_CTRL2寄存器
|
3??<EFBFBD><EFBFBD>SPI_CTRL2?????
|
||||||
(1)配置CHAR_LEN[3:0]位来选择传输的数据长度
|
??1??????CHAR_LEN[3:0]<EFBFBD><EFBFBD>???????????????
|
||||||
(2)选择“NSS端口” NSS0_EN, NSS1_EN, NSS2_EN
|
??2?????NSS???? NSS0_EN, NSS1_EN, NSS2_EN
|
||||||
(3)通过配置主机选择合适的RX数据采集阶段 SAMP_PHASE(1:0)位
|
??3????????????????????RX????????? SAMP_PHASE(1:0)<EFBFBD><EFBFBD>
|
||||||
(4)通过配置C2T_DELAY和T2C_DELAY位,可以根据从设备的需求选择合适的C2T/T2C延迟
|
??4?????????C2T_DELAY??T2C_DELAY<EFBFBD><EFBFBD>???????????<EFBFBD><EFBFBD>?????????????C2T/T2C???
|
||||||
(5)通过配置TXDMA_EN和RXDMA_EN位使能或使能FIFO模式的TX/RX DMA。
|
??5?????????TXDMA_EN??RXDMA_EN<EFBFBD><EFBFBD>???????FIFO????TX/RX DMA??
|
||||||
*/
|
*/
|
||||||
SPIx->CTRL2 = (SPIx->CTRL2&~ 0xffff);
|
SPIx->CTRL2 = (SPIx->CTRL2&~ 0xffff);
|
||||||
if(SPI_Config.CHAR_LEN < 4)
|
if(SPI_Config.CHAR_LEN < 4)
|
||||||
|
|
@ -190,22 +190,22 @@ uint8_t SPI_Config_init(CMSDK_SPI_TypeDef* SPIx ,
|
||||||
|
|
||||||
}
|
}
|
||||||
SPI_NSS_CHANNEL(SPIx ,SPI_Config.NSSx ,ENABLE);
|
SPI_NSS_CHANNEL(SPIx ,SPI_Config.NSSx ,ENABLE);
|
||||||
//rx读采集相位, 仅仅在主模式下有效,默认选normal
|
//rx???????<3F><>?? ??????????????<3F><>??????normal
|
||||||
//C2T_DELAY ,仅在主模式下有效
|
//C2T_DELAY ,????????????<3F><>
|
||||||
//T2C_DELAY, 仅在主模式下有效
|
//T2C_DELAY, ????????????<3F><>
|
||||||
if(SPI_Config.MS_SEL == MASTER)
|
if(SPI_Config.MS_SEL == MASTER)
|
||||||
{
|
{
|
||||||
SPIx->CTRL2 |= (SPI_Config.SAMP_PHASE << 6);
|
SPIx->CTRL2 |= (SPI_Config.SAMP_PHASE << 6);
|
||||||
//T2C 是Transmit-end-to-chip-inactive 的延迟时间,默认为1T SCK
|
//T2C ??Transmit-end-to-chip-inactive ????????????1T SCK
|
||||||
//C2T 是Chip-select-active-to-transmit-start 的时间 默认1T SCK ,这里对这两参数没做设置
|
//C2T ??Chip-select-active-to-transmit-start ????? ???1T SCK ,????????????????????
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
4、写FIFO 寄存器
|
4??<EFBFBD><EFBFBD>FIFO ?????
|
||||||
(1)配置TX_FIFO_TH或RX_FIFO_TH来定义触发级别阈值
|
??1??????TX_FIFO_TH??RX_FIFO_TH?????<EFBFBD><EFBFBD>?????????
|
||||||
(2)通过配置TX_FIFO_CLR和RX_FIFO_CLR位清除TX/RX FIFO
|
??2?????????TX_FIFO_CLR??RX_FIFO_CLR<EFBFBD><EFBFBD>???TX/RX FIFO
|
||||||
(3)通过配置fif_en位使能或禁用FIFO模式
|
??3?????????fif_en<EFBFBD><EFBFBD>???????FIFO??
|
||||||
*/
|
*/
|
||||||
SPIx->FCR |= (FIFO_Struct.TX_FIFO_TH << 9 );
|
SPIx->FCR |= (FIFO_Struct.TX_FIFO_TH << 9 );
|
||||||
SPIx->FCR |= (FIFO_Struct.RX_FIFO_TH << 2 );
|
SPIx->FCR |= (FIFO_Struct.RX_FIFO_TH << 2 );
|
||||||
|
|
@ -217,7 +217,7 @@ uint8_t SPI_Config_init(CMSDK_SPI_TypeDef* SPIx ,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------SPI启动和停止-------------------------------------------------*/
|
/*---------------------------------------------SPI????????-------------------------------------------------*/
|
||||||
uint8_t SPI_START(CMSDK_SPI_TypeDef* SPIx )
|
uint8_t SPI_START(CMSDK_SPI_TypeDef* SPIx )
|
||||||
{
|
{
|
||||||
SPIx->CTRL1 |= (1);
|
SPIx->CTRL1 |= (1);
|
||||||
|
|
@ -230,7 +230,7 @@ uint8_t SPI_STOP(CMSDK_SPI_TypeDef* SPIx)
|
||||||
{
|
{
|
||||||
if(SPI_FIFO_STATE(SPIx) == 1)
|
if(SPI_FIFO_STATE(SPIx) == 1)
|
||||||
{
|
{
|
||||||
//读 RX的FIFO 直到 FIFO长度为 0
|
//?? RX??FIFO ??? FIFO????? 0
|
||||||
while((RX_FIFO_LEN(SPIx) != 0) || (BUSY_STATE(SPIx) == BUSY))
|
while((RX_FIFO_LEN(SPIx) != 0) || (BUSY_STATE(SPIx) == BUSY))
|
||||||
{
|
{
|
||||||
//save_data = READ_SPI_RCVBuff(SPIx);
|
//save_data = READ_SPI_RCVBuff(SPIx);
|
||||||
|
|
@ -249,7 +249,7 @@ uint8_t SPI_STOP(CMSDK_SPI_TypeDef* SPIx)
|
||||||
{
|
{
|
||||||
while((TX_FIFO_LEN(SPIx)!= 0) || (BUSY_STATE(SPIx) == BUSY));
|
while((TX_FIFO_LEN(SPIx)!= 0) || (BUSY_STATE(SPIx) == BUSY));
|
||||||
SPIx->CTRL1 &=~ (1);
|
SPIx->CTRL1 &=~ (1);
|
||||||
//读 RX的FIFO 直到 FIFO长度为 0
|
//?? RX??FIFO ??? FIFO????? 0
|
||||||
while(RX_FIFO_LEN(SPIx) != 0)
|
while(RX_FIFO_LEN(SPIx) != 0)
|
||||||
{
|
{
|
||||||
uint16_t save_data = READ_SPI_RCVBuff(SPIx);
|
uint16_t save_data = READ_SPI_RCVBuff(SPIx);
|
||||||
|
|
@ -264,21 +264,21 @@ uint8_t SPI_STOP(CMSDK_SPI_TypeDef* SPIx)
|
||||||
return (uint8_t)(SPIx->CTRL1*0x1);
|
return (uint8_t)(SPIx->CTRL1*0x1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-----------------------------------------读 / 写 SPI BUFFER的数据-------------------------------------------------*/
|
/*-----------------------------------------?? / <20><> SPI BUFFER??????-------------------------------------------------*/
|
||||||
//读被接收的数据 最多16bits
|
//????????????? ???16bits
|
||||||
uint16_t READ_SPI_RCVBuff(CMSDK_SPI_TypeDef* SPIx)
|
uint16_t READ_SPI_RCVBuff(CMSDK_SPI_TypeDef* SPIx)
|
||||||
{
|
{
|
||||||
return (uint16_t)(SPIx->RBR & 0xffff);
|
return (uint16_t)(SPIx->RBR & 0xffff);
|
||||||
}
|
}
|
||||||
|
|
||||||
//写数据
|
//<EFBFBD><EFBFBD>????
|
||||||
void WRITE_SPI_THRBuff(CMSDK_SPI_TypeDef* SPIx,uint8_t data)
|
void WRITE_SPI_THRBuff(CMSDK_SPI_TypeDef* SPIx,uint8_t data)
|
||||||
{
|
{
|
||||||
SPIx->THR = data;
|
SPIx->THR = data;
|
||||||
while(BUSY_STATE(SPIx) == BUSY);
|
while(BUSY_STATE(SPIx) == BUSY);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*------------------------------------------------------SPI中断------------------------------------------------------*/
|
/*------------------------------------------------------SPI?<3F><>?------------------------------------------------------*/
|
||||||
uint8_t SPI_INT_SET(IRQn_Type IRQn, bool SPI_INT_ENABLE, uint8_t SPI_INT_BIT_SET)
|
uint8_t SPI_INT_SET(IRQn_Type IRQn, bool SPI_INT_ENABLE, uint8_t SPI_INT_BIT_SET)
|
||||||
{
|
{
|
||||||
NVIC_DisableIRQ(IRQn);
|
NVIC_DisableIRQ(IRQn);
|
||||||
|
|
@ -303,22 +303,22 @@ uint8_t SPI_INT_SET(IRQn_Type IRQn, bool SPI_INT_ENABLE, uint8_t SPI_INT_BIT_SET
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//中断处理函数
|
//?<3F><>????????
|
||||||
/*
|
/*
|
||||||
中断有如下类型:
|
?<EFBFBD><EFBFBD>????????????
|
||||||
1、发送部分有 下溢 中断(发送数据没有啦)
|
1??????????? ???? ?<EFBFBD><EFBFBD>?????????????????
|
||||||
2、接收部分有 溢出 中断(接满啦)
|
2??????????? ??? ?<EFBFBD><EFBFBD>??????????
|
||||||
3、收发完成中断?
|
3?????????<EFBFBD><EFBFBD>??
|
||||||
4、发送缓冲区空 中断
|
4????????????? ?<EFBFBD><EFBFBD>?
|
||||||
5、接收缓冲区非空 中断
|
5?????????????? ?<EFBFBD><EFBFBD>?
|
||||||
*/
|
*/
|
||||||
void SPI1_Handler(void)
|
void SPI1_Handler(void)
|
||||||
{
|
{
|
||||||
NVIC_ClearPendingIRQ(SPI1_IRQn);
|
NVIC_ClearPendingIRQ(SPI1_IRQn);
|
||||||
uint8_t read_fifo=0;
|
uint8_t read_fifo=0;
|
||||||
if((CMSDK_SPI1->INTSTATUS & 0x10 )== UNDERRUN_INT) //下溢-发送时发送数据已为空时触发
|
if((CMSDK_SPI1->INTSTATUS & 0x10 )== UNDERRUN_INT) //????-???????????????????????
|
||||||
{
|
{
|
||||||
CMSDK_SPI1->INTCLEAR |= (1<<4); //清除中断
|
CMSDK_SPI1->INTCLEAR |= (1<<4); //????<3F><>?
|
||||||
}
|
}
|
||||||
if((CMSDK_SPI1->INTSTATUS & 0x8) ==OVERRUN_INT)
|
if((CMSDK_SPI1->INTSTATUS & 0x8) ==OVERRUN_INT)
|
||||||
{
|
{
|
||||||
|
|
@ -338,7 +338,6 @@ void SPI1_Handler(void)
|
||||||
while(!RX_FIFO_EMPTY(CMSDK_SPI1))
|
while(!RX_FIFO_EMPTY(CMSDK_SPI1))
|
||||||
{
|
{
|
||||||
read_fifo = READ_SPI_RCVBuff(CMSDK_SPI1);
|
read_fifo = READ_SPI_RCVBuff(CMSDK_SPI1);
|
||||||
printf("masterrcv:%d\n",read_fifo);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -349,9 +348,9 @@ void SPI0_Handler(void)
|
||||||
{
|
{
|
||||||
NVIC_ClearPendingIRQ(SPI0_IRQn);
|
NVIC_ClearPendingIRQ(SPI0_IRQn);
|
||||||
uint8_t read_fifo=0;
|
uint8_t read_fifo=0;
|
||||||
if((CMSDK_SPI0->INTSTATUS & 0x10 )== UNDERRUN_INT) //下溢-发送时发送数据已为空时触发
|
if((CMSDK_SPI0->INTSTATUS & 0x10 )== UNDERRUN_INT) //????-???????????????????????
|
||||||
{
|
{
|
||||||
CMSDK_SPI0->INTCLEAR |= (1<<4); //清除中断
|
CMSDK_SPI0->INTCLEAR |= (1<<4); //????<3F><>?
|
||||||
}
|
}
|
||||||
if((CMSDK_SPI0->INTSTATUS & 0x8) ==OVERRUN_INT)
|
if((CMSDK_SPI0->INTSTATUS & 0x8) ==OVERRUN_INT)
|
||||||
{
|
{
|
||||||
|
|
@ -371,7 +370,6 @@ void SPI0_Handler(void)
|
||||||
while(!RX_FIFO_EMPTY(CMSDK_SPI0))
|
while(!RX_FIFO_EMPTY(CMSDK_SPI0))
|
||||||
{
|
{
|
||||||
read_fifo = READ_SPI_RCVBuff(CMSDK_SPI0);
|
read_fifo = READ_SPI_RCVBuff(CMSDK_SPI0);
|
||||||
printf("masterrcv:%d\n",read_fifo);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#include "ENS1_TIMER.h"
|
#include "ENS1_TIMER.h"
|
||||||
#include "ENS_CURRENT_CALIBRATION.h"
|
#include "ENS_CURRENT_CALIBRATION.h"
|
||||||
#include "ENS1_CLOCK.h"
|
#include "ENS1_CLOCK.h"
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
void TIMER0_Init(uint32_t Int_Period) //定时器中断周期 单位ms
|
void TIMER0_Init(uint32_t Int_Period) //定时器中断周期 单位ms
|
||||||
{
|
{
|
||||||
|
|
@ -9,12 +10,9 @@ void TIMER0_Init(uint32_t Int_Period) //定时器中断周期 单位ms
|
||||||
NVIC_ClearPendingIRQ(TIMER0_IRQn);
|
NVIC_ClearPendingIRQ(TIMER0_IRQn);
|
||||||
|
|
||||||
uint32_t reload_value = (uint32_t)(APB_Clock_Freq / 1000 * Int_Period);
|
uint32_t reload_value = (uint32_t)(APB_Clock_Freq / 1000 * Int_Period);
|
||||||
printf("TIMER0重装载值: %d\n", reload_value);
|
|
||||||
|
|
||||||
CMSDK_timer_Init(CMSDK_TIMER0, reload_value, 1); //
|
CMSDK_timer_Init(CMSDK_TIMER0, reload_value, 1); //
|
||||||
NVIC_EnableIRQ(TIMER0_IRQn);
|
NVIC_EnableIRQ(TIMER0_IRQn);
|
||||||
|
|
||||||
printf("TIMER0_Init完成,中断周期: %d ms\n", Int_Period);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TIMER1_Init(uint32_t Int_Period)
|
void TIMER1_Init(uint32_t Int_Period)
|
||||||
|
|
|
||||||
|
|
@ -35,13 +35,18 @@ ENS1 uart特性说明
|
||||||
#include "ENS1_GPIO.h"
|
#include "ENS1_GPIO.h"
|
||||||
UART_FifoStructrue UART1_Fifo = {
|
UART_FifoStructrue UART1_Fifo = {
|
||||||
.level = bytes_8 ,
|
.level = bytes_8 ,
|
||||||
.DMA_Enable = 0 ,
|
.DMA_Enable =0 ,
|
||||||
.FIFO_Enable = 1 ,
|
.FIFO_Enable =1 ,
|
||||||
};
|
};
|
||||||
UART_InitStructure UART1_Init = {
|
UART_InitStructure UART1_Init = {
|
||||||
.UART_BaudRate = 115200 , //计算出来的DLL DLH不为整数, 1、需要校准RC精确度,2、需要调整此处的波特率
|
.UART_BaudRate = 110000 , //计算出来的DLL DLH不为整数, 1、需要校准RC精确度,2、需要调整此处的波特率
|
||||||
.UART_HardwareFlowControl = 0,
|
.UART_HardwareFlowControl =0,
|
||||||
.FifoSetting = &UART1_Fifo ,
|
.FifoSetting = &UART1_Fifo ,
|
||||||
|
.stop_len = StopLen_1, //固定停止位1位
|
||||||
|
.Word_len = WordLen_8, //数据位8位
|
||||||
|
.Stick_EN = Stick_RESET, //禁用固定奇偶校验
|
||||||
|
.Even_EN = Even_SET, //奇偶校验选择
|
||||||
|
.Parity_EN = Parity_RESET, //禁用奇偶检验
|
||||||
};
|
};
|
||||||
UART_ITStructure UART1_ITSet = {
|
UART_ITStructure UART1_ITSet = {
|
||||||
.UartIntModel = RLSI_EN | RDAI_EN ,
|
.UartIntModel = RLSI_EN | RDAI_EN ,
|
||||||
|
|
@ -185,19 +190,36 @@ void UART_Init(CMSDK_UART_TypeDef *CMSDK_UART, UART_InitStructure* uart_paraX){
|
||||||
{
|
{
|
||||||
overSamp_mode = 13;
|
overSamp_mode = 13;
|
||||||
}
|
}
|
||||||
|
//波特率校准,反推处DLL和DLH,(外设时钟主频/设置波特率/过采样模式)-1,
|
||||||
divisor_value = (uint16_t)((uint32_t)(APB_Clock_Freq / uart_paraX->UART_BaudRate / overSamp_mode) - 1);
|
divisor_value = (uint16_t)((uint32_t)(APB_Clock_Freq / uart_paraX->UART_BaudRate / overSamp_mode) - 1);
|
||||||
CMSDK_UART->DLL = (uint8_t)(divisor_value & 0x0011);
|
CMSDK_UART->DLL = (uint8_t)(divisor_value & 0x00FF);
|
||||||
CMSDK_UART->DLH = (uint8_t)((divisor_value & 0x1100)>>8);
|
CMSDK_UART->DLH = (uint8_t)((divisor_value & 0xFF00)>>8);
|
||||||
|
|
||||||
/*FCR配置 FIFO control*/
|
/*FCR配置 FIFO control*/
|
||||||
CMSDK_UART->FCR |= (uart_paraX->FifoSetting->level <<6);
|
CMSDK_UART->FCR |= (uart_paraX->FifoSetting->level <<6);//接收多少字节后触发中断
|
||||||
if(uart_paraX->FifoSetting->FIFO_Enable == 1)
|
if(uart_paraX->FifoSetting->FIFO_Enable == 1)
|
||||||
{
|
{
|
||||||
CMSDK_UART->FCR |= (1);
|
CMSDK_UART->FCR |= (1);
|
||||||
}
|
}
|
||||||
|
//配置停止位
|
||||||
|
CMSDK_UART->LCR &= ~(0x01 << 2);
|
||||||
|
CMSDK_UART->LCR |= uart_paraX->stop_len<<2;
|
||||||
|
|
||||||
/*LCR配置,不做配置,默认N 8 1 */
|
//配置数据位
|
||||||
|
CMSDK_UART->LCR &= ~(0x03 << 0);
|
||||||
|
CMSDK_UART->LCR |= uart_paraX->Word_len<<0;
|
||||||
|
|
||||||
|
//配置是否启用校验位
|
||||||
|
CMSDK_UART->LCR &= ~(0x01 << 3);
|
||||||
|
CMSDK_UART->LCR |= uart_paraX->Parity_EN<<3;
|
||||||
|
|
||||||
|
//启用校验位
|
||||||
|
if(uart_paraX->Parity_EN==Parity_SET)
|
||||||
|
{
|
||||||
|
CMSDK_UART->LCR &= ~(0x03 << 4);
|
||||||
|
CMSDK_UART->LCR |= uart_paraX->Even_EN<<4;
|
||||||
|
CMSDK_UART->LCR |= uart_paraX->Stick_EN<<5;
|
||||||
|
}
|
||||||
|
|
||||||
/*MCR自动流控配置*/
|
/*MCR自动流控配置*/
|
||||||
if(uart_paraX->UART_HardwareFlowControl == 1)
|
if(uart_paraX->UART_HardwareFlowControl == 1)
|
||||||
|
|
@ -239,6 +261,18 @@ unsigned char UartPutc(CMSDK_UART_TypeDef *CMSDK_UART ,unsigned char my_ch)
|
||||||
WRITE_UART_THRBuff(CMSDK_UART,my_ch);
|
WRITE_UART_THRBuff(CMSDK_UART,my_ch);
|
||||||
return (my_ch);
|
return (my_ch);
|
||||||
}
|
}
|
||||||
|
//串口发送一定字节的数据
|
||||||
|
void Uart_Send(CMSDK_UART_TypeDef *CMSDK_UART ,uint8_t *data, uint8_t len)
|
||||||
|
{
|
||||||
|
uint8_t t;
|
||||||
|
for(t=0;t<len;t++) //循环发送数据
|
||||||
|
{
|
||||||
|
while(UARTLine_THREmpty(CMSDK_UART) == 0x0);//等待发送结束
|
||||||
|
WRITE_UART_THRBuff(CMSDK_UART,data[t]);
|
||||||
|
}
|
||||||
|
while(UARTLine_THREmpty(CMSDK_UART) == 0x0);//等待发送结束
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,12 @@ static EMS_Config_TypeDef g_ems_config = {0};
|
||||||
static volatile uint8_t g_ems_running = 0;
|
static volatile uint8_t g_ems_running = 0;
|
||||||
static volatile uint32_t g_ems_count = 0;
|
static volatile uint32_t g_ems_count = 0;
|
||||||
|
|
||||||
|
// 缓进缓出控制变量
|
||||||
|
static volatile uint16_t g_current_intensity = 0; // 当前强度
|
||||||
|
static volatile uint8_t g_ramp_phase = 0; // 渐进阶段:0=缓进, 1=保持, 2=缓出
|
||||||
|
static volatile uint32_t g_wave_counter = 0; // 方波周期计数器
|
||||||
|
static volatile uint32_t g_ramp_step_counter = 0; // 缓进步进计数器
|
||||||
|
|
||||||
/* --------------------------------------------------------------- */
|
/* --------------------------------------------------------------- */
|
||||||
/* 波形生成器驱动器A正弦波测试 */
|
/* 波形生成器驱动器A正弦波测试 */
|
||||||
/* --------------------------------------------------------------- */
|
/* --------------------------------------------------------------- */
|
||||||
|
|
@ -35,81 +41,84 @@ int wavegen_driverA_sine_test(CMSDK_WAVE_GEN_TypeDef *CMSDK_WAVEGEN_DRVA, uint16
|
||||||
int return_val = 0;
|
int return_val = 0;
|
||||||
int err_code = 0;
|
int err_code = 0;
|
||||||
|
|
||||||
puts("\n驱动器A正弦波测试\n");
|
printf("\n驱动器A正弦波测试\n");
|
||||||
|
|
||||||
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_REST_T_REG = 100; //死区时间10ms //交替模式下,死区时间失效,即使CONFIG_REG使能了死区时间也无效
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_REST_T_REG = 100; // 死区时间10ms //交替模式下,死区时间失效,即使CONFIG_REG使能了死区时间也无效
|
||||||
//CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_SILENT_T_REG = 200; //静默时间20ms
|
// CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_SILENT_T_REG = 200; //静默时间20ms
|
||||||
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_CLK_FREQ_REG = 0x00000020; //32MHz ==PCLK
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_CLK_FREQ_REG = 0x00000020; // 32MHz ==PCLK
|
||||||
|
|
||||||
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_CLK_FREQ_REG = 32; //32MHz ==PCLK //MHz为单位
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_CLK_FREQ_REG = 32; // 32MHz ==PCLK //MHz为单位
|
||||||
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_HLF_WAVE_PRD_REG = 100; //正半周期脉宽10ms,有交替方波
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_HLF_WAVE_PRD_REG = 100; // 正半周期脉宽10ms,有交替方波
|
||||||
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_NEG_HLF_WAVE_PRD_REG = 100; //负半周期脉宽10ms,无交替方波
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_NEG_HLF_WAVE_PRD_REG = 100; // 负半周期脉宽10ms,无交替方波
|
||||||
|
|
||||||
#if 1//无需静默时间
|
#if 1 // 无需静默时间
|
||||||
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_CONFIG_REG = 0x00000050; //bit 0:rest enable , 正半周期和负半周期中间的休息时间
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_CONFIG_REG = 0x00000050; // bit 0:rest enable , 正半周期和负半周期中间的休息时间
|
||||||
//1:negative enable , 负半周期发生使能,如果不使能,则没有负半周期的波形(注意交替模式只会对正半周期起作用)
|
// 1:negative enable , 负半周期发生使能,如果不使能,则没有负半周期的波形(注意交替模式只会对正半周期起作用)
|
||||||
//2: silent enable , 负半周期结束后的静默时间
|
// 2: silent enable , 负半周期结束后的静默时间
|
||||||
//3: source B enable ,负脉宽方向使能位,1负脉宽在负半周期,0负脉宽在正半周期
|
// 3: source B enable ,负脉宽方向使能位,1负脉宽在负半周期,0负脉宽在正半周期
|
||||||
|
|
||||||
//4: alternating the positive side ,正极交替产生包络
|
// 4: alternating the positive side ,正极交替产生包络
|
||||||
//5: continue mode ,连续模式
|
// 5: continue mode ,连续模式
|
||||||
//6: multi-electrode ,多电极模式
|
// 6: multi-electrode ,多电极模式
|
||||||
#else //需要静默时间
|
#else // 需要静默时间
|
||||||
/*交替模式下config寄存器说明:
|
/*交替模式下config寄存器说明:
|
||||||
正脉宽交替,无负脉宽,无死区时间,无静默时间:0x50 或 0x51 或 0x58 或 0x59
|
正脉宽交替,无负脉宽,无死区时间,无静默时间:0x50 或 0x51 或 0x58 或 0x59
|
||||||
正脉宽交替,无死区时间,无负脉宽,有静默时间:0x54 或 0x55 或 0x5C 或 0x5D
|
正脉宽交替,无死区时间,无负脉宽,有静默时间:0x54 或 0x55 或 0x5C 或 0x5D
|
||||||
正脉宽交替,无死区时间,负脉宽不交替但有波形,无静默时间 :0x5A 或 0x5B
|
正脉宽交替,无死区时间,负脉宽不交替但有波形,无静默时间 :0x5A 或 0x5B
|
||||||
正脉宽交替,无死区时间,负脉宽不交替但有波形且波形在正脉宽上(因为源B失能了),无静默时间 :0x52 或 0x53
|
正脉宽交替,无死区时间,负脉宽不交替但有波形且波形在正脉宽上(因为源B失能了),无静默时间 :0x52 或 0x53
|
||||||
正脉宽交替,无死区时间,负脉宽不交替但有波形且波形在正脉宽上(因为源B失能了),有静默时间 :0x56 或 0x57
|
正脉宽交替,无死区时间,负脉宽不交替但有波形且波形在正脉宽上(因为源B失能了),有静默时间 :0x56 或 0x57
|
||||||
正脉宽交替,无死区时间,负脉宽不交替但有波形,有静默时间 : 0x5E 或 0x5F
|
正脉宽交替,无死区时间,负脉宽不交替但有波形,有静默时间 : 0x5E 或 0x5F
|
||||||
*/
|
*/
|
||||||
// CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_CONFIG_REG = 0x5F; //bit 0:rest enable , 正半周期和负半周期中间的死区时间
|
// CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_CONFIG_REG = 0x5F; //bit 0:rest enable , 正半周期和负半周期中间的死区时间
|
||||||
//1:negative enable , 负半周期发生使能,如果不使能,则没有负半周期的波形
|
// 1:negative enable , 负半周期发生使能,如果不使能,则没有负半周期的波形
|
||||||
//2: silent enable , 负半周期结束后的静默时间
|
// 2: silent enable , 负半周期结束后的静默时间
|
||||||
//3: source B enable
|
// 3: source B enable
|
||||||
//4: alternating the positive side ,正极交替产生包络
|
// 4: alternating the positive side ,正极交替产生包络
|
||||||
//5: continue mode ,连续模式
|
// 5: continue mode ,连续模式
|
||||||
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_CONFIG_REG = 0x34; //静默时间、交替模式和多电极使能 //6: multi-electrode ,多电极模式
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_CONFIG_REG = 0x34; // 静默时间、交替模式和多电极使能 //6: multi-electrode ,多电极模式
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
CMSDK_WAVEGEN_DRVA ->WAVE_GEN_DRV_ISEL_REG = 0x04; // 总电流 = 单元电流ISEL * WAVE_GEN_DRV_IN_WAVE_REG
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_ISEL_REG = 0x04; // 总电流 = 单元电流ISEL * WAVE_GEN_DRV_IN_WAVE_REG
|
||||||
|
|
||||||
for(int i=0; i<64; i++){
|
for (int i = 0; i < 64; i++)
|
||||||
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_IN_WAVE_ADDR_REG = i;
|
{
|
||||||
//CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_IN_WAVE_REG = sine_data[i]; //正弦波数据数组,根据数组中的点描绘正半周期的波形
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_IN_WAVE_ADDR_REG = i;
|
||||||
// CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_IN_WAVE_REG = saw_data[i]; //三角波数据
|
// CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_IN_WAVE_REG = sine_data[i]; //正弦波数据数组,根据数组中的点描绘正半周期的波形
|
||||||
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_IN_WAVE_REG = incount; //方波数据(固定值0x80)
|
// CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_IN_WAVE_REG = saw_data[i]; //三角波数据
|
||||||
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_IN_WAVE_REG = incount; // 方波数据(固定值0x80)
|
||||||
}
|
}
|
||||||
|
|
||||||
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_ALT_LIM_REG = 3200;// 3200 需要设置一个正半周期下需要再生成多少个周期波形。设置10kHz=0.1ms=100us,100us=A*(1/32us),所以A=3200。
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_ALT_LIM_REG = 3200; // 3200 需要设置一个正半周期下需要再生成多少个周期波形。设置10kHz=0.1ms=100us,100us=A*(1/32us),所以A=3200。
|
||||||
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_ALT_SILENT_LIM_REG = 0; // 交替后静默的时钟数(无死区时间设置)。在这种情况下,驱动器B连续交替。//包络下波形的静默时间
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_ALT_SILENT_LIM_REG = 0; // 交替后静默的时钟数(无死区时间设置)。在这种情况下,驱动器B连续交替。//包络下波形的静默时间
|
||||||
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_DELAY_LIM_REG = 0x00000000; // 延迟时钟数
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_DELAY_LIM_REG = 0x00000000; // 延迟时钟数
|
||||||
|
|
||||||
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_NEG_SCALE_REG = 0x00000001; //负半周期幅值倍乘系数,如超过255,则从0开始增长
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_NEG_SCALE_REG = 0x00000001; // 负半周期幅值倍乘系数,如超过255,则从0开始增长
|
||||||
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_NEG_OFFSET_REG = 0x00000000; //负半周期幅值偏移量,如超过255,则从0开始增长,
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_NEG_OFFSET_REG = 0x00000000; // 负半周期幅值偏移量,如超过255,则从0开始增长,
|
||||||
//如正半周期幅值为250,此处设置为10,则负半周期幅值为5 !!!
|
// 如正半周期幅值为250,此处设置为10,则负半周期幅值为5 !!!
|
||||||
|
|
||||||
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_INT_REG = 0x0;// 中断寄存器设置为0
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_INT_REG = 0x0; // 中断寄存器设置为0
|
||||||
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_CTRL_REG = 0x00000001; //使能驱动器
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_CTRL_REG = 0x00000001; // 使能驱动器
|
||||||
|
|
||||||
/* 生成返回值 */
|
/* 生成返回值 */
|
||||||
if (err_code != 0) {
|
if (err_code != 0)
|
||||||
puts("\n错误 : 驱动器A测试失败\n");
|
{
|
||||||
return_val = 1;
|
printf("\n错误 : 驱动器A测试失败\n");
|
||||||
err_code = 0;
|
return_val = 1;
|
||||||
|
err_code = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return(return_val);
|
return (return_val);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wavegen_Stop(CMSDK_WAVE_GEN_TypeDef *CMSDK_WAVEGEN_DRVA)
|
void wavegen_Stop(CMSDK_WAVE_GEN_TypeDef *CMSDK_WAVEGEN_DRVA)
|
||||||
{
|
{
|
||||||
CMSDK_WAVEGEN_DRVA ->WAVE_GEN_DRV_ISEL_REG = 0; //范围 0x00 - 0x07
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_ISEL_REG = 0; // 范围 0x00 - 0x07
|
||||||
|
|
||||||
for(int i=0; i<64; i++){
|
for (int i = 0; i < 64; i++)
|
||||||
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_IN_WAVE_ADDR_REG = i;
|
{
|
||||||
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_IN_WAVE_REG = 0; //最大值0xff
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_IN_WAVE_ADDR_REG = i;
|
||||||
|
CMSDK_WAVEGEN_DRVA->WAVE_GEN_DRV_IN_WAVE_REG = 0; // 最大值0xff
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -124,12 +133,14 @@ void wavegen_Init(void)
|
||||||
// CMSDK_SYSCON->HSI_CTRL = (CMSDK_SYSCON->HSI_CTRL & ~CMSDK_SYSCON_HSI_FREQ_Msk) | (0x3 << CMSDK_SYSCON_HSI_FREQ_Pos); //HSI=32MHz
|
// CMSDK_SYSCON->HSI_CTRL = (CMSDK_SYSCON->HSI_CTRL & ~CMSDK_SYSCON_HSI_FREQ_Msk) | (0x3 << CMSDK_SYSCON_HSI_FREQ_Pos); //HSI=32MHz
|
||||||
|
|
||||||
// 使能UART和WAVE_GEN外设时钟(不覆盖TIMER0时钟)
|
// 使能UART和WAVE_GEN外设时钟(不覆盖TIMER0时钟)
|
||||||
CMSDK_SYSCON->APB_CLKEN |= 0x1003|0x4000; // 使用|=而不是=,避免覆盖其他时钟使能
|
CMSDK_SYSCON->APB_CLKEN |= 0x1003 | 0x4000; // 使用|=而不是=,避免覆盖其他时钟使能
|
||||||
|
|
||||||
// 升压电压选择
|
// 升压电压选择
|
||||||
boost_voltage_select_26V();
|
//boost_voltage_select_11V();
|
||||||
|
//boost_voltage_select_15V();
|
||||||
puts("ENS1 - WAVE_GENERATOR_DRIVER_A_Test - $Revision: R001\n");
|
//boost_voltage_select_26V();
|
||||||
|
//boost_voltage_select_45V();
|
||||||
|
boost_voltage_select_55V();
|
||||||
}
|
}
|
||||||
|
|
||||||
// 启动波形生成器
|
// 启动波形生成器
|
||||||
|
|
@ -137,12 +148,26 @@ void wavegen_Start(void)
|
||||||
{
|
{
|
||||||
g_ems_running = 1;
|
g_ems_running = 1;
|
||||||
g_ems_count = 0;
|
g_ems_count = 0;
|
||||||
|
|
||||||
|
// 初始化缓进缓出控制
|
||||||
|
if (g_ems_config.enable_ramp)
|
||||||
|
{
|
||||||
|
g_current_intensity = 0; // 从0开始
|
||||||
|
g_ramp_phase = 0; // 缓进阶段
|
||||||
|
g_wave_counter = 0; // 重置方波计数器
|
||||||
|
g_ramp_step_counter = 0; // 重置步进计数器
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_current_intensity = g_ems_config.intensity; // 直接使用设定强度
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 电刺激参数配置
|
// 电刺激参数配置
|
||||||
void EMS_Configure(EMS_Config_TypeDef *config)
|
void EMS_Configure(EMS_Config_TypeDef *config)
|
||||||
{
|
{
|
||||||
if(config != NULL) {
|
if (config != NULL)
|
||||||
|
{
|
||||||
g_ems_config = *config;
|
g_ems_config = *config;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -151,16 +176,18 @@ void EMS_Configure(EMS_Config_TypeDef *config)
|
||||||
void EMS_Start(void)
|
void EMS_Start(void)
|
||||||
{
|
{
|
||||||
wavegen_Start();
|
wavegen_Start();
|
||||||
printf("电刺激已启动\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 停止电刺激
|
// 停止电刺激
|
||||||
void EMS_Stop(void)
|
void EMS_Stop(void)
|
||||||
{
|
{
|
||||||
g_ems_running = 0;
|
g_ems_running = 0;
|
||||||
g_ems_count = 0; // 重置计数器
|
g_ems_count = 0; // 重置计数器
|
||||||
|
g_current_intensity = 0; // 重置强度
|
||||||
|
g_ramp_phase = 0; // 重置渐进阶段
|
||||||
|
g_wave_counter = 0; // 重置方波计数器
|
||||||
|
g_ramp_step_counter = 0; // 重置步进计数器
|
||||||
wavegen_Stop(WAVE_GEN_DRVA_BLK0);
|
wavegen_Stop(WAVE_GEN_DRVA_BLK0);
|
||||||
printf("电刺激已停止\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新电刺激强度
|
// 更新电刺激强度
|
||||||
|
|
@ -169,23 +196,125 @@ void EMS_UpdateIntensity(uint16_t intensity)
|
||||||
g_ems_config.intensity = intensity;
|
g_ems_config.intensity = intensity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 缓进缓出处理函数(在电刺激处理中调用)
|
||||||
|
void EMS_Process_Ramp(void)
|
||||||
|
{
|
||||||
|
if (!g_ems_config.enable_ramp || !g_ems_running)
|
||||||
|
{
|
||||||
|
return; // 如果未启用缓进缓出或未运行,直接返回
|
||||||
|
}
|
||||||
|
|
||||||
|
// 计算每个强度步进需要的方波周期数
|
||||||
|
// 2秒 = 2000000微秒,每个方波周期100微秒,所以2秒内有20000个方波周期
|
||||||
|
// 需要从0增加到128,所以每156.25个方波周期增加1个强度单位
|
||||||
|
uint32_t waves_per_step = 0;
|
||||||
|
uint32_t total_waves_ramp_up = g_ems_config.ramp_up_time * 5; // 缓进阶段总方波周期数
|
||||||
|
uint32_t total_waves_ramp_down = g_ems_config.ramp_down_time * 1; // 缓出阶段总方波周期数
|
||||||
|
uint32_t total_waves_hold = g_ems_config.hold_time * 5; // 保持阶段总方波周期数
|
||||||
|
|
||||||
|
if (g_ems_config.intensity > 0)
|
||||||
|
{
|
||||||
|
waves_per_step = total_waves_ramp_up / g_ems_config.intensity; // 每个强度步进需要的方波周期数
|
||||||
|
}
|
||||||
|
|
||||||
|
g_wave_counter++; // 每次调用增加一个方波周期计数
|
||||||
|
|
||||||
|
switch (g_ramp_phase)
|
||||||
|
{
|
||||||
|
case 0: // 缓进阶段
|
||||||
|
if (g_ramp_step_counter < total_waves_ramp_up)
|
||||||
|
{
|
||||||
|
// 检查是否需要增加强度
|
||||||
|
if (g_wave_counter >= waves_per_step)
|
||||||
|
{
|
||||||
|
g_wave_counter = 0; // 重置方波计数器
|
||||||
|
if (g_current_intensity < g_ems_config.intensity)
|
||||||
|
{
|
||||||
|
g_current_intensity++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g_ramp_step_counter++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 缓进完成,进入保持阶段
|
||||||
|
g_ramp_phase = 1;
|
||||||
|
g_ramp_step_counter = 0;
|
||||||
|
g_current_intensity = g_ems_config.intensity; // 确保达到最大强度
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1: // 保持阶段
|
||||||
|
if (g_ramp_step_counter < total_waves_hold)
|
||||||
|
{
|
||||||
|
// 保持最大强度
|
||||||
|
g_current_intensity = g_ems_config.intensity;
|
||||||
|
g_ramp_step_counter++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 保持完成,进入缓出阶段
|
||||||
|
g_ramp_phase = 2;
|
||||||
|
g_ramp_step_counter = 0;
|
||||||
|
g_wave_counter = 0; // 重置方波计数器
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2: // 缓出阶段
|
||||||
|
if (g_ramp_step_counter < total_waves_ramp_down)
|
||||||
|
{
|
||||||
|
// 检查是否需要减少强度
|
||||||
|
if (g_wave_counter >= waves_per_step)
|
||||||
|
{
|
||||||
|
g_wave_counter = 0; // 重置方波计数器
|
||||||
|
if (g_current_intensity > 0)
|
||||||
|
{
|
||||||
|
g_current_intensity--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g_ramp_step_counter++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 缓出完成,停止电刺激
|
||||||
|
g_current_intensity = 0;
|
||||||
|
|
||||||
|
// 这里不直接停止,让主循环控制停止
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 电刺激主循环处理函数(在主循环中调用)
|
// 电刺激主循环处理函数(在主循环中调用)
|
||||||
void EMS_Process(void)
|
void EMS_Process(void)
|
||||||
{
|
{
|
||||||
if(g_ems_running) {
|
if (g_ems_running)
|
||||||
|
{
|
||||||
g_ems_count++;
|
g_ems_count++;
|
||||||
|
|
||||||
|
// 处理缓进缓出控制
|
||||||
|
EMS_Process_Ramp();
|
||||||
|
|
||||||
|
// 使用当前缓进缓出的强度
|
||||||
|
uint16_t current_intensity = g_current_intensity;
|
||||||
|
|
||||||
// 根据配置生成不同强度的方波
|
// 根据配置生成不同强度的方波
|
||||||
if(g_ems_count < 1280) {
|
if (g_ems_count < 1280)
|
||||||
wavegen_driverA_sine_test(WAVE_GEN_DRVA_BLK0, g_ems_config.intensity);
|
{
|
||||||
} else if(g_ems_count < 1280*256) {
|
wavegen_driverA_sine_test(WAVE_GEN_DRVA_BLK0, current_intensity);
|
||||||
|
}
|
||||||
|
else if (g_ems_count < 1280 * 256)
|
||||||
|
{
|
||||||
// 休息时间
|
// 休息时间
|
||||||
} else if(g_ems_count < 1280*2) {
|
}
|
||||||
wavegen_driverA_sine_test(WAVE_GEN_DRVA_BLK0, g_ems_config.intensity);
|
else if (g_ems_count < 1280 * 2)
|
||||||
} else {
|
{
|
||||||
|
wavegen_driverA_sine_test(WAVE_GEN_DRVA_BLK0, current_intensity);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
// 重置计数器,开始新的周期
|
// 重置计数器,开始新的周期
|
||||||
g_ems_count = 0;
|
g_ems_count = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,86 +11,86 @@ History:
|
||||||
1.V1.0
|
1.V1.0
|
||||||
Date:
|
Date:
|
||||||
Author:
|
Author:
|
||||||
Modification: 初版
|
Modification: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ENS1_ADC.h"
|
#include "ENS1_ADC.h"
|
||||||
#include "ENS1_GPIO.h"
|
#include "ENS1_GPIO.h"
|
||||||
#include "ENS1_CLOCK.h"
|
#include "ENS1_CLOCK.h"
|
||||||
#include "ENS1_ANAC.h"
|
#include "ENS1_ANAC.h"
|
||||||
/* 一、寄存器说明:
|
/* һ<EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
ADC配置:转换模式 数据覆盖模式 等待模式
|
ADC<EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>ת<EFBFBD><EFBFBD>ģʽ <EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><EFBFBD><EFBFBD>ģʽ <EFBFBD>ȴ<EFBFBD>ģʽ
|
||||||
ADC控制: ADC使能 , ADC启动
|
ADC<EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD> ADCʹ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ADC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
ADC中断使能: EOC中断使能 数据覆盖中断使能
|
ADC<EFBFBD>ж<EFBFBD>ʹ<EFBFBD>ܣ<EFBFBD> EOC<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>
|
||||||
ADC中断状态: EOC中断发生 数据覆盖中断发生
|
ADC<EFBFBD>ж<EFBFBD>״̬<EFBFBD><EFBFBD> EOC<EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD>
|
||||||
ADC状态 : EOC标志 ADC空闲或繁忙状态
|
ADC״̬ <EFBFBD><EFBFBD> EOC<EFBFBD><EFBFBD>־ ADC<EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>æ״̬
|
||||||
ADC时钟分频 :分频值 2 4 6 8 10 12 16 32
|
ADCʱ<EFBFBD>ӷ<EFBFBD>Ƶ <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶֵ 2 4 6 8 10 12 16 32
|
||||||
ADC采样时间 :ADC采样时间时钟数 2 3 4 5
|
ADC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ADC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2 3 4 5
|
||||||
ADC数据:
|
ADC<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>
|
||||||
ADC通道选择 :
|
ADCͨ<EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD>
|
||||||
ADCEOC配置 :在连续模式下 , 是否在接收到EOC标志后开启下次转换
|
ADCEOC<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD>Ƿ<EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD>յ<EFBFBD>EOC<EFBFBD><EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD>ת<EFBFBD><EFBFBD>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* 二、单次转换模式
|
/* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>ģʽ
|
||||||
*ADC控制启将 给ADC_START 位置0 当接收到EOC或者EOC_WAIT_COUNT_DONE , 无论哪一个先到来
|
*ADC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ADC_START λ<EFBFBD><EFBFBD>0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>EOC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>EOC_WAIT_COUNT_DONE <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ȵ<EFBFBD><EFBFBD><EFBFBD>
|
||||||
*如果直到EOC_WAIT_COUNT_DONE 都没有接收到EOC ,数据将不会被保存
|
*<EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD>EOC_WAIT_COUNT_DONE <EFBFBD><EFBFBD>û<EFBFBD>н<EFBFBD><EFBFBD>յ<EFBFBD>EOC <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
*ADC将停止转换,通过用户设置ADC_CTRL_REG 的 ADC_EN 位 为1
|
*ADC<EFBFBD><EFBFBD>ֹͣת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ADC_CTRL_REG <EFBFBD><EFBFBD> ADC_EN λ Ϊ1
|
||||||
*如果在采样和转换期间,ADC_EN 位置为0 ,控制器将完成正在进行的转换,然后基于 EOC/EOC_WAIT_COUNT_DONE 停止转换
|
*<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD>ڼ䣬ADC_EN λ<EFBFBD><EFBFBD>Ϊ0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڽ<EFBFBD><EFBFBD>е<EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EOC/EOC_WAIT_COUNT_DONE ֹͣת<EFBFBD><EFBFBD>
|
||||||
*数据会在EOC 到达后锁存
|
*<EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><EFBFBD><EFBFBD>EOC <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
ADC单次转换流程:
|
ADC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD>
|
||||||
1、设置单次转换(无等待模式)
|
1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>ģʽ<EFBFBD><EFBFBD>
|
||||||
2、设置ADC_CONFIG_reg bit0 = 0 bit2 = 0
|
2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ADC_CONFIG_reg bit0 = 0 bit2 = 0
|
||||||
3、单次转换启动
|
3<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
4、转换结束, 数据保存至ADC_Data register
|
4<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ADC_Data register
|
||||||
5、一个ADC_EOC_IE中断生成,
|
5<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ADC_EOC_IE<EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD>
|
||||||
6、如果使能了 IER寄存器的 EOC_INT_EN 和OVER_RUN_INT_EN 位,则系统进入中断
|
6<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> IER<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EOC_INT_EN <EFBFBD><EFBFBD>OVER_RUN_INT_EN λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
7、硬件停止ADC
|
7<EFBFBD><EFBFBD>Ӳ<EFBFBD><EFBFBD>ֹͣADC
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*三、连续转换模式
|
/*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>ģʽ
|
||||||
1、设置ADC_CONFIG_reg bit0 = 1
|
1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ADC_CONFIG_reg bit0 = 1
|
||||||
2、启动位置1 ADC_EN bit and ADC_START bits
|
2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>1 ADC_EN bit and ADC_START bits
|
||||||
3、在每次转换完成之后,基于adc_eoc_config_regsiter[0] 启动下次转换:
|
3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD><EFBFBD><EFBFBD>adc_eoc_config_regsiter[0] <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´<EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
如果Adc_eoc_config_register[0] =1 , 则接收到EOC后开始下次转换
|
<EFBFBD><EFBFBD><EFBFBD>Adc_eoc_config_register[0] =1 <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>EOC<EFBFBD><EFBFBD>ʼ<EFBFBD>´<EFBFBD>ת<EFBFBD><EFBFBD>
|
||||||
数据保存到寄存器中
|
<EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><EFBFBD>浽<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
4、ADC_EOC_IE 中断生成
|
4<EFBFBD><EFBFBD>ADC_EOC_IE <EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
5、如果使能了 IER寄存器的 EOC_INT_EN 和OVER_RUN_INT_EN 位,则系统进入中断
|
5<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> IER<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EOC_INT_EN <EFBFBD><EFBFBD>OVER_RUN_INT_EN λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
|
|
||||||
注意:ADC_eoc_config_reg寄存器仅仅在连续采样-非等待模式下有效 即:0:连续模式不接收EOC即开始启动下一次转换
|
ע<EFBFBD>⣺ADC_eoc_config_reg<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<EFBFBD>ǵȴ<EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч <EFBFBD><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EOC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>
|
||||||
1:连续模式接收到EOC后开始启动下一次转换
|
1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>EOC<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>
|
||||||
在连续采样-等待模式下,ADC_eoc_config_reg应该被设置为0 !!!
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<EFBFBD>ȴ<EFBFBD>ģʽ<EFBFBD>£<EFBFBD>ADC_eoc_config_regӦ<EFBFBD>ñ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*四、等待模式
|
/*<EFBFBD>ġ<EFBFBD><EFBFBD>ȴ<EFBFBD>ģʽ
|
||||||
1、设置ADC_CONFIG_reg bit2 = 1 (使能等待模式)
|
1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ADC_CONFIG_reg bit2 = 1 <EFBFBD><EFBFBD>ʹ<EFBFBD>ܵȴ<EFBFBD>ģʽ<EFBFBD><EFBFBD>
|
||||||
2、启动测量转换
|
2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>
|
||||||
3、在转换完成后:
|
3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ<EFBFBD>
|
||||||
存ADC数据到相应寄存器中
|
<EFBFBD><EFBFBD>ADC<EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
ADC_EOC_IE 中断生成
|
ADC_EOC_IE <EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
如果使能了 IER寄存器的 EOC_INT_EN 和OVER_RUN_INT_EN 位,则系统进入中断
|
<EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> IER<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EOC_INT_EN <EFBFBD><EFBFBD>OVER_RUN_INT_EN λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
4、ADC控制器进入到ADC_WAIT 等待状态直到EOC中断被清除 或者 ADC数据被系统读走
|
4<EFBFBD><EFBFBD>ADC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>뵽ADC_WAIT <EFBFBD>ȴ<EFBFBD>״ֱ̬<EFBFBD><EFBFBD>EOC<EFBFBD>жϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> ADC<EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
5、一旦EOC中断被清除,ADC开始下一次的转换
|
5<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>EOC<EFBFBD>жϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ADC<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>һ<EFBFBD>ε<EFBFBD>ת<EFBFBD><EFBFBD>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*五、数据锁存器
|
/*<EFBFBD>塢<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
1、当ADC控制启接收到EOC后,数据将被锁存
|
1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ADC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>EOC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
2、如果 OVERRUN模式被使能,新的转换数据将会被锁存 无论 overrun 错误状态如何
|
2<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> OVERRUNģʽ<EFBFBD><EFBFBD>ʹ<EFBFBD>ܣ<EFBFBD><EFBFBD>µ<EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD>ᱻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> overrun <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
注意: 如果overrun 模式没有被使能, 新的或者旧的转换数据将根据overrun 错误状态选择性锁存
|
ע<EFBFBD>⣺ <EFBFBD><EFBFBD><EFBFBD>overrun ģʽû<EFBFBD>б<EFBFBD>ʹ<EFBFBD>ܣ<EFBFBD> <EFBFBD>µĻ<EFBFBD><EFBFBD>߾ɵ<EFBFBD>ת<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>overrun <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬ѡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
即: 如果overrun 错误发生,数据将不会被锁存
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>overrun <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᱻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
如果没有overrun 错误发生,新数据将被锁存
|
<EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><EFBFBD>overrun <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*六、中断说明
|
/*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>˵<EFBFBD><EFBFBD>
|
||||||
1、接收到EOC后 EOC_IR 生成
|
1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>EOC<EFBFBD><EFBFBD> EOC_IR <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
2、OVERRUN错误发生后OVERRUN_IR 生成
|
2<EFBFBD><EFBFBD>OVERRUN<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>OVERRUN_IR <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
3、EOC_IR 和overrun 作为ADC中断被 通道到系统
|
3<EFBFBD><EFBFBD>EOC_IR <EFBFBD><EFBFBD>overrun <EFBFBD><EFBFBD>ΪADC<EFBFBD>жϱ<EFBFBD> ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ
|
||||||
在系统通过 data_reg 读取走adc数据后, EOC_IR 被 EOC_IR_CLEAR 清除
|
<EFBFBD><EFBFBD>ϵͳͨ<EFBFBD><EFBFBD> data_reg <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>adc<EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD> EOC_IR <EFBFBD><EFBFBD> EOC_IR_CLEAR <EFBFBD><EFBFBD><EFBFBD>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*overrun 错误
|
/*overrun <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
此错误指的是: ADC控制器在系统读取走ADC数据前(在清除到上一个EOC_IR前),接收到新的EOC
|
<EFBFBD>˴<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD>ǣ<EFBFBD> ADC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ADC<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>EOC_IRǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><EFBFBD>µ<EFBFBD>EOC
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -148,13 +148,13 @@ uint8_t ENS1_ADC_CONFIG(ENS_ADC_SEL channelx ,
|
||||||
|
|
||||||
CMSDK_ADC->ADC_SAMP_TIME = (CMSDK_ADC->ADC_SAMP_TIME &~ 0x3) | SIMLING_TIME;
|
CMSDK_ADC->ADC_SAMP_TIME = (CMSDK_ADC->ADC_SAMP_TIME &~ 0x3) | SIMLING_TIME;
|
||||||
|
|
||||||
//配置ADC_eoc_config_reg寄存器,(仅仅在连续采样-非等待模式下有效)
|
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ADC_eoc_config_reg<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D>ǵȴ<C7B5>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
|
||||||
if( ((MODE_SEL & 0X1 )== 1 ) && (MODE_SEL & 0X4) == 0)
|
if( ((MODE_SEL & 0X1 )== 1 ) && (MODE_SEL & 0X4) == 0)
|
||||||
{
|
{
|
||||||
CMSDK_ADC->ADC_EOC_CONFG = (CMSDK_ADC->ADC_EOC_CONFG &~ (0x1)) | EOC_CONFIG;
|
CMSDK_ADC->ADC_EOC_CONFG = (CMSDK_ADC->ADC_EOC_CONFG &~ (0x1)) | EOC_CONFIG;
|
||||||
}
|
}
|
||||||
|
|
||||||
//中断使能
|
//<EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>
|
||||||
CMSDK_ADC->ADC_IER = (CMSDK_ADC->ADC_IER &~ (0x3)) | ( INT_MODE_SEL );
|
CMSDK_ADC->ADC_IER = (CMSDK_ADC->ADC_IER &~ (0x3)) | ( INT_MODE_SEL );
|
||||||
return CMSDK_ADC->ADC_CONFG;
|
return CMSDK_ADC->ADC_CONFG;
|
||||||
}
|
}
|
||||||
|
|
@ -176,11 +176,11 @@ uint8_t ENS1_ADC_STOP(ENS_ADC_SEL channelx)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//连续读取数据
|
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
//ADC在不同模式下有不同的采集方式,根据Adc_config_register的配置不同,共8种模式
|
//ADC<EFBFBD>ڲ<EFBFBD>ͬģʽ<EFBFBD><EFBFBD><EFBFBD>в<EFBFBD>ͬ<EFBFBD>IJɼ<EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Adc_config_register<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD>ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD><EFBFBD>ģʽ
|
||||||
uint16_t save_data;
|
uint16_t save_data;
|
||||||
uint8_t ADC_CONFIG_READ;
|
uint8_t ADC_CONFIG_READ;
|
||||||
//此函数未完成,测试使用连续采集+中断模式,此函数暂时用不到
|
//<EFBFBD>˺<EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD><EFBFBD>ɣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɼ<EFBFBD>+<2B>ж<EFBFBD>ģʽ<C4A3><CABD><EFBFBD>˺<EFBFBD><CBBA><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ò<EFBFBD><C3B2><EFBFBD>
|
||||||
|
|
||||||
uint16_t ADC_READ_DATA(void)
|
uint16_t ADC_READ_DATA(void)
|
||||||
{
|
{
|
||||||
|
|
@ -188,8 +188,8 @@ uint16_t ADC_READ_DATA(void)
|
||||||
ADC_CONFIG_READ = CMSDK_ADC->ADC_CONFG;
|
ADC_CONFIG_READ = CMSDK_ADC->ADC_CONFG;
|
||||||
switch(ADC_CONFIG_READ & 0x7) {
|
switch(ADC_CONFIG_READ & 0x7) {
|
||||||
case single_mode_without_overrun_without_wait :
|
case single_mode_without_overrun_without_wait :
|
||||||
while(ADC_READ_STATUS == ADC_READ_DATA_IS_WAITING); //等待在中断中EOC的到来
|
while(ADC_READ_STATUS == ADC_READ_DATA_IS_WAITING); //<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>EOC<EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD>
|
||||||
ADC_READ_STATUS = ADC_READ_DATA_IS_WAITING; //中断发生,已经有ADC的数据了,此时再将状态切换到等待下一次数据
|
ADC_READ_STATUS = ADC_READ_DATA_IS_WAITING; //<EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD>ADC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ˣ<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ٽ<EFBFBD>״̬<EFBFBD>л<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -230,12 +230,11 @@ uint16_t ADC_READ_DATA(void)
|
||||||
//ADC interrupt handler
|
//ADC interrupt handler
|
||||||
void ADC_Handler(void) __irq
|
void ADC_Handler(void) __irq
|
||||||
{
|
{
|
||||||
if((CMSDK_ADC->ADC_ISR & 0x01) == 0x01) //接收到EOC
|
if((CMSDK_ADC->ADC_ISR & 0x01) == 0x01) //<EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>EOC
|
||||||
{
|
{
|
||||||
CMSDK_ADC->ADC_INT_CLR = (0x01<<0);
|
CMSDK_ADC->ADC_INT_CLR = (0x01<<0);
|
||||||
ADC_READ_STATUS = ADC_READ_DATA_IS_READY;
|
ADC_READ_STATUS = ADC_READ_DATA_IS_READY;
|
||||||
save_data = (CMSDK_ADC->ADC_DATA & 0x0fff); //读走数据后,可以进行下一次采集
|
save_data = (CMSDK_ADC->ADC_DATA & 0x0fff); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݺ<DDBA><F3A3ACBF>Խ<EFBFBD><D4BD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>βɼ<CEB2>
|
||||||
printf("%d\n",save_data);
|
|
||||||
ADC_UART_BYTE_LOW = save_data&0xff;
|
ADC_UART_BYTE_LOW = save_data&0xff;
|
||||||
ADC_UART_BYTE_HIGH = (save_data&0x0f00)>>8;
|
ADC_UART_BYTE_HIGH = (save_data&0x0f00)>>8;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,106 +11,106 @@ History:
|
||||||
1.V1.0
|
1.V1.0
|
||||||
Date:
|
Date:
|
||||||
Author:
|
Author:
|
||||||
Modification: 初版
|
Modification: <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
*/
|
*/
|
||||||
#include "ENS_CURRENT_CALIBRATION.h"
|
#include "ENS_CURRENT_CALIBRATION.h"
|
||||||
#include "ENS1_MTP.h"
|
#include "ENS1_MTP.h"
|
||||||
#include "ENS1_UART.h"
|
#include "ENS1_UART.h"
|
||||||
#include "ENS1_TIMER.h"
|
#include "ENS1_TIMER.h"
|
||||||
|
|
||||||
/*--------------------------------波形参数的初始化幅值结构体-----------------------------*/
|
/*--------------------------------<EFBFBD><EFBFBD><EFBFBD>β<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ṹ<EFBFBD><EFBFBD>-----------------------------*/
|
||||||
|
|
||||||
STRUCT_WAVEFORM_PARA ParaSet_waveform[4] =
|
STRUCT_WAVEFORM_PARA ParaSet_waveform[4] =
|
||||||
{
|
{
|
||||||
/*通道1 -- ST0 ST1 */
|
/*ͨ<EFBFBD><EFBFBD>1 -- ST0 ST1 */
|
||||||
{
|
{
|
||||||
.Type = SQUARE_WAVE , //波形种类选择
|
.Type = SQUARE_WAVE , //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>
|
||||||
.PositivePulseWidth = 100 , //正半周期脉宽-微秒
|
.PositivePulseWidth = 100 , //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.DeadTime = 10, //死区时间-微秒
|
.DeadTime = 10, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.NegativePulseWidth = 100 , //负半周期脉宽-微秒
|
.NegativePulseWidth = 100 , //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.ClientTime = 1000 , //静默时间-微秒
|
.ClientTime = 1000 , //<EFBFBD><EFBFBD>Ĭʱ<EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.DelayOutputTime_US = 0, //延迟输出时间-微秒
|
.DelayOutputTime_US = 0, //<EFBFBD>ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.OtherWaveformPara.AlternatingFreq_HZ = 0, //交替波形频率 //
|
.OtherWaveformPara.AlternatingFreq_HZ = 0, //<EFBFBD><EFBFBD><EFBFBD>沨<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD> //
|
||||||
.OtherWaveformPara.TotalOutputTime_S = 0, //设置总输出时间 秒
|
.OtherWaveformPara.TotalOutputTime_S = 0, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> <20><>
|
||||||
.OtherWaveformPara.NumOfPulseGroups = 0, //脉冲群模式下的每组脉冲数量
|
.OtherWaveformPara.NumOfPulseGroups = 0, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥģʽ<EFBFBD>µ<EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
.OtherWaveformPara.TimeOfPulseGroups_MS = 0, //脉冲群模式下的组间隔时间 毫秒
|
.OtherWaveformPara.TimeOfPulseGroups_MS = 0, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥģʽ<EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||||
},
|
},
|
||||||
/*通道2 -- ST2 ST3 */
|
/*ͨ<EFBFBD><EFBFBD>2 -- ST2 ST3 */
|
||||||
{
|
{
|
||||||
.Type = TRIANGULAR_WAVE , //波形种类选择
|
.Type = TRIANGULAR_WAVE , //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>
|
||||||
.PositivePulseWidth = 0 , //正半周期脉宽-微秒
|
.PositivePulseWidth = 0 , //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.DeadTime = 0, //死区时间-微秒
|
.DeadTime = 0, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.NegativePulseWidth = 0 , //负半周期脉宽-微秒
|
.NegativePulseWidth = 0 , //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.ClientTime = 0 , //静默时间-微秒
|
.ClientTime = 0 , //<EFBFBD><EFBFBD>Ĭʱ<EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.DelayOutputTime_US = 0, //延迟输出时间-微秒
|
.DelayOutputTime_US = 0, //<EFBFBD>ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.OtherWaveformPara.AlternatingFreq_HZ = 0, //交替波形频率 //
|
.OtherWaveformPara.AlternatingFreq_HZ = 0, //<EFBFBD><EFBFBD><EFBFBD>沨<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD> //
|
||||||
.OtherWaveformPara.TotalOutputTime_S = 0, //设置总输出时间 秒
|
.OtherWaveformPara.TotalOutputTime_S = 0, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> <20><>
|
||||||
.OtherWaveformPara.NumOfPulseGroups = 0, //脉冲群模式下的每组脉冲数量
|
.OtherWaveformPara.NumOfPulseGroups = 0, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥģʽ<EFBFBD>µ<EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
.OtherWaveformPara.TimeOfPulseGroups_MS = 0, //脉冲群模式下的组间隔时间 毫秒
|
.OtherWaveformPara.TimeOfPulseGroups_MS = 0, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥģʽ<EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||||
},
|
},
|
||||||
/*通道3 -- ST4 ST5 */
|
/*ͨ<EFBFBD><EFBFBD>3 -- ST4 ST5 */
|
||||||
{
|
{
|
||||||
.Type = TRIANGULAR_WAVE , //波形种类选择
|
.Type = TRIANGULAR_WAVE , //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>
|
||||||
.PositivePulseWidth = 0 , //正半周期脉宽-微秒
|
.PositivePulseWidth = 0 , //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.DeadTime = 0, //死区时间-微秒
|
.DeadTime = 0, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.NegativePulseWidth = 0 , //负半周期脉宽-微秒
|
.NegativePulseWidth = 0 , //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.ClientTime = 0 , //静默时间-微秒
|
.ClientTime = 0 , //<EFBFBD><EFBFBD>Ĭʱ<EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.DelayOutputTime_US = 0, //延迟输出时间-微秒
|
.DelayOutputTime_US = 0, //<EFBFBD>ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.OtherWaveformPara.AlternatingFreq_HZ = 0, //交替波形频率 //
|
.OtherWaveformPara.AlternatingFreq_HZ = 0, //<EFBFBD><EFBFBD><EFBFBD>沨<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD> //
|
||||||
.OtherWaveformPara.TotalOutputTime_S = 0, //设置总输出时间 秒
|
.OtherWaveformPara.TotalOutputTime_S = 0, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> <20><>
|
||||||
.OtherWaveformPara.NumOfPulseGroups = 0, //脉冲群模式下的每组脉冲数量
|
.OtherWaveformPara.NumOfPulseGroups = 0, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥģʽ<EFBFBD>µ<EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
.OtherWaveformPara.TimeOfPulseGroups_MS = 0, //脉冲群模式下的组间隔时间 毫秒
|
.OtherWaveformPara.TimeOfPulseGroups_MS = 0, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥģʽ<EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||||
},
|
},
|
||||||
/*通道4 -- ST6 ST7 */
|
/*ͨ<EFBFBD><EFBFBD>4 -- ST6 ST7 */
|
||||||
{
|
{
|
||||||
.Type = TRIANGULAR_WAVE , //波形种类选择
|
.Type = TRIANGULAR_WAVE , //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><EFBFBD>
|
||||||
.PositivePulseWidth = 0 , //正半周期脉宽-微秒
|
.PositivePulseWidth = 0 , //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.DeadTime = 0, //死区时间-微秒
|
.DeadTime = 0, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.NegativePulseWidth = 0 , //负半周期脉宽-微秒
|
.NegativePulseWidth = 0 , //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.ClientTime = 0 , //静默时间-微秒
|
.ClientTime = 0 , //<EFBFBD><EFBFBD>Ĭʱ<EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.DelayOutputTime_US = 0, //延迟输出时间-微秒
|
.DelayOutputTime_US = 0, //<EFBFBD>ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>-<><CEA2>
|
||||||
.OtherWaveformPara.AlternatingFreq_HZ = 0, //交替波形频率 //
|
.OtherWaveformPara.AlternatingFreq_HZ = 0, //<EFBFBD><EFBFBD><EFBFBD>沨<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD> //
|
||||||
.OtherWaveformPara.TotalOutputTime_S = 0, //设置总输出时间 秒
|
.OtherWaveformPara.TotalOutputTime_S = 0, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> <20><>
|
||||||
.OtherWaveformPara.NumOfPulseGroups = 0, //脉冲群模式下的每组脉冲数量
|
.OtherWaveformPara.NumOfPulseGroups = 0, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥģʽ<EFBFBD>µ<EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
.OtherWaveformPara.TimeOfPulseGroups_MS = 0, //脉冲群模式下的组间隔时间 毫秒
|
.OtherWaveformPara.TimeOfPulseGroups_MS = 0, //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥģʽ<EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
/*-------------------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
/*-------------------------获取到FT测试后的实际测量单元电流值---------------------------*/
|
/*-------------------------<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>FT<EFBFBD><EFBFBD><EFBFBD>Ժ<EFBFBD><EFBFBD>ʵ<EFBFBD>ʲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ---------------------------*/
|
||||||
uint16_t FT_CURRENT_SAVE[4]={0,0,0,0}; //用于保存FT读取出的数据
|
uint16_t FT_CURRENT_SAVE[4]={0,0,0,0}; //<EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><EFBFBD><EFBFBD>FT<EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
uint8_t CUSTOM_UNIT_CURRENT[4]={33,33,33,33}; //用于自定义单元电流值
|
uint8_t CUSTOM_UNIT_CURRENT[4]={33,33,33,33}; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>嵥Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
uint8_t unit_current[4] ={0,0,0,0}; //保存计算好的实际单元电流值
|
uint8_t unit_current[4] ={0,0,0,0}; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
uint8_t GET_FT_CURRENT(void) //电流设置:208*4
|
uint8_t GET_FT_CURRENT(void) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>208*4
|
||||||
{
|
{
|
||||||
//当需要使用FT后的芯片时,打开注释, 此时自动计算单元电流
|
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫʹ<EFBFBD><EFBFBD>FT<EFBFBD><EFBFBD><EFBFBD>оƬʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD>ͣ<EFBFBD> <20><>ʱ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>㵥Ԫ<E3B5A5><D4AA><EFBFBD><EFBFBD>
|
||||||
//当手动校准时,修改CUSTOM_UNIT_CURRENT[4] 数组中的数据,并将下面4行注释掉
|
//<EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD>Уʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>CUSTOM_UNIT_CURRENT[4] <20><><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>4<EFBFBD><34>ע<EFBFBD>͵<EFBFBD>
|
||||||
// flash_read(DATA_SAVE_ADDR ,&FT_CURRENT_SAVE[0]);//读出保存在MTP中的实际检测电流值用于计算实际单元电流
|
// flash_read(DATA_SAVE_ADDR ,&FT_CURRENT_SAVE[0]);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MTP<EFBFBD>е<EFBFBD>ʵ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// flash_read(DATA_SAVE_ADDR+2 ,&FT_CURRENT_SAVE[1]);//读出保存在MTP中的实际检测电流值用于计算实际单元电流
|
// flash_read(DATA_SAVE_ADDR+2 ,&FT_CURRENT_SAVE[1]);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MTP<EFBFBD>е<EFBFBD>ʵ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// flash_read(DATA_SAVE_ADDR+4 ,&FT_CURRENT_SAVE[2]);//读出保存在MTP中的实际检测电流值用于计算实际单元电流
|
// flash_read(DATA_SAVE_ADDR+4 ,&FT_CURRENT_SAVE[2]);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MTP<EFBFBD>е<EFBFBD>ʵ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
// flash_read(DATA_SAVE_ADDR+6 ,&FT_CURRENT_SAVE[3]);//读出保存在MTP中的实际检测电流值用于计算实际单元电流
|
// flash_read(DATA_SAVE_ADDR+6 ,&FT_CURRENT_SAVE[3]);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>MTP<EFBFBD>е<EFBFBD>ʵ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
for(int i = 0 ;i<4;i++)
|
for(int i = 0 ;i<4;i++)
|
||||||
{
|
{
|
||||||
if(FT_CURRENT_SAVE[i] != 0)
|
if(FT_CURRENT_SAVE[i] != 0)
|
||||||
unit_current[i] = (uint8_t)(FT_CURRENT_SAVE[i] /( 208 * 4 )) ; //计算实际单元电流
|
unit_current[i] = (uint8_t)(FT_CURRENT_SAVE[i] /( 208 * 4 )) ; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
else
|
else
|
||||||
unit_current[i] = CUSTOM_UNIT_CURRENT[i] ;
|
unit_current[i] = CUSTOM_UNIT_CURRENT[i] ;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------------------输出电流大小设置--------------------------------*/
|
/*-------------------------------------<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD><EFBFBD><EFBFBD>--------------------------------*/
|
||||||
//正弦波计算数据填充值
|
//<EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
double sin_cal(uint8_t angle) //0-180
|
double sin_cal(uint8_t angle) //0-180
|
||||||
{
|
{
|
||||||
double radian = angle*PI/180;
|
double radian = angle*PI/180;
|
||||||
return sin(radian);
|
return sin(radian);
|
||||||
}
|
}
|
||||||
|
|
||||||
//计算不同波形下的的64个点的值,当前有方波,正弦波,三角波
|
//<EFBFBD><EFBFBD><EFBFBD>㲻ͬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µĵ<EFBFBD>64<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>з<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD>
|
||||||
uint16_t unit_t[4]; //保存计算后的单元电流系数(0-7) 共四个通道
|
uint16_t unit_t[4]; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-7<><37> <20><><EFBFBD>ĸ<EFBFBD>ͨ<EFBFBD><CDA8>
|
||||||
uint32_t isel_t[4][64]; //保存计算后得到的电流挡位(0-255)共四个通道
|
uint32_t isel_t[4][64]; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>0-255<35><35><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD>ͨ<EFBFBD><CDA8>
|
||||||
BasicWaveformType wavePara_type[4];
|
BasicWaveformType wavePara_type[4];
|
||||||
uint8_t cal_output_current_mA(CHANNEL_NUM CHANNEL_X,float mA,BasicWaveformType type, uint16_t* unit , uint32_t (*isel)[64]) // uint16_t read_current_data
|
uint8_t cal_output_current_mA(CHANNEL_NUM CHANNEL_X,float mA,BasicWaveformType type, uint16_t* unit , uint32_t (*isel)[64]) // uint16_t read_current_data
|
||||||
{
|
{
|
||||||
|
|
@ -134,7 +134,7 @@ uint8_t cal_output_current_mA(CHANNEL_NUM CHANNEL_X,float mA,BasicWaveformType t
|
||||||
{
|
{
|
||||||
if(type == SQUARE_WAVE)
|
if(type == SQUARE_WAVE)
|
||||||
{
|
{
|
||||||
//保存计算结果,用于给电流相关的寄存器赋值
|
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
*(unit+CHANNEL_X) = (uint16_t)(mA * 1000 / (unit_current[CHANNEL_X] * 255)); // 0 - 7
|
*(unit+CHANNEL_X) = (uint16_t)(mA * 1000 / (unit_current[CHANNEL_X] * 255)); // 0 - 7
|
||||||
for(int i = 0 ;i<64;i++)
|
for(int i = 0 ;i<64;i++)
|
||||||
{
|
{
|
||||||
|
|
@ -143,16 +143,16 @@ uint8_t cal_output_current_mA(CHANNEL_NUM CHANNEL_X,float mA,BasicWaveformType t
|
||||||
}
|
}
|
||||||
else if(type== SINE_WAVE)
|
else if(type== SINE_WAVE)
|
||||||
{
|
{
|
||||||
//保存计算结果,用于给电流相关的寄存器赋值
|
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
*(unit+CHANNEL_X) = (uint16_t)(mA * 1000 / (unit_current[CHANNEL_X] * 255)); // 0 - 7
|
*(unit+CHANNEL_X) = (uint16_t)(mA * 1000 / (unit_current[CHANNEL_X] * 255)); // 0 - 7
|
||||||
for(int i = 0 ;i<64;i++)
|
for(int i = 0 ;i<64;i++)
|
||||||
{
|
{
|
||||||
*(isel[0]+CHANNEL_X*64+i) = (uint16_t)(mA * 1000 / ((*(unit+CHANNEL_X) + 1)*unit_current[CHANNEL_X])*sin_cal(i*2.85714)); // 0 - 255
|
*(isel[0]+CHANNEL_X*64+i) = (uint16_t)(mA * 1000 / ((*(unit+CHANNEL_X) + 1)*unit_current[CHANNEL_X])*sin_cal(i*2.85714)); // 0 - 255
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else //三角波赋值(type == TRIANGULAR_WAVE )
|
else //<EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><EFBFBD><EFBFBD>ֵ(type == TRIANGULAR_WAVE )
|
||||||
{
|
{
|
||||||
//保存计算结果,用于给电流相关的寄存器赋值
|
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>ڸ<EFBFBD><DAB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
|
|
||||||
*(unit+CHANNEL_X) = (uint16_t)(mA * 1000 / (unit_current[CHANNEL_X] * 255)); // 0 - 7
|
*(unit+CHANNEL_X) = (uint16_t)(mA * 1000 / (unit_current[CHANNEL_X] * 255)); // 0 - 7
|
||||||
*(isel[0]+CHANNEL_X*64) = 0;
|
*(isel[0]+CHANNEL_X*64) = 0;
|
||||||
|
|
@ -160,20 +160,18 @@ uint8_t cal_output_current_mA(CHANNEL_NUM CHANNEL_X,float mA,BasicWaveformType t
|
||||||
for(int j = 1 ; j<32 ; j++)
|
for(int j = 1 ; j<32 ; j++)
|
||||||
{
|
{
|
||||||
*(isel[0]+CHANNEL_X*64+j) = (uint16_t)(mA * 1000 / ((*(unit+CHANNEL_X)+1)*unit_current[CHANNEL_X]) * 0.033258*j); // 0 - 255
|
*(isel[0]+CHANNEL_X*64+j) = (uint16_t)(mA * 1000 / ((*(unit+CHANNEL_X)+1)*unit_current[CHANNEL_X]) * 0.033258*j); // 0 - 255
|
||||||
// printf("%d\n",*(isel[0]+CHANNEL_X*64+j));
|
|
||||||
}
|
}
|
||||||
for(int k = 32 ; k<63 ; k++)
|
for(int k = 32 ; k<63 ; k++)
|
||||||
{
|
{
|
||||||
*(isel[0]+CHANNEL_X*64+k) =*(isel[0]+CHANNEL_X*64+(63-k)) ;
|
*(isel[0]+CHANNEL_X*64+k) =*(isel[0]+CHANNEL_X*64+(63-k)) ;
|
||||||
// printf("%d\n",*(isel[0]+CHANNEL_X*64+k));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*初始化设置*/
|
/*<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||||
/*CONFIG寄存器设置*/
|
/*CONFIG<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||||
uint8_t ENS_STIMU_CONFIG_BIT_ENABLE(CHANNEL_NUM CHANNEL_X , DRV_CONFIG BIT)
|
uint8_t ENS_STIMU_CONFIG_BIT_ENABLE(CHANNEL_NUM CHANNEL_X , DRV_CONFIG BIT)
|
||||||
{
|
{
|
||||||
CMSDK_WAVE_GEN_TypeDef* WAVE_GEN_BLK;
|
CMSDK_WAVE_GEN_TypeDef* WAVE_GEN_BLK;
|
||||||
|
|
@ -223,7 +221,7 @@ uint8_t ENS_STIMU_CONFIG_BIT_DISABLE(CHANNEL_NUM CHANNEL_X , DRV_CONFIG BIT)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*---------------------------电刺激有关的寄存器的初始化--------------------------------*/
|
/*---------------------------<EFBFBD><EFBFBD>̼<EFBFBD><EFBFBD>йصļĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><EFBFBD>--------------------------------*/
|
||||||
uint32_t StimulatorInit(CHANNEL_NUM CHANNEL_X)
|
uint32_t StimulatorInit(CHANNEL_NUM CHANNEL_X)
|
||||||
{
|
{
|
||||||
//uint32_t WaveformFreq=0;
|
//uint32_t WaveformFreq=0;
|
||||||
|
|
@ -232,9 +230,9 @@ uint32_t StimulatorInit(CHANNEL_NUM CHANNEL_X)
|
||||||
else if(CHANNEL_X == CHANNEL_1) WAVE_GEN_BLK=WAVE_GEN_DRVA_BLK1;
|
else if(CHANNEL_X == CHANNEL_1) WAVE_GEN_BLK=WAVE_GEN_DRVA_BLK1;
|
||||||
else if(CHANNEL_X == CHANNEL_2) WAVE_GEN_BLK=WAVE_GEN_DRVA_BLK2;
|
else if(CHANNEL_X == CHANNEL_2) WAVE_GEN_BLK=WAVE_GEN_DRVA_BLK2;
|
||||||
else WAVE_GEN_BLK = WAVE_GEN_DRVA_BLK3;
|
else WAVE_GEN_BLK = WAVE_GEN_DRVA_BLK3;
|
||||||
//config 设置
|
//config <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
ENS_STIMU_CONFIG_BIT_ENABLE(CHANNEL_X,DISABLE_ALL_BIT);
|
ENS_STIMU_CONFIG_BIT_ENABLE(CHANNEL_X,DISABLE_ALL_BIT);
|
||||||
//1 、 死区时间不为0,波形不为sine波 ,使能REST
|
//1 <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD>䲻Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD>β<EFBFBD>Ϊsine<6E><65> ,ʹ<><CAB9>REST
|
||||||
if((ParaSet_waveform[CHANNEL_X].DeadTime > 0)){
|
if((ParaSet_waveform[CHANNEL_X].DeadTime > 0)){
|
||||||
ENS_STIMU_CONFIG_BIT_ENABLE(CHANNEL_X,REST_BIT);
|
ENS_STIMU_CONFIG_BIT_ENABLE(CHANNEL_X,REST_BIT);
|
||||||
}
|
}
|
||||||
|
|
@ -242,13 +240,13 @@ uint32_t StimulatorInit(CHANNEL_NUM CHANNEL_X)
|
||||||
{
|
{
|
||||||
ENS_STIMU_CONFIG_BIT_DISABLE(CHANNEL_X,REST_BIT);
|
ENS_STIMU_CONFIG_BIT_DISABLE(CHANNEL_X,REST_BIT);
|
||||||
}
|
}
|
||||||
//2 、 负半周期脉宽大于0 使能 NEGATIVE_BIT 和 SOURCE_B_BIT
|
//2 <EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0 ʹ<><CAB9> NEGATIVE_BIT <20><> SOURCE_B_BIT
|
||||||
if(ParaSet_waveform[CHANNEL_X].NegativePulseWidth > 0)
|
if(ParaSet_waveform[CHANNEL_X].NegativePulseWidth > 0)
|
||||||
{
|
{
|
||||||
ENS_STIMU_CONFIG_BIT_ENABLE(CHANNEL_X,SOURCE_B_BIT ); //SOURCEB不使能则负半周期的数据无效(=0)
|
ENS_STIMU_CONFIG_BIT_ENABLE(CHANNEL_X,SOURCE_B_BIT ); //SOURCEB<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>=0<><30>
|
||||||
ENS_STIMU_CONFIG_BIT_ENABLE(CHANNEL_X,NEGATIVE_BIT );
|
ENS_STIMU_CONFIG_BIT_ENABLE(CHANNEL_X,NEGATIVE_BIT );
|
||||||
}
|
}
|
||||||
//3、静默时间不为0,开启SILENT_BIT
|
//3<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭʱ<EFBFBD>䲻Ϊ0<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>SILENT_BIT
|
||||||
if(ParaSet_waveform[CHANNEL_X].ClientTime>0)
|
if(ParaSet_waveform[CHANNEL_X].ClientTime>0)
|
||||||
{
|
{
|
||||||
ENS_STIMU_CONFIG_BIT_ENABLE(CHANNEL_X,SILENT_BIT);
|
ENS_STIMU_CONFIG_BIT_ENABLE(CHANNEL_X,SILENT_BIT);
|
||||||
|
|
@ -258,13 +256,13 @@ uint32_t StimulatorInit(CHANNEL_NUM CHANNEL_X)
|
||||||
ENS_STIMU_CONFIG_BIT_DISABLE(CHANNEL_X,SILENT_BIT);
|
ENS_STIMU_CONFIG_BIT_DISABLE(CHANNEL_X,SILENT_BIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
//4、交替模式ALTERNATING_POSITIVE_BIT
|
//4<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽALTERNATING_POSITIVE_BIT
|
||||||
if(ParaSet_waveform[CHANNEL_X].OtherWaveformPara.AlternatingFreq_HZ > 0 )
|
if(ParaSet_waveform[CHANNEL_X].OtherWaveformPara.AlternatingFreq_HZ > 0 )
|
||||||
{
|
{
|
||||||
ENS_STIMU_CONFIG_BIT_ENABLE(CHANNEL_X,ALTERNATING_POSITIVE_BIT);
|
ENS_STIMU_CONFIG_BIT_ENABLE(CHANNEL_X,ALTERNATING_POSITIVE_BIT);
|
||||||
ENS_STIMU_CONFIG_BIT_DISABLE(CHANNEL_X,SOURCE_B_BIT);
|
ENS_STIMU_CONFIG_BIT_DISABLE(CHANNEL_X,SOURCE_B_BIT);
|
||||||
ENS_STIMU_CONFIG_BIT_DISABLE(CHANNEL_X,NEGATIVE_BIT);
|
ENS_STIMU_CONFIG_BIT_DISABLE(CHANNEL_X,NEGATIVE_BIT);
|
||||||
//交替时间与主频有关,输入的参数为交替频率,需要转化为时钟个数,时钟个数不能超过2^16
|
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>й<EFBFBD>,<2C><><EFBFBD><EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>Ƶ<EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD>Ҫת<D2AA><D7AA>Ϊʱ<CEAA>Ӹ<EFBFBD><D3B8><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Ӹ<EFBFBD><D3B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܳ<EFBFBD><DCB3><EFBFBD>2^16
|
||||||
WAVE_GEN_BLK ->WAVE_GEN_DRV_ALT_LIM_REG =(uint16_t)(ParaSet_waveform[CHANNEL_X].PositivePulseWidth / (uint16_t)ParaSet_waveform[CHANNEL_X].OtherWaveformPara.AlternatingFreq_HZ * (uint16_t)(APB_Clock_Freq/1000000)) ;
|
WAVE_GEN_BLK ->WAVE_GEN_DRV_ALT_LIM_REG =(uint16_t)(ParaSet_waveform[CHANNEL_X].PositivePulseWidth / (uint16_t)ParaSet_waveform[CHANNEL_X].OtherWaveformPara.AlternatingFreq_HZ * (uint16_t)(APB_Clock_Freq/1000000)) ;
|
||||||
ParaSet_waveform[CHANNEL_X].NegativePulseWidth = 0;
|
ParaSet_waveform[CHANNEL_X].NegativePulseWidth = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -274,37 +272,37 @@ uint32_t StimulatorInit(CHANNEL_NUM CHANNEL_X)
|
||||||
}
|
}
|
||||||
|
|
||||||
ENS_STIMU_CONFIG_BIT_ENABLE(CHANNEL_X,CONTINUE_REPEATING_BIT);
|
ENS_STIMU_CONFIG_BIT_ENABLE(CHANNEL_X,CONTINUE_REPEATING_BIT);
|
||||||
//延迟输出时间计算 单位us
|
//<EFBFBD>ӳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λus
|
||||||
WAVE_GEN_BLK->WAVE_GEN_DRV_DELAY_LIM_REG = (uint8_t)(APB_Clock_Freq/1000000)*ParaSet_waveform[CHANNEL_X].DelayOutputTime_US;
|
WAVE_GEN_BLK->WAVE_GEN_DRV_DELAY_LIM_REG = (uint8_t)(APB_Clock_Freq/1000000)*ParaSet_waveform[CHANNEL_X].DelayOutputTime_US;
|
||||||
//根据初始化后的STRUCT_WAVEFORM_PARA结构体给对应的寄存器赋值
|
//<EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>STRUCT_WAVEFORM_PARA<EFBFBD>ṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ļĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
||||||
|
|
||||||
WAVE_GEN_BLK->WAVE_GEN_DRV_NEG_HLF_WAVE_PRD_REG = ParaSet_waveform[CHANNEL_X].NegativePulseWidth;
|
WAVE_GEN_BLK->WAVE_GEN_DRV_NEG_HLF_WAVE_PRD_REG = ParaSet_waveform[CHANNEL_X].NegativePulseWidth;
|
||||||
WAVE_GEN_BLK->WAVE_GEN_DRV_HLF_WAVE_PRD_REG = ParaSet_waveform[CHANNEL_X].PositivePulseWidth;
|
WAVE_GEN_BLK->WAVE_GEN_DRV_HLF_WAVE_PRD_REG = ParaSet_waveform[CHANNEL_X].PositivePulseWidth;
|
||||||
WAVE_GEN_BLK->WAVE_GEN_DRV_CLK_FREQ_REG = (uint32_t)(APB_Clock_Freq/1000000); //
|
WAVE_GEN_BLK->WAVE_GEN_DRV_CLK_FREQ_REG = (uint32_t)(APB_Clock_Freq/1000000); //
|
||||||
WAVE_GEN_BLK->WAVE_GEN_DRV_SILENT_T_REG = ParaSet_waveform[CHANNEL_X].ClientTime;
|
WAVE_GEN_BLK->WAVE_GEN_DRV_SILENT_T_REG = ParaSet_waveform[CHANNEL_X].ClientTime;
|
||||||
WAVE_GEN_BLK->WAVE_GEN_DRV_REST_T_REG = ParaSet_waveform[CHANNEL_X].DeadTime;
|
WAVE_GEN_BLK->WAVE_GEN_DRV_REST_T_REG = ParaSet_waveform[CHANNEL_X].DeadTime;
|
||||||
WAVE_GEN_BLK->WAVE_GEN_DRV_NEG_SCALE_REG = 1; //寄存器默认为0, 必须写大于0的数
|
WAVE_GEN_BLK->WAVE_GEN_DRV_NEG_SCALE_REG = 1; //<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>Ϊ0<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD>
|
||||||
WAVE_GEN_BLK->WAVE_GEN_DRV_NEG_OFFSET_REG = 0;
|
WAVE_GEN_BLK->WAVE_GEN_DRV_NEG_OFFSET_REG = 0;
|
||||||
|
|
||||||
//WaveformFreq = (uint32_t)(1000000 / (wavePara.ClientTime + wavePara.DeadTime +wavePara.NegativePulseWidth + wavePara.PositivePulseWidth));
|
//WaveformFreq = (uint32_t)(1000000 / (wavePara.ClientTime + wavePara.DeadTime +wavePara.NegativePulseWidth + wavePara.PositivePulseWidth));
|
||||||
//保存波形类型数据
|
//<EFBFBD><EFBFBD><EFBFBD>沨<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
wavePara_type[CHANNEL_X] = ParaSet_waveform[CHANNEL_X].Type;
|
wavePara_type[CHANNEL_X] = ParaSet_waveform[CHANNEL_X].Type;
|
||||||
|
|
||||||
TOTAL_TIME_THRESHOLD_VALUE[CHANNEL_X] = ParaSet_waveform[CHANNEL_X].OtherWaveformPara.TotalOutputTime_S * 1000;
|
TOTAL_TIME_THRESHOLD_VALUE[CHANNEL_X] = ParaSet_waveform[CHANNEL_X].OtherWaveformPara.TotalOutputTime_S * 1000;
|
||||||
if( (ParaSet_waveform[CHANNEL_X].OtherWaveformPara.TimeOfPulseGroups_MS > 0) || (ParaSet_waveform[CHANNEL_X].OtherWaveformPara.NumOfPulseGroups >0))
|
if( (ParaSet_waveform[CHANNEL_X].OtherWaveformPara.TimeOfPulseGroups_MS > 0) || (ParaSet_waveform[CHANNEL_X].OtherWaveformPara.NumOfPulseGroups >0))
|
||||||
{
|
{
|
||||||
TRIGGER_TIME_COUNT[CHANNEL_X] = 0; //间隔时间清零
|
TRIGGER_TIME_COUNT[CHANNEL_X] = 0; //<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
TRIGGER_TIME_THRESHOLD_VALUE[CHANNEL_X]=ParaSet_waveform[CHANNEL_X].OtherWaveformPara.TimeOfPulseGroups_MS ;
|
TRIGGER_TIME_THRESHOLD_VALUE[CHANNEL_X]=ParaSet_waveform[CHANNEL_X].OtherWaveformPara.TimeOfPulseGroups_MS ;
|
||||||
NUM_OF_PULSES_THRESHOLD[CHANNEL_X] = ParaSet_waveform[CHANNEL_X].OtherWaveformPara.NumOfPulseGroups ;
|
NUM_OF_PULSES_THRESHOLD[CHANNEL_X] = ParaSet_waveform[CHANNEL_X].OtherWaveformPara.NumOfPulseGroups ;
|
||||||
WAVE_GEN_BLK->WAVE_GEN_DRV_INT_REG = 0x001f0001;
|
WAVE_GEN_BLK->WAVE_GEN_DRV_INT_REG = 0x001f0001;
|
||||||
}
|
}
|
||||||
uint8_t returnValue = cal_output_current_mA(CHANNEL_X,0, wavePara_type[CHANNEL_X], unit_t , isel_t) ;
|
uint8_t returnValue = cal_output_current_mA(CHANNEL_X,0, wavePara_type[CHANNEL_X], unit_t , isel_t) ;
|
||||||
|
|
||||||
return (uint32_t)(WAVE_GEN_BLK->WAVE_GEN_DRV_CONFIG_REG); //返回波形的频率
|
return (uint32_t)(WAVE_GEN_BLK->WAVE_GEN_DRV_CONFIG_REG); //<EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD>ε<EFBFBD>Ƶ<EFBFBD><EFBFBD>
|
||||||
}
|
}
|
||||||
|
|
||||||
/*--------------------------------------启动输出-----------------------------------------*/
|
/*--------------------------------------<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-----------------------------------------*/
|
||||||
volatile uint8_t statics_config=0; //明确当前有几个通道在输出 0 / 1 / 2 /4 / 8
|
volatile uint8_t statics_config=0; //<EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD>ǰ<EFBFBD>м<EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0 / 1 / 2 /4 / 8
|
||||||
void StartStimulatorOut(CHANNEL_NUM CHANNEL_X)
|
void StartStimulatorOut(CHANNEL_NUM CHANNEL_X)
|
||||||
{
|
{
|
||||||
CMSDK_WAVE_GEN_TypeDef* WAVE_GEN_BLK;
|
CMSDK_WAVE_GEN_TypeDef* WAVE_GEN_BLK;
|
||||||
|
|
@ -314,11 +312,11 @@ void StartStimulatorOut(CHANNEL_NUM CHANNEL_X)
|
||||||
else {WAVE_GEN_BLK = WAVE_GEN_DRVA_BLK3; statics_config |= (1<<3) ;}
|
else {WAVE_GEN_BLK = WAVE_GEN_DRVA_BLK3; statics_config |= (1<<3) ;}
|
||||||
if(statics_config > 1)
|
if(statics_config > 1)
|
||||||
{
|
{
|
||||||
ENS_STIMU_CONFIG_BIT_ENABLE(CHANNEL_X,MULTI_ELECTRODE_BIT); //多电极使能
|
ENS_STIMU_CONFIG_BIT_ENABLE(CHANNEL_X,MULTI_ELECTRODE_BIT); //<EFBFBD><EFBFBD>缫ʹ<EFBFBD><EFBFBD>
|
||||||
}
|
}
|
||||||
WAVE_GEN_BLK->WAVE_GEN_DRV_CTRL_REG = 1;
|
WAVE_GEN_BLK->WAVE_GEN_DRV_CTRL_REG = 1;
|
||||||
}
|
}
|
||||||
/*--------------------------------------停止输出----------------------------------------*/
|
/*--------------------------------------ֹͣ<EFBFBD><EFBFBD><EFBFBD>----------------------------------------*/
|
||||||
void StopStimulatorOut(CHANNEL_NUM CHANNEL_X)
|
void StopStimulatorOut(CHANNEL_NUM CHANNEL_X)
|
||||||
{
|
{
|
||||||
CMSDK_WAVE_GEN_TypeDef* WAVE_GEN_BLK;
|
CMSDK_WAVE_GEN_TypeDef* WAVE_GEN_BLK;
|
||||||
|
|
@ -333,8 +331,8 @@ void StopStimulatorOut(CHANNEL_NUM CHANNEL_X)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-----------------------------电刺激过程中的电流、频率设置-------------------------------*/
|
/*-----------------------------<EFBFBD><EFBFBD>̼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>еĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-------------------------------*/
|
||||||
/*输出电流大小修改*/
|
/*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>*/
|
||||||
uint8_t CURRENT_AMPLITUDE_MODIFY(CHANNEL_NUM CHANNEL_X , float mA)
|
uint8_t CURRENT_AMPLITUDE_MODIFY(CHANNEL_NUM CHANNEL_X , float mA)
|
||||||
{
|
{
|
||||||
CMSDK_WAVE_GEN_TypeDef* WAVE_GEN_BLK;
|
CMSDK_WAVE_GEN_TypeDef* WAVE_GEN_BLK;
|
||||||
|
|
@ -347,18 +345,18 @@ uint8_t CURRENT_AMPLITUDE_MODIFY(CHANNEL_NUM CHANNEL_X , float mA)
|
||||||
WAVE_GEN_BLK->WAVE_GEN_DRV_INT_REG = 0;
|
WAVE_GEN_BLK->WAVE_GEN_DRV_INT_REG = 0;
|
||||||
StopStimulatorOut(CHANNEL_X);
|
StopStimulatorOut(CHANNEL_X);
|
||||||
cal_output_current_mA(CHANNEL_X,mA, wavePara_type[CHANNEL_X], unit_t , isel_t) ;
|
cal_output_current_mA(CHANNEL_X,mA, wavePara_type[CHANNEL_X], unit_t , isel_t) ;
|
||||||
WAVE_GEN_BLK ->WAVE_GEN_DRV_ISEL_REG = unit_t[CHANNEL_X]; //范围 0x00 - 0x07 单元电流
|
WAVE_GEN_BLK ->WAVE_GEN_DRV_ISEL_REG = unit_t[CHANNEL_X]; //<EFBFBD><EFBFBD>Χ 0x00 - 0x07 <20><>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD>
|
||||||
for(int i=0; i<64; i++){
|
for(int i=0; i<64; i++){
|
||||||
WAVE_GEN_BLK->WAVE_GEN_DRV_IN_WAVE_ADDR_REG = i;
|
WAVE_GEN_BLK->WAVE_GEN_DRV_IN_WAVE_ADDR_REG = i;
|
||||||
WAVE_GEN_BLK->WAVE_GEN_DRV_IN_WAVE_REG = isel_t[CHANNEL_X][i]; //最大0xff 电流挡位
|
WAVE_GEN_BLK->WAVE_GEN_DRV_IN_WAVE_REG = isel_t[CHANNEL_X][i]; //<EFBFBD><EFBFBD><EFBFBD>0xff <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||||
}
|
}
|
||||||
WAVE_GEN_BLK->WAVE_GEN_DRV_INT_REG = 0x001f0001;
|
WAVE_GEN_BLK->WAVE_GEN_DRV_INT_REG = 0x001f0001;
|
||||||
NVIC_EnableIRQ(WG_DRV_IRQn);
|
NVIC_EnableIRQ(WG_DRV_IRQn);
|
||||||
StartStimulatorOut(CHANNEL_X);
|
StartStimulatorOut(CHANNEL_X);
|
||||||
return (uint8_t)(WAVE_GEN_BLK->WAVE_GEN_DRV_CTRL_REG); //返回状态
|
return (uint8_t)(WAVE_GEN_BLK->WAVE_GEN_DRV_CTRL_REG); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
||||||
}
|
}
|
||||||
|
|
||||||
/*输出波形频率的实时修改,输出时,波形频率=(1000000/(正半周期脉宽 + 负半周期脉宽 + 死区时间 + 静默时间))*/
|
/*<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>ʵ<EFBFBD>ʵʱ<EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>=(1000000/(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> + <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> + <20><>Ĭʱ<C4AC><CAB1>))*/
|
||||||
uint32_t CURRENT_FREQ_MODIFY(CHANNEL_NUM CHANNEL_X , uint32_t freq)
|
uint32_t CURRENT_FREQ_MODIFY(CHANNEL_NUM CHANNEL_X , uint32_t freq)
|
||||||
{
|
{
|
||||||
uint32_t Pulse_Width = 0;
|
uint32_t Pulse_Width = 0;
|
||||||
|
|
@ -371,16 +369,16 @@ uint32_t CURRENT_FREQ_MODIFY(CHANNEL_NUM CHANNEL_X , uint32_t freq)
|
||||||
freq = 50000;
|
freq = 50000;
|
||||||
else if(freq < 10)
|
else if(freq < 10)
|
||||||
freq = 10;
|
freq = 10;
|
||||||
//死区数值不改动,如果静默时间不为0 ,则通过修改静默时间修改波形频率 ,如果静默时间为0,则修改正半周期/负半周期脉宽修改频率
|
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭʱ<EFBFBD>䲻Ϊ0 <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD>ľ<DEB8>Ĭʱ<C4AC><CAB1><EFBFBD>IJ<DEB8><C4B2><EFBFBD>Ƶ<EFBFBD><C6B5> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭʱ<C4AC><CAB1>Ϊ0<CEAA><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5>
|
||||||
if(ParaSet_waveform[CHANNEL_X].ClientTime > 0)
|
if(ParaSet_waveform[CHANNEL_X].ClientTime > 0)
|
||||||
{
|
{
|
||||||
Pulse_Width/*静默时间*/ = (uint32_t)((1000000/freq) - ParaSet_waveform[CHANNEL_X].DeadTime - ParaSet_waveform[CHANNEL_X].PositivePulseWidth - ParaSet_waveform[CHANNEL_X].NegativePulseWidth);
|
Pulse_Width/*<EFBFBD><EFBFBD>Ĭʱ<EFBFBD><EFBFBD>*/ = (uint32_t)((1000000/freq) - ParaSet_waveform[CHANNEL_X].DeadTime - ParaSet_waveform[CHANNEL_X].PositivePulseWidth - ParaSet_waveform[CHANNEL_X].NegativePulseWidth);
|
||||||
WAVE_GEN_BLK->WAVE_GEN_DRV_SILENT_T_REG = Pulse_Width;
|
WAVE_GEN_BLK->WAVE_GEN_DRV_SILENT_T_REG = Pulse_Width;
|
||||||
return Pulse_Width;
|
return Pulse_Width;
|
||||||
}
|
}
|
||||||
else if(ParaSet_waveform[CHANNEL_X].ClientTime == 0)
|
else if(ParaSet_waveform[CHANNEL_X].ClientTime == 0)
|
||||||
{
|
{
|
||||||
Pulse_Width/*正+负脉宽*/ = (uint32_t)((1000000/freq) - ParaSet_waveform[CHANNEL_X].DeadTime) ;
|
Pulse_Width/*<EFBFBD><EFBFBD>+<2B><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/ = (uint32_t)((1000000/freq) - ParaSet_waveform[CHANNEL_X].DeadTime) ;
|
||||||
if(ParaSet_waveform[CHANNEL_X].NegativePulseWidth == 0)
|
if(ParaSet_waveform[CHANNEL_X].NegativePulseWidth == 0)
|
||||||
WAVE_GEN_BLK->WAVE_GEN_DRV_HLF_WAVE_PRD_REG = Pulse_Width;
|
WAVE_GEN_BLK->WAVE_GEN_DRV_HLF_WAVE_PRD_REG = Pulse_Width;
|
||||||
else
|
else
|
||||||
|
|
@ -397,7 +395,7 @@ uint32_t CURRENT_FREQ_MODIFY(CHANNEL_NUM CHANNEL_X , uint32_t freq)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//电刺激时间计时
|
//<EFBFBD><EFBFBD>̼<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD>ʱ
|
||||||
|
|
||||||
uint32_t StimuTimeCount_S(CHANNEL_NUM CHANNEL_X , TIME_COUNT_MODE MODE)
|
uint32_t StimuTimeCount_S(CHANNEL_NUM CHANNEL_X , TIME_COUNT_MODE MODE)
|
||||||
{
|
{
|
||||||
|
|
@ -406,20 +404,20 @@ uint32_t StimuTimeCount_S(CHANNEL_NUM CHANNEL_X , TIME_COUNT_MODE MODE)
|
||||||
{
|
{
|
||||||
count_time = *(CHANNEL_TIME_COUNT+CHANNEL_X) ;
|
count_time = *(CHANNEL_TIME_COUNT+CHANNEL_X) ;
|
||||||
}
|
}
|
||||||
else //MODE == TRIGGER_TIME_MODE 间隔时间
|
else //MODE == TRIGGER_TIME_MODE <EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
||||||
{
|
{
|
||||||
count_time = *(TRIGGER_TIME_COUNT+CHANNEL_X);
|
count_time = *(TRIGGER_TIME_COUNT+CHANNEL_X);
|
||||||
}
|
}
|
||||||
return count_time;
|
return count_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
//返回当前波形发生了多少次(需要开启波形发生器的中断)
|
//<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>η<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˶<EFBFBD><EFBFBD>ٴΣ<EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>η<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<EFBFBD>
|
||||||
uint32_t waveformOccurreCount(CHANNEL_NUM CHANNEL_X)
|
uint32_t waveformOccurreCount(CHANNEL_NUM CHANNEL_X)
|
||||||
{
|
{
|
||||||
return (uint32_t)(wave_gen_irq_occurred[CHANNEL_X]/4);
|
return (uint32_t)(wave_gen_irq_occurred[CHANNEL_X]/4);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------------电刺激驱动器中断处理函数-----------------------*/
|
/*-------------------------------<EFBFBD><EFBFBD>̼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-----------------------*/
|
||||||
volatile uint32_t NUM_OF_PULSES_THRESHOLD[4]={0,0,0,0};
|
volatile uint32_t NUM_OF_PULSES_THRESHOLD[4]={0,0,0,0};
|
||||||
volatile uint32_t wave_gen_irq_occurred[4]={0,0,0,0};
|
volatile uint32_t wave_gen_irq_occurred[4]={0,0,0,0};
|
||||||
void WG_DRV_Handler(void)
|
void WG_DRV_Handler(void)
|
||||||
|
|
@ -433,9 +431,9 @@ void WG_DRV_Handler(void)
|
||||||
else if(i==2){ DRVA= WAVE_GEN_DRVA_BLK2; }
|
else if(i==2){ DRVA= WAVE_GEN_DRVA_BLK2; }
|
||||||
else if(i==3){ DRVA= WAVE_GEN_DRVA_BLK3; }
|
else if(i==3){ DRVA= WAVE_GEN_DRVA_BLK3; }
|
||||||
|
|
||||||
if((DRVA->WAVE_GEN_DRV_INT_REG & CMSDK_WAVE_GEN_DRV_INT_READ_DRIVER_NUM_Msk) == i) //判断哪个通道发生了中断
|
if((DRVA->WAVE_GEN_DRV_INT_REG & CMSDK_WAVE_GEN_DRV_INT_READ_DRIVER_NUM_Msk) == i) //<EFBFBD>ж<EFBFBD><EFBFBD>ĸ<EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
{
|
{
|
||||||
if((DRVA->WAVE_GEN_DRV_INT_REG & CMSDK_WAVE_GEN_DRV_INT_FIRSTADDR_STS_Msk) == CMSDK_WAVE_GEN_DRV_INT_FIRSTADDR_STS_Msk)//第一中断点发生中断
|
if((DRVA->WAVE_GEN_DRV_INT_REG & CMSDK_WAVE_GEN_DRV_INT_FIRSTADDR_STS_Msk) == CMSDK_WAVE_GEN_DRV_INT_FIRSTADDR_STS_Msk)//<EFBFBD><EFBFBD>һ<EFBFBD>жϵ㷢<EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||||
{
|
{
|
||||||
if(((DRVA->WAVE_GEN_DRV_INT_REG & CMSDK_WAVE_GEN_DRV_INT_READ_FIRST_ADDR_Msk)>>CMSDK_WAVE_GEN_DRV_INT_READ_FIRST_ADDR_Pos) == 0)
|
if(((DRVA->WAVE_GEN_DRV_INT_REG & CMSDK_WAVE_GEN_DRV_INT_READ_FIRST_ADDR_Msk)>>CMSDK_WAVE_GEN_DRV_INT_READ_FIRST_ADDR_Pos) == 0)
|
||||||
{
|
{
|
||||||
|
|
@ -448,7 +446,7 @@ void WG_DRV_Handler(void)
|
||||||
{
|
{
|
||||||
DRVA->WAVE_GEN_DRV_INT_REG = (31 << CMSDK_WAVE_GEN_DRV_INT_SECOND_ADDR_Pos) | (0 << CMSDK_WAVE_GEN_DRV_INT_FIRST_ADDR_Pos) | CMSDK_WAVE_GEN_DRV_INT_FIRSTADDR_CLR_Msk | CMSDK_WAVE_GEN_DRV_INT_EN_Msk;
|
DRVA->WAVE_GEN_DRV_INT_REG = (31 << CMSDK_WAVE_GEN_DRV_INT_SECOND_ADDR_Pos) | (0 << CMSDK_WAVE_GEN_DRV_INT_FIRST_ADDR_Pos) | CMSDK_WAVE_GEN_DRV_INT_FIRSTADDR_CLR_Msk | CMSDK_WAVE_GEN_DRV_INT_EN_Msk;
|
||||||
}
|
}
|
||||||
if((NUM_OF_PULSES_THRESHOLD[i] > 0)) //需要脉冲计数功能才开启计数
|
if((NUM_OF_PULSES_THRESHOLD[i] > 0)) //<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܲſ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
wave_gen_irq_occurred[i]++;
|
wave_gen_irq_occurred[i]++;
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -459,8 +457,8 @@ void WG_DRV_Handler(void)
|
||||||
DRVA->WAVE_GEN_DRV_INT_REG = CMSDK_WAVE_GEN_DRV_INT_SECONDADDR_CLR_Msk | CMSDK_WAVE_GEN_DRV_INT_EN_Msk;
|
DRVA->WAVE_GEN_DRV_INT_REG = CMSDK_WAVE_GEN_DRV_INT_SECONDADDR_CLR_Msk | CMSDK_WAVE_GEN_DRV_INT_EN_Msk;
|
||||||
NVIC_DisableIRQ(WG_DRV_IRQn);
|
NVIC_DisableIRQ(WG_DRV_IRQn);
|
||||||
DRVA->WAVE_GEN_DRV_INT_REG = 0;
|
DRVA->WAVE_GEN_DRV_INT_REG = 0;
|
||||||
TRIGGER_TIME_COUNT_FLAG |= (1<<i); //脉冲群标志置1
|
TRIGGER_TIME_COUNT_FLAG |= (1<<i); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ⱥ<EFBFBD><EFBFBD>־<EFBFBD><EFBFBD>1
|
||||||
wave_gen_irq_occurred[i] = 0; //清零计数
|
wave_gen_irq_occurred[i] = 0; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
5131
JLinkLog.txt
5131
JLinkLog.txt
File diff suppressed because it is too large
Load Diff
|
|
@ -37,11 +37,12 @@ Section Cross References
|
||||||
ens1_uart.o(i.UART_Init) refers to ens1_clock.o(.data) for APB_Clock_Freq
|
ens1_uart.o(i.UART_Init) refers to ens1_clock.o(.data) for APB_Clock_Freq
|
||||||
ens1_uart.o(i.UartPutc) refers to ens1_uart.o(i.UARTLine_THREmpty) for UARTLine_THREmpty
|
ens1_uart.o(i.UartPutc) refers to ens1_uart.o(i.UARTLine_THREmpty) for UARTLine_THREmpty
|
||||||
ens1_uart.o(i.UartPutc) refers to ens1_uart.o(i.WRITE_UART_THRBuff) for WRITE_UART_THRBuff
|
ens1_uart.o(i.UartPutc) refers to ens1_uart.o(i.WRITE_UART_THRBuff) for WRITE_UART_THRBuff
|
||||||
|
ens1_uart.o(i.Uart_Send) refers to ens1_uart.o(i.UARTLine_THREmpty) for UARTLine_THREmpty
|
||||||
|
ens1_uart.o(i.Uart_Send) refers to ens1_uart.o(i.WRITE_UART_THRBuff) for WRITE_UART_THRBuff
|
||||||
ens1_gpio.o(i.GPIO_IO_Init) refers to ens1_gpio.o(i.GPIO_AltFunction) for GPIO_AltFunction
|
ens1_gpio.o(i.GPIO_IO_Init) refers to ens1_gpio.o(i.GPIO_AltFunction) for GPIO_AltFunction
|
||||||
ens1_gpio.o(i.GPIO_Overturn) refers to ens1_gpio.o(i.GPIO_GetOutputValue) for GPIO_GetOutputValue
|
ens1_gpio.o(i.GPIO_Overturn) refers to ens1_gpio.o(i.GPIO_GetOutputValue) for GPIO_GetOutputValue
|
||||||
ens1_gpio.o(i.GPIO_Overturn) refers to ens1_gpio.o(i.GPIO_ResetOutput) for GPIO_ResetOutput
|
ens1_gpio.o(i.GPIO_Overturn) refers to ens1_gpio.o(i.GPIO_ResetOutput) for GPIO_ResetOutput
|
||||||
ens1_gpio.o(i.GPIO_Overturn) refers to ens1_gpio.o(i.GPIO_SetOutput) for GPIO_SetOutput
|
ens1_gpio.o(i.GPIO_Overturn) refers to ens1_gpio.o(i.GPIO_SetOutput) for GPIO_SetOutput
|
||||||
ens1_mtp.o(i.flash_buff_write) refers to printf1.o(i.__0printf$1) for __2printf
|
|
||||||
ens1_mtp.o(i.flash_write_ctrl) refers to ens1_mtp.o(i.flash_buff_write) for flash_buff_write
|
ens1_mtp.o(i.flash_write_ctrl) refers to ens1_mtp.o(i.flash_buff_write) for flash_buff_write
|
||||||
ens1_mtp.o(i.write_data) refers to malloc.o(i.malloc) for malloc
|
ens1_mtp.o(i.write_data) refers to malloc.o(i.malloc) for malloc
|
||||||
ens1_mtp.o(i.write_data) refers to memcpya.o(.text) for __aeabi_memcpy
|
ens1_mtp.o(i.write_data) refers to memcpya.o(.text) for __aeabi_memcpy
|
||||||
|
|
@ -66,7 +67,6 @@ Section Cross References
|
||||||
ens1_timer.o(i.TIMER0_Init) refers to ens1_timer.o(i.NVIC_DisableIRQ) for NVIC_DisableIRQ
|
ens1_timer.o(i.TIMER0_Init) refers to ens1_timer.o(i.NVIC_DisableIRQ) for NVIC_DisableIRQ
|
||||||
ens1_timer.o(i.TIMER0_Init) refers to ens1_timer.o(i.NVIC_ClearPendingIRQ) for NVIC_ClearPendingIRQ
|
ens1_timer.o(i.TIMER0_Init) refers to ens1_timer.o(i.NVIC_ClearPendingIRQ) for NVIC_ClearPendingIRQ
|
||||||
ens1_timer.o(i.TIMER0_Init) refers to uidiv.o(.text) for __aeabi_uidivmod
|
ens1_timer.o(i.TIMER0_Init) refers to uidiv.o(.text) for __aeabi_uidivmod
|
||||||
ens1_timer.o(i.TIMER0_Init) refers to printf1.o(i.__0printf$1) for __2printf
|
|
||||||
ens1_timer.o(i.TIMER0_Init) refers to ens1_timer.o(i.CMSDK_timer_Init) for CMSDK_timer_Init
|
ens1_timer.o(i.TIMER0_Init) refers to ens1_timer.o(i.CMSDK_timer_Init) for CMSDK_timer_Init
|
||||||
ens1_timer.o(i.TIMER0_Init) refers to ens1_timer.o(i.NVIC_EnableIRQ) for NVIC_EnableIRQ
|
ens1_timer.o(i.TIMER0_Init) refers to ens1_timer.o(i.NVIC_EnableIRQ) for NVIC_EnableIRQ
|
||||||
ens1_timer.o(i.TIMER0_Init) refers to ens1_clock.o(.data) for APB_Clock_Freq
|
ens1_timer.o(i.TIMER0_Init) refers to ens1_clock.o(.data) for APB_Clock_Freq
|
||||||
|
|
@ -87,19 +87,20 @@ Section Cross References
|
||||||
ens1_timer.o(i.Time_Manager_Reset) refers to ens1_timer.o(i.Time_Manager_Init) for Time_Manager_Init
|
ens1_timer.o(i.Time_Manager_Reset) refers to ens1_timer.o(i.Time_Manager_Init) for Time_Manager_Init
|
||||||
ens1_wavegen.o(i.EMS_Configure) refers to memcpya.o(.text) for __aeabi_memcpy
|
ens1_wavegen.o(i.EMS_Configure) refers to memcpya.o(.text) for __aeabi_memcpy
|
||||||
ens1_wavegen.o(i.EMS_Configure) refers to ens1_wavegen.o(.bss) for g_ems_config
|
ens1_wavegen.o(i.EMS_Configure) refers to ens1_wavegen.o(.bss) for g_ems_config
|
||||||
|
ens1_wavegen.o(i.EMS_Process) refers to ens1_wavegen.o(i.EMS_Process_Ramp) for EMS_Process_Ramp
|
||||||
ens1_wavegen.o(i.EMS_Process) refers to ens1_wavegen.o(i.wavegen_driverA_sine_test) for wavegen_driverA_sine_test
|
ens1_wavegen.o(i.EMS_Process) refers to ens1_wavegen.o(i.wavegen_driverA_sine_test) for wavegen_driverA_sine_test
|
||||||
ens1_wavegen.o(i.EMS_Process) refers to ens1_wavegen.o(.data) for g_ems_running
|
ens1_wavegen.o(i.EMS_Process) refers to ens1_wavegen.o(.data) for g_ems_running
|
||||||
ens1_wavegen.o(i.EMS_Process) refers to ens1_wavegen.o(.bss) for g_ems_config
|
ens1_wavegen.o(i.EMS_Process_Ramp) refers to uidiv.o(.text) for __aeabi_uidivmod
|
||||||
|
ens1_wavegen.o(i.EMS_Process_Ramp) refers to ens1_wavegen.o(.bss) for g_ems_config
|
||||||
|
ens1_wavegen.o(i.EMS_Process_Ramp) refers to ens1_wavegen.o(.data) for g_ems_running
|
||||||
ens1_wavegen.o(i.EMS_Start) refers to ens1_wavegen.o(i.wavegen_Start) for wavegen_Start
|
ens1_wavegen.o(i.EMS_Start) refers to ens1_wavegen.o(i.wavegen_Start) for wavegen_Start
|
||||||
ens1_wavegen.o(i.EMS_Start) refers to printf1.o(i.__0printf$1) for __2printf
|
|
||||||
ens1_wavegen.o(i.EMS_Stop) refers to ens1_wavegen.o(i.wavegen_Stop) for wavegen_Stop
|
ens1_wavegen.o(i.EMS_Stop) refers to ens1_wavegen.o(i.wavegen_Stop) for wavegen_Stop
|
||||||
ens1_wavegen.o(i.EMS_Stop) refers to printf1.o(i.__0printf$1) for __2printf
|
|
||||||
ens1_wavegen.o(i.EMS_Stop) refers to ens1_wavegen.o(.data) for g_ems_running
|
ens1_wavegen.o(i.EMS_Stop) refers to ens1_wavegen.o(.data) for g_ems_running
|
||||||
ens1_wavegen.o(i.EMS_UpdateIntensity) refers to ens1_wavegen.o(.bss) for g_ems_config
|
ens1_wavegen.o(i.EMS_UpdateIntensity) refers to ens1_wavegen.o(.bss) for g_ems_config
|
||||||
ens1_wavegen.o(i.wavegen_Init) refers to ens1_boost.o(i.boost_voltage_select_26V) for boost_voltage_select_26V
|
ens1_wavegen.o(i.wavegen_Init) refers to ens1_boost.o(i.boost_voltage_select_55V) for boost_voltage_select_55V
|
||||||
ens1_wavegen.o(i.wavegen_Init) refers to puts.o(i.puts) for puts
|
|
||||||
ens1_wavegen.o(i.wavegen_Start) refers to ens1_wavegen.o(.data) for g_ems_running
|
ens1_wavegen.o(i.wavegen_Start) refers to ens1_wavegen.o(.data) for g_ems_running
|
||||||
ens1_wavegen.o(i.wavegen_driverA_sine_test) refers to puts.o(i.puts) for puts
|
ens1_wavegen.o(i.wavegen_Start) refers to ens1_wavegen.o(.bss) for g_ems_config
|
||||||
|
ens1_wavegen.o(i.wavegen_driverA_sine_test) refers to printfb.o(i.__0printf$bare) for __2printf
|
||||||
system_cmsdk_cm0.o(i.SystemCoreClockUpdate) refers to system_cmsdk_cm0.o(.data) for SystemCoreClock
|
system_cmsdk_cm0.o(i.SystemCoreClockUpdate) refers to system_cmsdk_cm0.o(.data) for SystemCoreClock
|
||||||
system_cmsdk_cm0.o(i.SystemInit) refers to system_cmsdk_cm0.o(.data) for SystemCoreClock
|
system_cmsdk_cm0.o(i.SystemInit) refers to system_cmsdk_cm0.o(.data) for SystemCoreClock
|
||||||
startup_cmsdk_cm0.o(RESET) refers to startup_cmsdk_cm0.o(STACK) for __initial_sp
|
startup_cmsdk_cm0.o(RESET) refers to startup_cmsdk_cm0.o(STACK) for __initial_sp
|
||||||
|
|
@ -154,10 +155,6 @@ Section Cross References
|
||||||
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry9a.o(.ARM.Collect$$$$0000000B) for _main_init
|
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry9a.o(.ARM.Collect$$$$0000000B) for _main_init
|
||||||
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry5.o(.ARM.Collect$$$$00000004) for _main_scatterload
|
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry5.o(.ARM.Collect$$$$00000004) for _main_scatterload
|
||||||
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry2.o(.ARM.Collect$$$$00000001) for _main_stk
|
entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry2.o(.ARM.Collect$$$$00000001) for _main_stk
|
||||||
puts.o(i.puts) refers to retarget.o(i.fputc) for fputc
|
|
||||||
puts.o(i.puts) refers to retarget.o(.data) for __stdout
|
|
||||||
puts_e.o(.text) refers to retarget.o(i.fputc) for fputc
|
|
||||||
puts_e.o(.text) refers to retarget.o(.data) for __stdout
|
|
||||||
printfb.o(i.__0fprintf$bare) refers to printfb.o(i._printf_core) for _printf_core
|
printfb.o(i.__0fprintf$bare) refers to printfb.o(i._printf_core) for _printf_core
|
||||||
printfb.o(i.__0fprintf$bare) refers to retarget.o(i.fputc) for fputc
|
printfb.o(i.__0fprintf$bare) refers to retarget.o(i.fputc) for fputc
|
||||||
printfb.o(i.__0printf$bare) refers to printfb.o(i._printf_core) for _printf_core
|
printfb.o(i.__0printf$bare) refers to printfb.o(i._printf_core) for _printf_core
|
||||||
|
|
@ -509,6 +506,7 @@ Removing Unused input sections from the image.
|
||||||
Removing ens1_uart.o(i.UART_TX_FIFO_EMPTY), (16 bytes).
|
Removing ens1_uart.o(i.UART_TX_FIFO_EMPTY), (16 bytes).
|
||||||
Removing ens1_uart.o(i.UART_TX_FIFO_FULL), (18 bytes).
|
Removing ens1_uart.o(i.UART_TX_FIFO_FULL), (18 bytes).
|
||||||
Removing ens1_uart.o(i.UART_TX_FIFO_LEN), (14 bytes).
|
Removing ens1_uart.o(i.UART_TX_FIFO_LEN), (14 bytes).
|
||||||
|
Removing ens1_uart.o(i.Uart_Send), (54 bytes).
|
||||||
Removing ens1_gpio.o(.rev16_text), (4 bytes).
|
Removing ens1_gpio.o(.rev16_text), (4 bytes).
|
||||||
Removing ens1_gpio.o(.revsh_text), (4 bytes).
|
Removing ens1_gpio.o(.revsh_text), (4 bytes).
|
||||||
Removing ens1_gpio.o(i.GPIO_AnalogChannel_Control), (52 bytes).
|
Removing ens1_gpio.o(i.GPIO_AnalogChannel_Control), (52 bytes).
|
||||||
|
|
@ -516,7 +514,7 @@ Removing Unused input sections from the image.
|
||||||
Removing ens1_gpio.o(i.GPIO_IO_Select), (172 bytes).
|
Removing ens1_gpio.o(i.GPIO_IO_Select), (172 bytes).
|
||||||
Removing ens1_mtp.o(.rev16_text), (4 bytes).
|
Removing ens1_mtp.o(.rev16_text), (4 bytes).
|
||||||
Removing ens1_mtp.o(.revsh_text), (4 bytes).
|
Removing ens1_mtp.o(.revsh_text), (4 bytes).
|
||||||
Removing ens1_mtp.o(i.flash_buff_write), (68 bytes).
|
Removing ens1_mtp.o(i.flash_buff_write), (40 bytes).
|
||||||
Removing ens1_mtp.o(i.flash_read), (8 bytes).
|
Removing ens1_mtp.o(i.flash_read), (8 bytes).
|
||||||
Removing ens1_mtp.o(i.flash_write_ctrl), (44 bytes).
|
Removing ens1_mtp.o(i.flash_write_ctrl), (44 bytes).
|
||||||
Removing ens1_mtp.o(i.write_data), (56 bytes).
|
Removing ens1_mtp.o(i.write_data), (56 bytes).
|
||||||
|
|
@ -560,8 +558,8 @@ Removing Unused input sections from the image.
|
||||||
Removing ens1_boost.o(.revsh_text), (4 bytes).
|
Removing ens1_boost.o(.revsh_text), (4 bytes).
|
||||||
Removing ens1_boost.o(i.boost_voltage_select_11V), (20 bytes).
|
Removing ens1_boost.o(i.boost_voltage_select_11V), (20 bytes).
|
||||||
Removing ens1_boost.o(i.boost_voltage_select_15V), (20 bytes).
|
Removing ens1_boost.o(i.boost_voltage_select_15V), (20 bytes).
|
||||||
|
Removing ens1_boost.o(i.boost_voltage_select_26V), (20 bytes).
|
||||||
Removing ens1_boost.o(i.boost_voltage_select_45V), (20 bytes).
|
Removing ens1_boost.o(i.boost_voltage_select_45V), (20 bytes).
|
||||||
Removing ens1_boost.o(i.boost_voltage_select_55V), (20 bytes).
|
|
||||||
Removing ens1_wavegen.o(.rev16_text), (4 bytes).
|
Removing ens1_wavegen.o(.rev16_text), (4 bytes).
|
||||||
Removing ens1_wavegen.o(.revsh_text), (4 bytes).
|
Removing ens1_wavegen.o(.revsh_text), (4 bytes).
|
||||||
Removing ens1_wavegen.o(i.EMS_UpdateIntensity), (12 bytes).
|
Removing ens1_wavegen.o(i.EMS_UpdateIntensity), (12 bytes).
|
||||||
|
|
@ -572,7 +570,7 @@ Removing Unused input sections from the image.
|
||||||
Removing dfixul.o(.text), (64 bytes).
|
Removing dfixul.o(.text), (64 bytes).
|
||||||
Removing cdcmple.o(.text), (40 bytes).
|
Removing cdcmple.o(.text), (40 bytes).
|
||||||
|
|
||||||
81 unused section(s) (total 2028 bytes) removed from the image.
|
82 unused section(s) (total 2054 bytes) removed from the image.
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
|
|
||||||
|
|
@ -585,64 +583,61 @@ Image Symbol Table
|
||||||
../clib/microlib/division.c 0x00000000 Number 0 uldiv.o ABSOLUTE
|
../clib/microlib/division.c 0x00000000 Number 0 uldiv.o ABSOLUTE
|
||||||
../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE
|
../clib/microlib/division.c 0x00000000 Number 0 uidiv.o ABSOLUTE
|
||||||
../clib/microlib/errno.c 0x00000000 Number 0 errno.o ABSOLUTE
|
../clib/microlib/errno.c 0x00000000 Number 0 errno.o ABSOLUTE
|
||||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE
|
|
||||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE
|
|
||||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE
|
|
||||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE
|
|
||||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE
|
|
||||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE
|
|
||||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE
|
|
||||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE
|
|
||||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE
|
../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE
|
||||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE
|
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE
|
||||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE
|
../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE
|
||||||
|
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE
|
||||||
|
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE
|
||||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE
|
../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE
|
||||||
|
../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE
|
||||||
|
../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE
|
||||||
|
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE
|
||||||
|
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE
|
||||||
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE
|
../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE
|
||||||
|
../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE
|
||||||
|
../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE
|
||||||
../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE
|
../clib/microlib/longlong.c 0x00000000 Number 0 llsshr.o ABSOLUTE
|
||||||
../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE
|
../clib/microlib/longlong.c 0x00000000 Number 0 llshl.o ABSOLUTE
|
||||||
../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE
|
../clib/microlib/longlong.c 0x00000000 Number 0 llushr.o ABSOLUTE
|
||||||
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloc.o ABSOLUTE
|
|
||||||
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocra.o ABSOLUTE
|
|
||||||
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloca.o ABSOLUTE
|
|
||||||
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocr.o ABSOLUTE
|
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocr.o ABSOLUTE
|
||||||
|
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloc.o ABSOLUTE
|
||||||
|
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 malloca.o ABSOLUTE
|
||||||
|
../clib/microlib/malloc/malloc.c 0x00000000 Number 0 mallocra.o ABSOLUTE
|
||||||
../clib/microlib/malloc/mvars.c 0x00000000 Number 0 mvars.o ABSOLUTE
|
../clib/microlib/malloc/mvars.c 0x00000000 Number 0 mvars.o ABSOLUTE
|
||||||
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE
|
|
||||||
../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE
|
|
||||||
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE
|
|
||||||
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE
|
|
||||||
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE
|
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf4.o ABSOLUTE
|
||||||
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE
|
|
||||||
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE
|
|
||||||
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE
|
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf2.o ABSOLUTE
|
||||||
|
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf5.o ABSOLUTE
|
||||||
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE
|
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf1.o ABSOLUTE
|
||||||
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE
|
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf0.o ABSOLUTE
|
||||||
../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE
|
../clib/microlib/printf/printf.c 0x00000000 Number 0 printfb.o ABSOLUTE
|
||||||
../clib/microlib/printf/stubs.s 0x00000000 Number 0 stubs.o ABSOLUTE
|
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf6.o ABSOLUTE
|
||||||
../clib/microlib/stdio/puts.c 0x00000000 Number 0 puts_e.o ABSOLUTE
|
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf3.o ABSOLUTE
|
||||||
../clib/microlib/stdio/puts.c 0x00000000 Number 0 puts.o ABSOLUTE
|
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf7.o ABSOLUTE
|
||||||
../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE
|
../clib/microlib/printf/printf.c 0x00000000 Number 0 printf8.o ABSOLUTE
|
||||||
|
../clib/microlib/printf/printf.c 0x00000000 Number 0 printfa.o ABSOLUTE
|
||||||
../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE
|
../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpya.o ABSOLUTE
|
||||||
|
../clib/microlib/string/memcpy.c 0x00000000 Number 0 memcpyb.o ABSOLUTE
|
||||||
../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE
|
../clib/microlib/string/memset.c 0x00000000 Number 0 memseta.o ABSOLUTE
|
||||||
../clib/microlib/stubs.s 0x00000000 Number 0 iusefp.o ABSOLUTE
|
|
||||||
../clib/microlib/stubs.s 0x00000000 Number 0 useno.o ABSOLUTE
|
../clib/microlib/stubs.s 0x00000000 Number 0 useno.o ABSOLUTE
|
||||||
|
../clib/microlib/stubs.s 0x00000000 Number 0 iusefp.o ABSOLUTE
|
||||||
../fplib/microlib/fpadd.c 0x00000000 Number 0 dadd.o ABSOLUTE
|
../fplib/microlib/fpadd.c 0x00000000 Number 0 dadd.o ABSOLUTE
|
||||||
../fplib/microlib/fpdiv.c 0x00000000 Number 0 ddiv.o ABSOLUTE
|
../fplib/microlib/fpdiv.c 0x00000000 Number 0 ddiv.o ABSOLUTE
|
||||||
../fplib/microlib/fpepilogue.c 0x00000000 Number 0 depilogue.o ABSOLUTE
|
../fplib/microlib/fpepilogue.c 0x00000000 Number 0 depilogue.o ABSOLUTE
|
||||||
../fplib/microlib/fpfix.c 0x00000000 Number 0 dfixul.o ABSOLUTE
|
|
||||||
../fplib/microlib/fpfix.c 0x00000000 Number 0 dfixui.o ABSOLUTE
|
../fplib/microlib/fpfix.c 0x00000000 Number 0 dfixui.o ABSOLUTE
|
||||||
../fplib/microlib/fpflt.c 0x00000000 Number 0 dfltui.o ABSOLUTE
|
../fplib/microlib/fpfix.c 0x00000000 Number 0 dfixul.o ABSOLUTE
|
||||||
../fplib/microlib/fpflt.c 0x00000000 Number 0 dflti.o ABSOLUTE
|
../fplib/microlib/fpflt.c 0x00000000 Number 0 dflti.o ABSOLUTE
|
||||||
|
../fplib/microlib/fpflt.c 0x00000000 Number 0 dfltui.o ABSOLUTE
|
||||||
../fplib/microlib/fpmul.c 0x00000000 Number 0 dmul.o ABSOLUTE
|
../fplib/microlib/fpmul.c 0x00000000 Number 0 dmul.o ABSOLUTE
|
||||||
../fplib/microlib/fpscalb.c 0x00000000 Number 0 dscalb.o ABSOLUTE
|
../fplib/microlib/fpscalb.c 0x00000000 Number 0 dscalb.o ABSOLUTE
|
||||||
../fplib/microlib/fpsqrt.c 0x00000000 Number 0 dsqrt.o ABSOLUTE
|
../fplib/microlib/fpsqrt.c 0x00000000 Number 0 dsqrt.o ABSOLUTE
|
||||||
../mathlib/dunder.c 0x00000000 Number 0 dunder.o ABSOLUTE
|
../mathlib/dunder.c 0x00000000 Number 0 dunder.o ABSOLUTE
|
||||||
../mathlib/fpclassify.c 0x00000000 Number 0 fpclassify.o ABSOLUTE
|
../mathlib/fpclassify.c 0x00000000 Number 0 fpclassify.o ABSOLUTE
|
||||||
../mathlib/poly.c 0x00000000 Number 0 poly.o ABSOLUTE
|
../mathlib/poly.c 0x00000000 Number 0 poly.o ABSOLUTE
|
||||||
../mathlib/pow.c 0x00000000 Number 0 pow.o ABSOLUTE
|
|
||||||
../mathlib/pow.c 0x00000000 Number 0 pow_x.o ABSOLUTE
|
../mathlib/pow.c 0x00000000 Number 0 pow_x.o ABSOLUTE
|
||||||
|
../mathlib/pow.c 0x00000000 Number 0 pow.o ABSOLUTE
|
||||||
../mathlib/qnan.c 0x00000000 Number 0 qnan.o ABSOLUTE
|
../mathlib/qnan.c 0x00000000 Number 0 qnan.o ABSOLUTE
|
||||||
../mathlib/sqrt.c 0x00000000 Number 0 sqrt_x.o ABSOLUTE
|
|
||||||
../mathlib/sqrt.c 0x00000000 Number 0 sqrt.o ABSOLUTE
|
../mathlib/sqrt.c 0x00000000 Number 0 sqrt.o ABSOLUTE
|
||||||
|
../mathlib/sqrt.c 0x00000000 Number 0 sqrt_x.o ABSOLUTE
|
||||||
CORE\ARM\startup_CMSDK_CM0.s 0x00000000 Number 0 startup_cmsdk_cm0.o ABSOLUTE
|
CORE\ARM\startup_CMSDK_CM0.s 0x00000000 Number 0 startup_cmsdk_cm0.o ABSOLUTE
|
||||||
CORE\\system_CMSDK_CM0.c 0x00000000 Number 0 system_cmsdk_cm0.o ABSOLUTE
|
CORE\\system_CMSDK_CM0.c 0x00000000 Number 0 system_cmsdk_cm0.o ABSOLUTE
|
||||||
CORE\system_CMSDK_CM0.c 0x00000000 Number 0 system_cmsdk_cm0.o ABSOLUTE
|
CORE\system_CMSDK_CM0.c 0x00000000 Number 0 system_cmsdk_cm0.o ABSOLUTE
|
||||||
|
|
@ -689,8 +684,8 @@ Image Symbol Table
|
||||||
.text 0x1000027c Section 0 dfltui.o(.text)
|
.text 0x1000027c Section 0 dfltui.o(.text)
|
||||||
.text 0x10000298 Section 0 dfixui.o(.text)
|
.text 0x10000298 Section 0 dfixui.o(.text)
|
||||||
.text 0x100002d4 Section 0 llushr.o(.text)
|
.text 0x100002d4 Section 0 llushr.o(.text)
|
||||||
.text 0x100002f6 Section 0 depilogue.o(.text)
|
|
||||||
.text 0x100002f6 Section 0 iusefp.o(.text)
|
.text 0x100002f6 Section 0 iusefp.o(.text)
|
||||||
|
.text 0x100002f6 Section 0 depilogue.o(.text)
|
||||||
.text 0x100003b4 Section 0 dadd.o(.text)
|
.text 0x100003b4 Section 0 dadd.o(.text)
|
||||||
.text 0x10000518 Section 0 dmul.o(.text)
|
.text 0x10000518 Section 0 dmul.o(.text)
|
||||||
.text 0x100005e8 Section 0 dscalb.o(.text)
|
.text 0x100005e8 Section 0 dscalb.o(.text)
|
||||||
|
|
@ -704,95 +699,99 @@ Image Symbol Table
|
||||||
i.ClockInitSet 0x1000077c Section 0 ens1_clock.o(i.ClockInitSet)
|
i.ClockInitSet 0x1000077c Section 0 ens1_clock.o(i.ClockInitSet)
|
||||||
i.EMS_Configure 0x100008e0 Section 0 ens1_wavegen.o(i.EMS_Configure)
|
i.EMS_Configure 0x100008e0 Section 0 ens1_wavegen.o(i.EMS_Configure)
|
||||||
i.EMS_Process 0x100008f8 Section 0 ens1_wavegen.o(i.EMS_Process)
|
i.EMS_Process 0x100008f8 Section 0 ens1_wavegen.o(i.EMS_Process)
|
||||||
i.EMS_Start 0x10000960 Section 0 ens1_wavegen.o(i.EMS_Start)
|
i.EMS_Process_Ramp 0x10000964 Section 0 ens1_wavegen.o(i.EMS_Process_Ramp)
|
||||||
i.EMS_Stop 0x10000988 Section 0 ens1_wavegen.o(i.EMS_Stop)
|
i.EMS_Start 0x10000a94 Section 0 ens1_wavegen.o(i.EMS_Start)
|
||||||
i.GPIO_AltFunction 0x100009c8 Section 0 ens1_gpio.o(i.GPIO_AltFunction)
|
i.EMS_Stop 0x10000a9c Section 0 ens1_wavegen.o(i.EMS_Stop)
|
||||||
i.GPIO_GetOutputValue 0x10000a24 Section 0 ens1_gpio.o(i.GPIO_GetOutputValue)
|
i.GPIO_AltFunction 0x10000adc Section 0 ens1_gpio.o(i.GPIO_AltFunction)
|
||||||
i.GPIO_IO_Init 0x10000a3c Section 0 ens1_gpio.o(i.GPIO_IO_Init)
|
i.GPIO_GetOutputValue 0x10000b38 Section 0 ens1_gpio.o(i.GPIO_GetOutputValue)
|
||||||
i.GPIO_Output 0x10000b98 Section 0 ens1_gpio.o(i.GPIO_Output)
|
i.GPIO_IO_Init 0x10000b50 Section 0 ens1_gpio.o(i.GPIO_IO_Init)
|
||||||
i.GPIO_Overturn 0x10000bc0 Section 0 ens1_gpio.o(i.GPIO_Overturn)
|
i.GPIO_Output 0x10000cac Section 0 ens1_gpio.o(i.GPIO_Output)
|
||||||
i.GPIO_ResetOutput 0x10000be8 Section 0 ens1_gpio.o(i.GPIO_ResetOutput)
|
i.GPIO_Overturn 0x10000cd4 Section 0 ens1_gpio.o(i.GPIO_Overturn)
|
||||||
i.GPIO_SetOutput 0x10000bfc Section 0 ens1_gpio.o(i.GPIO_SetOutput)
|
i.GPIO_ResetOutput 0x10000cfc Section 0 ens1_gpio.o(i.GPIO_ResetOutput)
|
||||||
i.MTP_init 0x10000c10 Section 0 ens1_mtp.o(i.MTP_init)
|
i.GPIO_SetOutput 0x10000d10 Section 0 ens1_gpio.o(i.GPIO_SetOutput)
|
||||||
i.NVIC_ClearPendingIRQ 0x10000c14 Section 0 ens1_uart.o(i.NVIC_ClearPendingIRQ)
|
i.MTP_init 0x10000d24 Section 0 ens1_mtp.o(i.MTP_init)
|
||||||
NVIC_ClearPendingIRQ 0x10000c15 Thumb Code 14 ens1_uart.o(i.NVIC_ClearPendingIRQ)
|
i.NVIC_ClearPendingIRQ 0x10000d28 Section 0 ens1_uart.o(i.NVIC_ClearPendingIRQ)
|
||||||
i.NVIC_ClearPendingIRQ 0x10000c28 Section 0 ens1_timer.o(i.NVIC_ClearPendingIRQ)
|
NVIC_ClearPendingIRQ 0x10000d29 Thumb Code 14 ens1_uart.o(i.NVIC_ClearPendingIRQ)
|
||||||
NVIC_ClearPendingIRQ 0x10000c29 Thumb Code 14 ens1_timer.o(i.NVIC_ClearPendingIRQ)
|
i.NVIC_ClearPendingIRQ 0x10000d3c Section 0 ens1_timer.o(i.NVIC_ClearPendingIRQ)
|
||||||
i.NVIC_DisableIRQ 0x10000c3c Section 0 ens1_uart.o(i.NVIC_DisableIRQ)
|
NVIC_ClearPendingIRQ 0x10000d3d Thumb Code 14 ens1_timer.o(i.NVIC_ClearPendingIRQ)
|
||||||
NVIC_DisableIRQ 0x10000c3d Thumb Code 14 ens1_uart.o(i.NVIC_DisableIRQ)
|
i.NVIC_DisableIRQ 0x10000d50 Section 0 ens1_uart.o(i.NVIC_DisableIRQ)
|
||||||
i.NVIC_DisableIRQ 0x10000c50 Section 0 ens1_timer.o(i.NVIC_DisableIRQ)
|
NVIC_DisableIRQ 0x10000d51 Thumb Code 14 ens1_uart.o(i.NVIC_DisableIRQ)
|
||||||
NVIC_DisableIRQ 0x10000c51 Thumb Code 14 ens1_timer.o(i.NVIC_DisableIRQ)
|
i.NVIC_DisableIRQ 0x10000d64 Section 0 ens1_timer.o(i.NVIC_DisableIRQ)
|
||||||
i.NVIC_EnableIRQ 0x10000c64 Section 0 ens1_uart.o(i.NVIC_EnableIRQ)
|
NVIC_DisableIRQ 0x10000d65 Thumb Code 14 ens1_timer.o(i.NVIC_DisableIRQ)
|
||||||
NVIC_EnableIRQ 0x10000c65 Thumb Code 14 ens1_uart.o(i.NVIC_EnableIRQ)
|
i.NVIC_EnableIRQ 0x10000d78 Section 0 ens1_uart.o(i.NVIC_EnableIRQ)
|
||||||
i.NVIC_EnableIRQ 0x10000c78 Section 0 ens1_timer.o(i.NVIC_EnableIRQ)
|
NVIC_EnableIRQ 0x10000d79 Thumb Code 14 ens1_uart.o(i.NVIC_EnableIRQ)
|
||||||
NVIC_EnableIRQ 0x10000c79 Thumb Code 14 ens1_timer.o(i.NVIC_EnableIRQ)
|
i.NVIC_EnableIRQ 0x10000d8c Section 0 ens1_timer.o(i.NVIC_EnableIRQ)
|
||||||
i.PCLK_Enable 0x10000c8c Section 0 ens1_clock.o(i.PCLK_Enable)
|
NVIC_EnableIRQ 0x10000d8d Thumb Code 14 ens1_timer.o(i.NVIC_EnableIRQ)
|
||||||
i.SystemInit 0x10000ca4 Section 0 system_cmsdk_cm0.o(i.SystemInit)
|
i.PCLK_Enable 0x10000da0 Section 0 ens1_clock.o(i.PCLK_Enable)
|
||||||
i.TIMER0_Handler 0x10000cb4 Section 0 ens1_timer.o(i.TIMER0_Handler)
|
i.SystemInit 0x10000db8 Section 0 system_cmsdk_cm0.o(i.SystemInit)
|
||||||
i.TIMER0_Init 0x10000cd4 Section 0 ens1_timer.o(i.TIMER0_Init)
|
i.TIMER0_Handler 0x10000dc8 Section 0 ens1_timer.o(i.TIMER0_Handler)
|
||||||
i.TIMER1_Handler 0x10000d68 Section 0 ens1_timer.o(i.TIMER1_Handler)
|
i.TIMER0_Init 0x10000de8 Section 0 ens1_timer.o(i.TIMER0_Init)
|
||||||
i.Time_Manager_GetFlags 0x10000d84 Section 0 ens1_timer.o(i.Time_Manager_GetFlags)
|
i.TIMER1_Handler 0x10000e28 Section 0 ens1_timer.o(i.TIMER1_Handler)
|
||||||
i.Time_Manager_Init 0x10000d8c Section 0 ens1_timer.o(i.Time_Manager_Init)
|
i.Time_Manager_GetFlags 0x10000e44 Section 0 ens1_timer.o(i.Time_Manager_GetFlags)
|
||||||
i.Time_Manager_Process 0x10000da8 Section 0 ens1_timer.o(i.Time_Manager_Process)
|
i.Time_Manager_Init 0x10000e4c Section 0 ens1_timer.o(i.Time_Manager_Init)
|
||||||
i.UART0_Handler 0x10000e60 Section 0 ens1_uart.o(i.UART0_Handler)
|
i.Time_Manager_Process 0x10000e68 Section 0 ens1_timer.o(i.Time_Manager_Process)
|
||||||
i.UART1_Handler 0x10000ecc Section 0 ens1_uart.o(i.UART1_Handler)
|
i.UART0_Handler 0x10000f20 Section 0 ens1_uart.o(i.UART0_Handler)
|
||||||
i.UARTLine_THREmpty 0x10000f2c Section 0 ens1_uart.o(i.UARTLine_THREmpty)
|
i.UART1_Handler 0x10000f8c Section 0 ens1_uart.o(i.UART1_Handler)
|
||||||
i.UART_INT_TYPE 0x10000f36 Section 0 ens1_uart.o(i.UART_INT_TYPE)
|
i.UARTLine_THREmpty 0x10000fec Section 0 ens1_uart.o(i.UARTLine_THREmpty)
|
||||||
i.UART_ITConfig 0x10000f40 Section 0 ens1_uart.o(i.UART_ITConfig)
|
i.UART_INT_TYPE 0x10000ff6 Section 0 ens1_uart.o(i.UART_INT_TYPE)
|
||||||
i.UART_Init 0x10000f98 Section 0 ens1_uart.o(i.UART_Init)
|
i.UART_ITConfig 0x10001000 Section 0 ens1_uart.o(i.UART_ITConfig)
|
||||||
i.UartPutc 0x10001044 Section 0 ens1_uart.o(i.UartPutc)
|
i.UART_Init 0x10001058 Section 0 ens1_uart.o(i.UART_Init)
|
||||||
i.WRITE_UART_THRBuff 0x10001062 Section 0 ens1_uart.o(i.WRITE_UART_THRBuff)
|
i.UartPutc 0x10001158 Section 0 ens1_uart.o(i.UartPutc)
|
||||||
i.__0printf$1 0x10001068 Section 0 printf1.o(i.__0printf$1)
|
i.WRITE_UART_THRBuff 0x10001176 Section 0 ens1_uart.o(i.WRITE_UART_THRBuff)
|
||||||
i.__ARM_clz 0x10001088 Section 0 depilogue.o(i.__ARM_clz)
|
i.__0printf$bare 0x1000117c Section 0 printfb.o(i.__0printf$bare)
|
||||||
i.__ARM_fpclassify 0x100010b8 Section 0 fpclassify.o(i.__ARM_fpclassify)
|
i.__ARM_clz 0x10001190 Section 0 depilogue.o(i.__ARM_clz)
|
||||||
i.__kernel_poly 0x100010e4 Section 0 poly.o(i.__kernel_poly)
|
i.__ARM_fpclassify 0x100011c0 Section 0 fpclassify.o(i.__ARM_fpclassify)
|
||||||
i.__mathlib_dbl_divzero 0x10001190 Section 0 dunder.o(i.__mathlib_dbl_divzero)
|
i.__kernel_poly 0x100011ec Section 0 poly.o(i.__kernel_poly)
|
||||||
i.__mathlib_dbl_infnan2 0x100011a4 Section 0 dunder.o(i.__mathlib_dbl_infnan2)
|
i.__mathlib_dbl_divzero 0x10001298 Section 0 dunder.o(i.__mathlib_dbl_divzero)
|
||||||
i.__mathlib_dbl_invalid 0x100011ac Section 0 dunder.o(i.__mathlib_dbl_invalid)
|
i.__mathlib_dbl_infnan2 0x100012ac Section 0 dunder.o(i.__mathlib_dbl_infnan2)
|
||||||
i.__mathlib_dbl_overflow 0x100011bc Section 0 dunder.o(i.__mathlib_dbl_overflow)
|
i.__mathlib_dbl_invalid 0x100012b4 Section 0 dunder.o(i.__mathlib_dbl_invalid)
|
||||||
i.__mathlib_dbl_underflow 0x100011d0 Section 0 dunder.o(i.__mathlib_dbl_underflow)
|
i.__mathlib_dbl_overflow 0x100012c4 Section 0 dunder.o(i.__mathlib_dbl_overflow)
|
||||||
i.__scatterload_copy 0x100011e4 Section 14 handlers.o(i.__scatterload_copy)
|
i.__mathlib_dbl_underflow 0x100012d8 Section 0 dunder.o(i.__mathlib_dbl_underflow)
|
||||||
i.__scatterload_null 0x100011f2 Section 2 handlers.o(i.__scatterload_null)
|
i.__scatterload_copy 0x100012ec Section 14 handlers.o(i.__scatterload_copy)
|
||||||
i.__scatterload_zeroinit 0x100011f4 Section 14 handlers.o(i.__scatterload_zeroinit)
|
i.__scatterload_null 0x100012fa Section 2 handlers.o(i.__scatterload_null)
|
||||||
i.__set_errno 0x10001204 Section 0 errno.o(i.__set_errno)
|
i.__scatterload_zeroinit 0x100012fc Section 14 handlers.o(i.__scatterload_zeroinit)
|
||||||
i._printf_core 0x10001210 Section 0 printf1.o(i._printf_core)
|
i.__set_errno 0x1000130c Section 0 errno.o(i.__set_errno)
|
||||||
_printf_core 0x10001211 Thumb Code 332 printf1.o(i._printf_core)
|
i._printf_core 0x10001318 Section 0 printfb.o(i._printf_core)
|
||||||
i.boost_voltage_select_26V 0x10001360 Section 0 ens1_boost.o(i.boost_voltage_select_26V)
|
_printf_core 0x10001319 Thumb Code 30 printfb.o(i._printf_core)
|
||||||
i.fputc 0x10001374 Section 0 retarget.o(i.fputc)
|
i.boost_voltage_select_55V 0x10001338 Section 0 ens1_boost.o(i.boost_voltage_select_55V)
|
||||||
i.main 0x10001388 Section 0 mian.o(i.main)
|
i.fputc 0x1000134c Section 0 retarget.o(i.fputc)
|
||||||
i.pow 0x1000147c Section 0 pow.o(i.pow)
|
i.main 0x10001360 Section 0 mian.o(i.main)
|
||||||
i.puts 0x10001e78 Section 0 puts.o(i.puts)
|
i.pow 0x10001458 Section 0 pow.o(i.pow)
|
||||||
i.sqrt 0x10001e98 Section 0 sqrt.o(i.sqrt)
|
i.sqrt 0x10001e54 Section 0 sqrt.o(i.sqrt)
|
||||||
i.wavegen_Init 0x10001ee0 Section 0 ens1_wavegen.o(i.wavegen_Init)
|
i.wavegen_Init 0x10001e9c Section 0 ens1_wavegen.o(i.wavegen_Init)
|
||||||
i.wavegen_Start 0x10001f44 Section 0 ens1_wavegen.o(i.wavegen_Start)
|
i.wavegen_Start 0x10001ec4 Section 0 ens1_wavegen.o(i.wavegen_Start)
|
||||||
i.wavegen_Stop 0x10001f5c Section 0 ens1_wavegen.o(i.wavegen_Stop)
|
i.wavegen_Stop 0x10001f14 Section 0 ens1_wavegen.o(i.wavegen_Stop)
|
||||||
i.wavegen_driverA_sine_test 0x10001f74 Section 0 ens1_wavegen.o(i.wavegen_driverA_sine_test)
|
i.wavegen_driverA_sine_test 0x10001f2c Section 0 ens1_wavegen.o(i.wavegen_driverA_sine_test)
|
||||||
.constdata 0x1000201c Section 10 mian.o(.constdata)
|
.constdata 0x10001fd4 Section 14 mian.o(.constdata)
|
||||||
.constdata 0x10002028 Section 136 pow.o(.constdata)
|
.constdata 0x10001fe8 Section 136 pow.o(.constdata)
|
||||||
bp 0x10002028 Data 16 pow.o(.constdata)
|
bp 0x10001fe8 Data 16 pow.o(.constdata)
|
||||||
dp_h 0x10002038 Data 16 pow.o(.constdata)
|
dp_h 0x10001ff8 Data 16 pow.o(.constdata)
|
||||||
dp_l 0x10002048 Data 16 pow.o(.constdata)
|
dp_l 0x10002008 Data 16 pow.o(.constdata)
|
||||||
L 0x10002058 Data 48 pow.o(.constdata)
|
L 0x10002018 Data 48 pow.o(.constdata)
|
||||||
P 0x10002088 Data 40 pow.o(.constdata)
|
P 0x10002048 Data 40 pow.o(.constdata)
|
||||||
.constdata 0x100020b0 Section 8 qnan.o(.constdata)
|
.constdata 0x10002070 Section 8 qnan.o(.constdata)
|
||||||
.data 0x20000000 Section 2 mian.o(.data)
|
.data 0x20000000 Section 2 mian.o(.data)
|
||||||
ems_control_count 0x20000000 Data 1 mian.o(.data)
|
ems_control_count 0x20000000 Data 1 mian.o(.data)
|
||||||
ems_state 0x20000001 Data 1 mian.o(.data)
|
ems_state 0x20000001 Data 1 mian.o(.data)
|
||||||
.data 0x20000004 Section 22 ens1_uart.o(.data)
|
.data 0x20000004 Section 30 ens1_uart.o(.data)
|
||||||
.data 0x2000001c Section 14 ens1_clock.o(.data)
|
.data 0x20000024 Section 14 ens1_clock.o(.data)
|
||||||
.data 0x2000002c Section 8 retarget.o(.data)
|
.data 0x20000034 Section 8 retarget.o(.data)
|
||||||
.data 0x20000034 Section 28 ens1_timer.o(.data)
|
.data 0x2000003c Section 28 ens1_timer.o(.data)
|
||||||
g_time_flags 0x20000034 Data 6 ens1_timer.o(.data)
|
g_time_flags 0x2000003c Data 6 ens1_timer.o(.data)
|
||||||
g_time_counters 0x2000003a Data 8 ens1_timer.o(.data)
|
g_time_counters 0x20000042 Data 8 ens1_timer.o(.data)
|
||||||
.data 0x20000050 Section 8 ens1_wavegen.o(.data)
|
.data 0x20000058 Section 20 ens1_wavegen.o(.data)
|
||||||
g_ems_running 0x20000050 Data 1 ens1_wavegen.o(.data)
|
g_ems_running 0x20000058 Data 1 ens1_wavegen.o(.data)
|
||||||
g_ems_count 0x20000054 Data 4 ens1_wavegen.o(.data)
|
g_ems_count 0x2000005c Data 4 ens1_wavegen.o(.data)
|
||||||
.data 0x20000058 Section 8 system_cmsdk_cm0.o(.data)
|
g_current_intensity 0x20000060 Data 2 ens1_wavegen.o(.data)
|
||||||
.data 0x20000060 Section 4 errno.o(.data)
|
g_ramp_phase 0x20000062 Data 1 ens1_wavegen.o(.data)
|
||||||
_errno 0x20000060 Data 4 errno.o(.data)
|
g_wave_counter 0x20000064 Data 4 ens1_wavegen.o(.data)
|
||||||
.bss 0x20000064 Section 10 ens1_wavegen.o(.bss)
|
g_ramp_step_counter 0x20000068 Data 4 ens1_wavegen.o(.data)
|
||||||
g_ems_config 0x20000064 Data 10 ens1_wavegen.o(.bss)
|
.data 0x2000006c Section 8 system_cmsdk_cm0.o(.data)
|
||||||
STACK 0x20000070 Section 512 startup_cmsdk_cm0.o(STACK)
|
.data 0x20000074 Section 4 errno.o(.data)
|
||||||
|
_errno 0x20000074 Data 4 errno.o(.data)
|
||||||
|
.bss 0x20000078 Section 14 ens1_wavegen.o(.bss)
|
||||||
|
g_ems_config 0x20000078 Data 14 ens1_wavegen.o(.bss)
|
||||||
|
STACK 0x20000088 Section 512 startup_cmsdk_cm0.o(STACK)
|
||||||
|
|
||||||
Global Symbols
|
Global Symbols
|
||||||
|
|
||||||
|
|
@ -808,47 +807,6 @@ Image Symbol Table
|
||||||
__use_no_semihosting 0x00000000 Number 0 useno.o ABSOLUTE
|
__use_no_semihosting 0x00000000 Number 0 useno.o ABSOLUTE
|
||||||
__use_no_semihosting_swi 0x00000000 Number 0 useno.o ABSOLUTE
|
__use_no_semihosting_swi 0x00000000 Number 0 useno.o ABSOLUTE
|
||||||
__use_no_signal_handling 0x00000000 Number 0 useno.o ABSOLUTE
|
__use_no_signal_handling 0x00000000 Number 0 useno.o ABSOLUTE
|
||||||
_printf_a 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_c 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_charcount 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_d 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_e 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_f 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_flags 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_fp_dec 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_fp_hex 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_g 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_i 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_int_dec 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_l 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_lc 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_ll 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_lld 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_lli 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_llo 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_llu 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_llx 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_longlong_dec 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_longlong_hex 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_longlong_oct 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_ls 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_mbtowc 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_n 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_o 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_p 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_percent 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_pre_padding 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_return_value 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_s 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_sizespec 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_str 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_truncate_signed 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_truncate_unsigned 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_u 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_wc 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_wctomb 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_widthprec 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
_printf_x 0x00000000 Number 0 stubs.o ABSOLUTE
|
|
||||||
__cpp_initialize__aeabi_ - Undefined Weak Reference
|
__cpp_initialize__aeabi_ - Undefined Weak Reference
|
||||||
__cxa_finalize - Undefined Weak Reference
|
__cxa_finalize - Undefined Weak Reference
|
||||||
__decompress - Undefined Weak Reference
|
__decompress - Undefined Weak Reference
|
||||||
|
|
@ -933,74 +891,74 @@ Image Symbol Table
|
||||||
ClockInit 0x10000765 Thumb Code 14 ens1_clock.o(i.ClockInit)
|
ClockInit 0x10000765 Thumb Code 14 ens1_clock.o(i.ClockInit)
|
||||||
ClockInitSet 0x1000077d Thumb Code 348 ens1_clock.o(i.ClockInitSet)
|
ClockInitSet 0x1000077d Thumb Code 348 ens1_clock.o(i.ClockInitSet)
|
||||||
EMS_Configure 0x100008e1 Thumb Code 20 ens1_wavegen.o(i.EMS_Configure)
|
EMS_Configure 0x100008e1 Thumb Code 20 ens1_wavegen.o(i.EMS_Configure)
|
||||||
EMS_Process 0x100008f9 Thumb Code 86 ens1_wavegen.o(i.EMS_Process)
|
EMS_Process 0x100008f9 Thumb Code 92 ens1_wavegen.o(i.EMS_Process)
|
||||||
EMS_Start 0x10000961 Thumb Code 14 ens1_wavegen.o(i.EMS_Start)
|
EMS_Process_Ramp 0x10000965 Thumb Code 278 ens1_wavegen.o(i.EMS_Process_Ramp)
|
||||||
EMS_Stop 0x10000989 Thumb Code 26 ens1_wavegen.o(i.EMS_Stop)
|
EMS_Start 0x10000a95 Thumb Code 8 ens1_wavegen.o(i.EMS_Start)
|
||||||
GPIO_AltFunction 0x100009c9 Thumb Code 86 ens1_gpio.o(i.GPIO_AltFunction)
|
EMS_Stop 0x10000a9d Thumb Code 36 ens1_wavegen.o(i.EMS_Stop)
|
||||||
GPIO_GetOutputValue 0x10000a25 Thumb Code 18 ens1_gpio.o(i.GPIO_GetOutputValue)
|
GPIO_AltFunction 0x10000add Thumb Code 86 ens1_gpio.o(i.GPIO_AltFunction)
|
||||||
GPIO_IO_Init 0x10000a3d Thumb Code 342 ens1_gpio.o(i.GPIO_IO_Init)
|
GPIO_GetOutputValue 0x10000b39 Thumb Code 18 ens1_gpio.o(i.GPIO_GetOutputValue)
|
||||||
GPIO_Output 0x10000b99 Thumb Code 36 ens1_gpio.o(i.GPIO_Output)
|
GPIO_IO_Init 0x10000b51 Thumb Code 342 ens1_gpio.o(i.GPIO_IO_Init)
|
||||||
GPIO_Overturn 0x10000bc1 Thumb Code 40 ens1_gpio.o(i.GPIO_Overturn)
|
GPIO_Output 0x10000cad Thumb Code 36 ens1_gpio.o(i.GPIO_Output)
|
||||||
GPIO_ResetOutput 0x10000be9 Thumb Code 16 ens1_gpio.o(i.GPIO_ResetOutput)
|
GPIO_Overturn 0x10000cd5 Thumb Code 40 ens1_gpio.o(i.GPIO_Overturn)
|
||||||
GPIO_SetOutput 0x10000bfd Thumb Code 16 ens1_gpio.o(i.GPIO_SetOutput)
|
GPIO_ResetOutput 0x10000cfd Thumb Code 16 ens1_gpio.o(i.GPIO_ResetOutput)
|
||||||
MTP_init 0x10000c11 Thumb Code 4 ens1_mtp.o(i.MTP_init)
|
GPIO_SetOutput 0x10000d11 Thumb Code 16 ens1_gpio.o(i.GPIO_SetOutput)
|
||||||
PCLK_Enable 0x10000c8d Thumb Code 20 ens1_clock.o(i.PCLK_Enable)
|
MTP_init 0x10000d25 Thumb Code 4 ens1_mtp.o(i.MTP_init)
|
||||||
SystemInit 0x10000ca5 Thumb Code 8 system_cmsdk_cm0.o(i.SystemInit)
|
PCLK_Enable 0x10000da1 Thumb Code 20 ens1_clock.o(i.PCLK_Enable)
|
||||||
TIMER0_Handler 0x10000cb5 Thumb Code 24 ens1_timer.o(i.TIMER0_Handler)
|
SystemInit 0x10000db9 Thumb Code 8 system_cmsdk_cm0.o(i.SystemInit)
|
||||||
TIMER0_Init 0x10000cd5 Thumb Code 72 ens1_timer.o(i.TIMER0_Init)
|
TIMER0_Handler 0x10000dc9 Thumb Code 24 ens1_timer.o(i.TIMER0_Handler)
|
||||||
TIMER1_Handler 0x10000d69 Thumb Code 18 ens1_timer.o(i.TIMER1_Handler)
|
TIMER0_Init 0x10000de9 Thumb Code 56 ens1_timer.o(i.TIMER0_Init)
|
||||||
Time_Manager_GetFlags 0x10000d85 Thumb Code 4 ens1_timer.o(i.Time_Manager_GetFlags)
|
TIMER1_Handler 0x10000e29 Thumb Code 18 ens1_timer.o(i.TIMER1_Handler)
|
||||||
Time_Manager_Init 0x10000d8d Thumb Code 20 ens1_timer.o(i.Time_Manager_Init)
|
Time_Manager_GetFlags 0x10000e45 Thumb Code 4 ens1_timer.o(i.Time_Manager_GetFlags)
|
||||||
Time_Manager_Process 0x10000da9 Thumb Code 174 ens1_timer.o(i.Time_Manager_Process)
|
Time_Manager_Init 0x10000e4d Thumb Code 20 ens1_timer.o(i.Time_Manager_Init)
|
||||||
UART0_Handler 0x10000e61 Thumb Code 108 ens1_uart.o(i.UART0_Handler)
|
Time_Manager_Process 0x10000e69 Thumb Code 174 ens1_timer.o(i.Time_Manager_Process)
|
||||||
UART1_Handler 0x10000ecd Thumb Code 92 ens1_uart.o(i.UART1_Handler)
|
UART0_Handler 0x10000f21 Thumb Code 108 ens1_uart.o(i.UART0_Handler)
|
||||||
UARTLine_THREmpty 0x10000f2d Thumb Code 10 ens1_uart.o(i.UARTLine_THREmpty)
|
UART1_Handler 0x10000f8d Thumb Code 92 ens1_uart.o(i.UART1_Handler)
|
||||||
UART_INT_TYPE 0x10000f37 Thumb Code 10 ens1_uart.o(i.UART_INT_TYPE)
|
UARTLine_THREmpty 0x10000fed Thumb Code 10 ens1_uart.o(i.UARTLine_THREmpty)
|
||||||
UART_ITConfig 0x10000f41 Thumb Code 84 ens1_uart.o(i.UART_ITConfig)
|
UART_INT_TYPE 0x10000ff7 Thumb Code 10 ens1_uart.o(i.UART_INT_TYPE)
|
||||||
UART_Init 0x10000f99 Thumb Code 164 ens1_uart.o(i.UART_Init)
|
UART_ITConfig 0x10001001 Thumb Code 84 ens1_uart.o(i.UART_ITConfig)
|
||||||
UartPutc 0x10001045 Thumb Code 30 ens1_uart.o(i.UartPutc)
|
UART_Init 0x10001059 Thumb Code 248 ens1_uart.o(i.UART_Init)
|
||||||
WRITE_UART_THRBuff 0x10001063 Thumb Code 4 ens1_uart.o(i.WRITE_UART_THRBuff)
|
UartPutc 0x10001159 Thumb Code 30 ens1_uart.o(i.UartPutc)
|
||||||
__0printf$1 0x10001069 Thumb Code 24 printf1.o(i.__0printf$1)
|
WRITE_UART_THRBuff 0x10001177 Thumb Code 4 ens1_uart.o(i.WRITE_UART_THRBuff)
|
||||||
__1printf$1 0x10001069 Thumb Code 0 printf1.o(i.__0printf$1)
|
__0printf$bare 0x1000117d Thumb Code 12 printfb.o(i.__0printf$bare)
|
||||||
__2printf 0x10001069 Thumb Code 0 printf1.o(i.__0printf$1)
|
__1printf$bare 0x1000117d Thumb Code 0 printfb.o(i.__0printf$bare)
|
||||||
__ARM_clz 0x10001089 Thumb Code 46 depilogue.o(i.__ARM_clz)
|
__2printf 0x1000117d Thumb Code 0 printfb.o(i.__0printf$bare)
|
||||||
__ARM_fpclassify 0x100010b9 Thumb Code 40 fpclassify.o(i.__ARM_fpclassify)
|
__ARM_clz 0x10001191 Thumb Code 46 depilogue.o(i.__ARM_clz)
|
||||||
__kernel_poly 0x100010e5 Thumb Code 172 poly.o(i.__kernel_poly)
|
__ARM_fpclassify 0x100011c1 Thumb Code 40 fpclassify.o(i.__ARM_fpclassify)
|
||||||
__mathlib_dbl_divzero 0x10001191 Thumb Code 16 dunder.o(i.__mathlib_dbl_divzero)
|
__kernel_poly 0x100011ed Thumb Code 172 poly.o(i.__kernel_poly)
|
||||||
__mathlib_dbl_infnan2 0x100011a5 Thumb Code 8 dunder.o(i.__mathlib_dbl_infnan2)
|
__mathlib_dbl_divzero 0x10001299 Thumb Code 16 dunder.o(i.__mathlib_dbl_divzero)
|
||||||
__mathlib_dbl_invalid 0x100011ad Thumb Code 16 dunder.o(i.__mathlib_dbl_invalid)
|
__mathlib_dbl_infnan2 0x100012ad Thumb Code 8 dunder.o(i.__mathlib_dbl_infnan2)
|
||||||
__mathlib_dbl_overflow 0x100011bd Thumb Code 16 dunder.o(i.__mathlib_dbl_overflow)
|
__mathlib_dbl_invalid 0x100012b5 Thumb Code 16 dunder.o(i.__mathlib_dbl_invalid)
|
||||||
__mathlib_dbl_underflow 0x100011d1 Thumb Code 14 dunder.o(i.__mathlib_dbl_underflow)
|
__mathlib_dbl_overflow 0x100012c5 Thumb Code 16 dunder.o(i.__mathlib_dbl_overflow)
|
||||||
__scatterload_copy 0x100011e5 Thumb Code 14 handlers.o(i.__scatterload_copy)
|
__mathlib_dbl_underflow 0x100012d9 Thumb Code 14 dunder.o(i.__mathlib_dbl_underflow)
|
||||||
__scatterload_null 0x100011f3 Thumb Code 2 handlers.o(i.__scatterload_null)
|
__scatterload_copy 0x100012ed Thumb Code 14 handlers.o(i.__scatterload_copy)
|
||||||
__scatterload_zeroinit 0x100011f5 Thumb Code 14 handlers.o(i.__scatterload_zeroinit)
|
__scatterload_null 0x100012fb Thumb Code 2 handlers.o(i.__scatterload_null)
|
||||||
__set_errno 0x10001205 Thumb Code 6 errno.o(i.__set_errno)
|
__scatterload_zeroinit 0x100012fd Thumb Code 14 handlers.o(i.__scatterload_zeroinit)
|
||||||
boost_voltage_select_26V 0x10001361 Thumb Code 12 ens1_boost.o(i.boost_voltage_select_26V)
|
__set_errno 0x1000130d Thumb Code 6 errno.o(i.__set_errno)
|
||||||
fputc 0x10001375 Thumb Code 16 retarget.o(i.fputc)
|
boost_voltage_select_55V 0x10001339 Thumb Code 12 ens1_boost.o(i.boost_voltage_select_55V)
|
||||||
main 0x10001389 Thumb Code 220 mian.o(i.main)
|
fputc 0x1000134d Thumb Code 16 retarget.o(i.fputc)
|
||||||
pow 0x1000147d Thumb Code 2548 pow.o(i.pow)
|
main 0x10001361 Thumb Code 222 mian.o(i.main)
|
||||||
puts 0x10001e79 Thumb Code 28 puts.o(i.puts)
|
pow 0x10001459 Thumb Code 2548 pow.o(i.pow)
|
||||||
sqrt 0x10001e99 Thumb Code 66 sqrt.o(i.sqrt)
|
sqrt 0x10001e55 Thumb Code 66 sqrt.o(i.sqrt)
|
||||||
wavegen_Init 0x10001ee1 Thumb Code 32 ens1_wavegen.o(i.wavegen_Init)
|
wavegen_Init 0x10001e9d Thumb Code 26 ens1_wavegen.o(i.wavegen_Init)
|
||||||
wavegen_Start 0x10001f45 Thumb Code 14 ens1_wavegen.o(i.wavegen_Start)
|
wavegen_Start 0x10001ec5 Thumb Code 50 ens1_wavegen.o(i.wavegen_Start)
|
||||||
wavegen_Stop 0x10001f5d Thumb Code 22 ens1_wavegen.o(i.wavegen_Stop)
|
wavegen_Stop 0x10001f15 Thumb Code 22 ens1_wavegen.o(i.wavegen_Stop)
|
||||||
wavegen_driverA_sine_test 0x10001f75 Thumb Code 98 ens1_wavegen.o(i.wavegen_driverA_sine_test)
|
wavegen_driverA_sine_test 0x10001f2d Thumb Code 98 ens1_wavegen.o(i.wavegen_driverA_sine_test)
|
||||||
__mathlib_zero 0x100020b0 Data 8 qnan.o(.constdata)
|
__mathlib_zero 0x10002070 Data 8 qnan.o(.constdata)
|
||||||
Region$$Table$$Base 0x100020b8 Number 0 anon$$obj.o(Region$$Table)
|
Region$$Table$$Base 0x10002078 Number 0 anon$$obj.o(Region$$Table)
|
||||||
Region$$Table$$Limit 0x100020d8 Number 0 anon$$obj.o(Region$$Table)
|
Region$$Table$$Limit 0x10002098 Number 0 anon$$obj.o(Region$$Table)
|
||||||
UART1_Fifo 0x20000004 Data 3 ens1_uart.o(.data)
|
UART1_Fifo 0x20000004 Data 3 ens1_uart.o(.data)
|
||||||
UART1_Init 0x20000008 Data 16 ens1_uart.o(.data)
|
UART1_Init 0x20000008 Data 24 ens1_uart.o(.data)
|
||||||
UART1_ITSet 0x20000018 Data 2 ens1_uart.o(.data)
|
UART1_ITSet 0x20000020 Data 2 ens1_uart.o(.data)
|
||||||
APB_Clock_Freq 0x2000001c Data 4 ens1_clock.o(.data)
|
APB_Clock_Freq 0x20000024 Data 4 ens1_clock.o(.data)
|
||||||
CLOCKCFG 0x20000020 Data 10 ens1_clock.o(.data)
|
CLOCKCFG 0x20000028 Data 10 ens1_clock.o(.data)
|
||||||
__stdout 0x2000002c Data 4 retarget.o(.data)
|
__stdout 0x20000034 Data 4 retarget.o(.data)
|
||||||
__stdin 0x20000030 Data 4 retarget.o(.data)
|
__stdin 0x20000038 Data 4 retarget.o(.data)
|
||||||
timer0_irq_occurred 0x20000044 Data 4 ens1_timer.o(.data)
|
timer0_irq_occurred 0x2000004c Data 4 ens1_timer.o(.data)
|
||||||
time_flag 0x20000048 Data 4 ens1_timer.o(.data)
|
time_flag 0x20000050 Data 4 ens1_timer.o(.data)
|
||||||
timer1_irq_occurred 0x2000004c Data 4 ens1_timer.o(.data)
|
timer1_irq_occurred 0x20000054 Data 4 ens1_timer.o(.data)
|
||||||
SystemFrequency 0x20000058 Data 4 system_cmsdk_cm0.o(.data)
|
SystemFrequency 0x2000006c Data 4 system_cmsdk_cm0.o(.data)
|
||||||
SystemCoreClock 0x2000005c Data 4 system_cmsdk_cm0.o(.data)
|
SystemCoreClock 0x20000070 Data 4 system_cmsdk_cm0.o(.data)
|
||||||
__initial_sp 0x20000270 Data 0 startup_cmsdk_cm0.o(STACK)
|
__initial_sp 0x20000288 Data 0 startup_cmsdk_cm0.o(STACK)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1010,132 +968,133 @@ Memory Map of the image
|
||||||
|
|
||||||
Image Entry point : 0x100000c1
|
Image Entry point : 0x100000c1
|
||||||
|
|
||||||
Load Region LR_IROM1 (Base: 0x10000000, Size: 0x0000213c, Max: 0x00008000, ABSOLUTE)
|
Load Region LR_IROM1 (Base: 0x10000000, Size: 0x00002110, Max: 0x00008000, ABSOLUTE)
|
||||||
|
|
||||||
Execution Region ER_IROM1 (Exec base: 0x10000000, Load base: 0x10000000, Size: 0x000020d8, Max: 0x00008000, ABSOLUTE)
|
Execution Region ER_IROM1 (Exec base: 0x10000000, Load base: 0x10000000, Size: 0x00002098, Max: 0x00008000, ABSOLUTE)
|
||||||
|
|
||||||
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
|
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
|
||||||
|
|
||||||
0x10000000 0x10000000 0x000000c0 Data RO 872 RESET startup_cmsdk_cm0.o
|
0x10000000 0x10000000 0x000000c0 Data RO 884 RESET startup_cmsdk_cm0.o
|
||||||
0x100000c0 0x100000c0 0x00000000 Code RO 887 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
|
0x100000c0 0x100000c0 0x00000000 Code RO 899 * .ARM.Collect$$$$00000000 mc_p.l(entry.o)
|
||||||
0x100000c0 0x100000c0 0x00000004 Code RO 1226 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
|
0x100000c0 0x100000c0 0x00000004 Code RO 1233 .ARM.Collect$$$$00000001 mc_p.l(entry2.o)
|
||||||
0x100000c4 0x100000c4 0x00000004 Code RO 1229 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
|
0x100000c4 0x100000c4 0x00000004 Code RO 1236 .ARM.Collect$$$$00000004 mc_p.l(entry5.o)
|
||||||
0x100000c8 0x100000c8 0x00000000 Code RO 1231 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
|
0x100000c8 0x100000c8 0x00000000 Code RO 1238 .ARM.Collect$$$$00000008 mc_p.l(entry7b.o)
|
||||||
0x100000c8 0x100000c8 0x00000000 Code RO 1233 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
|
0x100000c8 0x100000c8 0x00000000 Code RO 1240 .ARM.Collect$$$$0000000A mc_p.l(entry8b.o)
|
||||||
0x100000c8 0x100000c8 0x00000008 Code RO 1234 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
|
0x100000c8 0x100000c8 0x00000008 Code RO 1241 .ARM.Collect$$$$0000000B mc_p.l(entry9a.o)
|
||||||
0x100000d0 0x100000d0 0x00000000 Code RO 1236 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
|
0x100000d0 0x100000d0 0x00000000 Code RO 1243 .ARM.Collect$$$$0000000D mc_p.l(entry10a.o)
|
||||||
0x100000d0 0x100000d0 0x00000000 Code RO 1238 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
|
0x100000d0 0x100000d0 0x00000000 Code RO 1245 .ARM.Collect$$$$0000000F mc_p.l(entry11a.o)
|
||||||
0x100000d0 0x100000d0 0x00000004 Code RO 1227 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
|
0x100000d0 0x100000d0 0x00000004 Code RO 1234 .ARM.Collect$$$$00002712 mc_p.l(entry2.o)
|
||||||
0x100000d4 0x100000d4 0x0000001c Code RO 873 .text startup_cmsdk_cm0.o
|
0x100000d4 0x100000d4 0x0000001c Code RO 885 .text startup_cmsdk_cm0.o
|
||||||
0x100000f0 0x100000f0 0x0000002c Code RO 894 .text mc_p.l(uidiv.o)
|
0x100000f0 0x100000f0 0x0000002c Code RO 902 .text mc_p.l(uidiv.o)
|
||||||
0x1000011c 0x1000011c 0x00000024 Code RO 896 .text mc_p.l(memcpya.o)
|
0x1000011c 0x1000011c 0x00000024 Code RO 904 .text mc_p.l(memcpya.o)
|
||||||
0x10000140 0x10000140 0x00000024 Code RO 898 .text mc_p.l(memseta.o)
|
0x10000140 0x10000140 0x00000024 Code RO 906 .text mc_p.l(memseta.o)
|
||||||
0x10000164 0x10000164 0x000000f0 Code RO 1191 .text mf_p.l(ddiv.o)
|
0x10000164 0x10000164 0x000000f0 Code RO 1198 .text mf_p.l(ddiv.o)
|
||||||
0x10000254 0x10000254 0x00000028 Code RO 1193 .text mf_p.l(dflti.o)
|
0x10000254 0x10000254 0x00000028 Code RO 1200 .text mf_p.l(dflti.o)
|
||||||
0x1000027c 0x1000027c 0x0000001c Code RO 1195 .text mf_p.l(dfltui.o)
|
0x1000027c 0x1000027c 0x0000001c Code RO 1202 .text mf_p.l(dfltui.o)
|
||||||
0x10000298 0x10000298 0x0000003c Code RO 1197 .text mf_p.l(dfixui.o)
|
0x10000298 0x10000298 0x0000003c Code RO 1204 .text mf_p.l(dfixui.o)
|
||||||
0x100002d4 0x100002d4 0x00000022 Code RO 1242 .text mc_p.l(llushr.o)
|
0x100002d4 0x100002d4 0x00000022 Code RO 1249 .text mc_p.l(llushr.o)
|
||||||
0x100002f6 0x100002f6 0x00000000 Code RO 1253 .text mc_p.l(iusefp.o)
|
0x100002f6 0x100002f6 0x00000000 Code RO 1260 .text mc_p.l(iusefp.o)
|
||||||
0x100002f6 0x100002f6 0x000000be Code RO 1254 .text mf_p.l(depilogue.o)
|
0x100002f6 0x100002f6 0x000000be Code RO 1261 .text mf_p.l(depilogue.o)
|
||||||
0x100003b4 0x100003b4 0x00000164 Code RO 1258 .text mf_p.l(dadd.o)
|
0x100003b4 0x100003b4 0x00000164 Code RO 1265 .text mf_p.l(dadd.o)
|
||||||
0x10000518 0x10000518 0x000000d0 Code RO 1260 .text mf_p.l(dmul.o)
|
0x10000518 0x10000518 0x000000d0 Code RO 1267 .text mf_p.l(dmul.o)
|
||||||
0x100005e8 0x100005e8 0x0000002c Code RO 1262 .text mf_p.l(dscalb.o)
|
0x100005e8 0x100005e8 0x0000002c Code RO 1269 .text mf_p.l(dscalb.o)
|
||||||
0x10000614 0x10000614 0x00000028 Code RO 1266 .text mf_p.l(cdrcmple.o)
|
0x10000614 0x10000614 0x00000028 Code RO 1273 .text mf_p.l(cdrcmple.o)
|
||||||
0x1000063c 0x1000063c 0x00000024 Code RO 1268 .text mc_p.l(init.o)
|
0x1000063c 0x1000063c 0x00000024 Code RO 1275 .text mc_p.l(init.o)
|
||||||
0x10000660 0x10000660 0x00000020 Code RO 1270 .text mc_p.l(llshl.o)
|
0x10000660 0x10000660 0x00000020 Code RO 1277 .text mc_p.l(llshl.o)
|
||||||
0x10000680 0x10000680 0x00000026 Code RO 1272 .text mc_p.l(llsshr.o)
|
0x10000680 0x10000680 0x00000026 Code RO 1279 .text mc_p.l(llsshr.o)
|
||||||
0x100006a6 0x100006a6 0x000000a2 Code RO 1274 .text mf_p.l(dsqrt.o)
|
0x100006a6 0x100006a6 0x000000a2 Code RO 1281 .text mf_p.l(dsqrt.o)
|
||||||
0x10000748 0x10000748 0x0000001a Code RO 514 i.CMSDK_timer_Init ens1_timer.o
|
0x10000748 0x10000748 0x0000001a Code RO 520 i.CMSDK_timer_Init ens1_timer.o
|
||||||
0x10000762 0x10000762 0x00000002 PAD
|
0x10000762 0x10000762 0x00000002 PAD
|
||||||
0x10000764 0x10000764 0x00000018 Code RO 396 i.ClockInit ens1_clock.o
|
0x10000764 0x10000764 0x00000018 Code RO 402 i.ClockInit ens1_clock.o
|
||||||
0x1000077c 0x1000077c 0x00000164 Code RO 397 i.ClockInitSet ens1_clock.o
|
0x1000077c 0x1000077c 0x00000164 Code RO 403 i.ClockInitSet ens1_clock.o
|
||||||
0x100008e0 0x100008e0 0x00000018 Code RO 769 i.EMS_Configure ens1_wavegen.o
|
0x100008e0 0x100008e0 0x00000018 Code RO 775 i.EMS_Configure ens1_wavegen.o
|
||||||
0x100008f8 0x100008f8 0x00000068 Code RO 770 i.EMS_Process ens1_wavegen.o
|
0x100008f8 0x100008f8 0x0000006c Code RO 776 i.EMS_Process ens1_wavegen.o
|
||||||
0x10000960 0x10000960 0x00000028 Code RO 771 i.EMS_Start ens1_wavegen.o
|
0x10000964 0x10000964 0x00000130 Code RO 777 i.EMS_Process_Ramp ens1_wavegen.o
|
||||||
0x10000988 0x10000988 0x00000040 Code RO 772 i.EMS_Stop ens1_wavegen.o
|
0x10000a94 0x10000a94 0x00000008 Code RO 778 i.EMS_Start ens1_wavegen.o
|
||||||
0x100009c8 0x100009c8 0x0000005c Code RO 265 i.GPIO_AltFunction ens1_gpio.o
|
0x10000a9c 0x10000a9c 0x00000040 Code RO 779 i.EMS_Stop ens1_wavegen.o
|
||||||
0x10000a24 0x10000a24 0x00000018 Code RO 268 i.GPIO_GetOutputValue ens1_gpio.o
|
0x10000adc 0x10000adc 0x0000005c Code RO 271 i.GPIO_AltFunction ens1_gpio.o
|
||||||
0x10000a3c 0x10000a3c 0x0000015c Code RO 269 i.GPIO_IO_Init ens1_gpio.o
|
0x10000b38 0x10000b38 0x00000018 Code RO 274 i.GPIO_GetOutputValue ens1_gpio.o
|
||||||
0x10000b98 0x10000b98 0x00000028 Code RO 271 i.GPIO_Output ens1_gpio.o
|
0x10000b50 0x10000b50 0x0000015c Code RO 275 i.GPIO_IO_Init ens1_gpio.o
|
||||||
0x10000bc0 0x10000bc0 0x00000028 Code RO 272 i.GPIO_Overturn ens1_gpio.o
|
0x10000cac 0x10000cac 0x00000028 Code RO 277 i.GPIO_Output ens1_gpio.o
|
||||||
0x10000be8 0x10000be8 0x00000014 Code RO 273 i.GPIO_ResetOutput ens1_gpio.o
|
0x10000cd4 0x10000cd4 0x00000028 Code RO 278 i.GPIO_Overturn ens1_gpio.o
|
||||||
0x10000bfc 0x10000bfc 0x00000014 Code RO 274 i.GPIO_SetOutput ens1_gpio.o
|
0x10000cfc 0x10000cfc 0x00000014 Code RO 279 i.GPIO_ResetOutput ens1_gpio.o
|
||||||
0x10000c10 0x10000c10 0x00000004 Code RO 339 i.MTP_init ens1_mtp.o
|
0x10000d10 0x10000d10 0x00000014 Code RO 280 i.GPIO_SetOutput ens1_gpio.o
|
||||||
0x10000c14 0x10000c14 0x00000014 Code RO 85 i.NVIC_ClearPendingIRQ ens1_uart.o
|
0x10000d24 0x10000d24 0x00000004 Code RO 345 i.MTP_init ens1_mtp.o
|
||||||
0x10000c28 0x10000c28 0x00000014 Code RO 522 i.NVIC_ClearPendingIRQ ens1_timer.o
|
0x10000d28 0x10000d28 0x00000014 Code RO 85 i.NVIC_ClearPendingIRQ ens1_uart.o
|
||||||
0x10000c3c 0x10000c3c 0x00000014 Code RO 86 i.NVIC_DisableIRQ ens1_uart.o
|
0x10000d3c 0x10000d3c 0x00000014 Code RO 528 i.NVIC_ClearPendingIRQ ens1_timer.o
|
||||||
0x10000c50 0x10000c50 0x00000014 Code RO 523 i.NVIC_DisableIRQ ens1_timer.o
|
0x10000d50 0x10000d50 0x00000014 Code RO 86 i.NVIC_DisableIRQ ens1_uart.o
|
||||||
0x10000c64 0x10000c64 0x00000014 Code RO 87 i.NVIC_EnableIRQ ens1_uart.o
|
0x10000d64 0x10000d64 0x00000014 Code RO 529 i.NVIC_DisableIRQ ens1_timer.o
|
||||||
0x10000c78 0x10000c78 0x00000014 Code RO 524 i.NVIC_EnableIRQ ens1_timer.o
|
0x10000d78 0x10000d78 0x00000014 Code RO 87 i.NVIC_EnableIRQ ens1_uart.o
|
||||||
0x10000c8c 0x10000c8c 0x00000018 Code RO 400 i.PCLK_Enable ens1_clock.o
|
0x10000d8c 0x10000d8c 0x00000014 Code RO 530 i.NVIC_EnableIRQ ens1_timer.o
|
||||||
0x10000ca4 0x10000ca4 0x00000010 Code RO 841 i.SystemInit system_cmsdk_cm0.o
|
0x10000da0 0x10000da0 0x00000018 Code RO 406 i.PCLK_Enable ens1_clock.o
|
||||||
0x10000cb4 0x10000cb4 0x00000020 Code RO 525 i.TIMER0_Handler ens1_timer.o
|
0x10000db8 0x10000db8 0x00000010 Code RO 853 i.SystemInit system_cmsdk_cm0.o
|
||||||
0x10000cd4 0x10000cd4 0x00000094 Code RO 526 i.TIMER0_Init ens1_timer.o
|
0x10000dc8 0x10000dc8 0x00000020 Code RO 531 i.TIMER0_Handler ens1_timer.o
|
||||||
0x10000d68 0x10000d68 0x0000001c Code RO 527 i.TIMER1_Handler ens1_timer.o
|
0x10000de8 0x10000de8 0x00000040 Code RO 532 i.TIMER0_Init ens1_timer.o
|
||||||
0x10000d84 0x10000d84 0x00000008 Code RO 530 i.Time_Manager_GetFlags ens1_timer.o
|
0x10000e28 0x10000e28 0x0000001c Code RO 533 i.TIMER1_Handler ens1_timer.o
|
||||||
0x10000d8c 0x10000d8c 0x0000001c Code RO 531 i.Time_Manager_Init ens1_timer.o
|
0x10000e44 0x10000e44 0x00000008 Code RO 536 i.Time_Manager_GetFlags ens1_timer.o
|
||||||
0x10000da8 0x10000da8 0x000000b8 Code RO 532 i.Time_Manager_Process ens1_timer.o
|
0x10000e4c 0x10000e4c 0x0000001c Code RO 537 i.Time_Manager_Init ens1_timer.o
|
||||||
0x10000e60 0x10000e60 0x0000006c Code RO 89 i.UART0_Handler ens1_uart.o
|
0x10000e68 0x10000e68 0x000000b8 Code RO 538 i.Time_Manager_Process ens1_timer.o
|
||||||
0x10000ecc 0x10000ecc 0x00000060 Code RO 90 i.UART1_Handler ens1_uart.o
|
0x10000f20 0x10000f20 0x0000006c Code RO 89 i.UART0_Handler ens1_uart.o
|
||||||
0x10000f2c 0x10000f2c 0x0000000a Code RO 92 i.UARTLine_THREmpty ens1_uart.o
|
0x10000f8c 0x10000f8c 0x00000060 Code RO 90 i.UART1_Handler ens1_uart.o
|
||||||
0x10000f36 0x10000f36 0x0000000a Code RO 98 i.UART_INT_TYPE ens1_uart.o
|
0x10000fec 0x10000fec 0x0000000a Code RO 92 i.UARTLine_THREmpty ens1_uart.o
|
||||||
0x10000f40 0x10000f40 0x00000058 Code RO 99 i.UART_ITConfig ens1_uart.o
|
0x10000ff6 0x10000ff6 0x0000000a Code RO 98 i.UART_INT_TYPE ens1_uart.o
|
||||||
0x10000f98 0x10000f98 0x000000ac Code RO 100 i.UART_Init ens1_uart.o
|
0x10001000 0x10001000 0x00000058 Code RO 99 i.UART_ITConfig ens1_uart.o
|
||||||
0x10001044 0x10001044 0x0000001e Code RO 109 i.UartPutc ens1_uart.o
|
0x10001058 0x10001058 0x00000100 Code RO 100 i.UART_Init ens1_uart.o
|
||||||
0x10001062 0x10001062 0x00000004 Code RO 110 i.WRITE_UART_THRBuff ens1_uart.o
|
0x10001158 0x10001158 0x0000001e Code RO 109 i.UartPutc ens1_uart.o
|
||||||
0x10001066 0x10001066 0x00000002 PAD
|
0x10001176 0x10001176 0x00000004 Code RO 111 i.WRITE_UART_THRBuff ens1_uart.o
|
||||||
0x10001068 0x10001068 0x00000020 Code RO 947 i.__0printf$1 mc_p.l(printf1.o)
|
0x1000117a 0x1000117a 0x00000002 PAD
|
||||||
0x10001088 0x10001088 0x0000002e Code RO 1256 i.__ARM_clz mf_p.l(depilogue.o)
|
0x1000117c 0x1000117c 0x00000014 Code RO 911 i.__0printf$bare mc_p.l(printfb.o)
|
||||||
0x100010b6 0x100010b6 0x00000002 PAD
|
0x10001190 0x10001190 0x0000002e Code RO 1263 i.__ARM_clz mf_p.l(depilogue.o)
|
||||||
0x100010b8 0x100010b8 0x0000002c Code RO 1213 i.__ARM_fpclassify m_ps.l(fpclassify.o)
|
0x100011be 0x100011be 0x00000002 PAD
|
||||||
0x100010e4 0x100010e4 0x000000ac Code RO 1215 i.__kernel_poly m_ps.l(poly.o)
|
0x100011c0 0x100011c0 0x0000002c Code RO 1220 i.__ARM_fpclassify m_ps.l(fpclassify.o)
|
||||||
0x10001190 0x10001190 0x00000014 Code RO 1199 i.__mathlib_dbl_divzero m_ps.l(dunder.o)
|
0x100011ec 0x100011ec 0x000000ac Code RO 1222 i.__kernel_poly m_ps.l(poly.o)
|
||||||
0x100011a4 0x100011a4 0x00000008 Code RO 1201 i.__mathlib_dbl_infnan2 m_ps.l(dunder.o)
|
0x10001298 0x10001298 0x00000014 Code RO 1206 i.__mathlib_dbl_divzero m_ps.l(dunder.o)
|
||||||
0x100011ac 0x100011ac 0x00000010 Code RO 1202 i.__mathlib_dbl_invalid m_ps.l(dunder.o)
|
0x100012ac 0x100012ac 0x00000008 Code RO 1208 i.__mathlib_dbl_infnan2 m_ps.l(dunder.o)
|
||||||
0x100011bc 0x100011bc 0x00000014 Code RO 1203 i.__mathlib_dbl_overflow m_ps.l(dunder.o)
|
0x100012b4 0x100012b4 0x00000010 Code RO 1209 i.__mathlib_dbl_invalid m_ps.l(dunder.o)
|
||||||
0x100011d0 0x100011d0 0x00000014 Code RO 1205 i.__mathlib_dbl_underflow m_ps.l(dunder.o)
|
0x100012c4 0x100012c4 0x00000014 Code RO 1210 i.__mathlib_dbl_overflow m_ps.l(dunder.o)
|
||||||
0x100011e4 0x100011e4 0x0000000e Code RO 1280 i.__scatterload_copy mc_p.l(handlers.o)
|
0x100012d8 0x100012d8 0x00000014 Code RO 1212 i.__mathlib_dbl_underflow m_ps.l(dunder.o)
|
||||||
0x100011f2 0x100011f2 0x00000002 Code RO 1281 i.__scatterload_null mc_p.l(handlers.o)
|
0x100012ec 0x100012ec 0x0000000e Code RO 1287 i.__scatterload_copy mc_p.l(handlers.o)
|
||||||
0x100011f4 0x100011f4 0x0000000e Code RO 1282 i.__scatterload_zeroinit mc_p.l(handlers.o)
|
0x100012fa 0x100012fa 0x00000002 Code RO 1288 i.__scatterload_null mc_p.l(handlers.o)
|
||||||
0x10001202 0x10001202 0x00000002 PAD
|
0x100012fc 0x100012fc 0x0000000e Code RO 1289 i.__scatterload_zeroinit mc_p.l(handlers.o)
|
||||||
0x10001204 0x10001204 0x0000000c Code RO 1248 i.__set_errno mc_p.l(errno.o)
|
0x1000130a 0x1000130a 0x00000002 PAD
|
||||||
0x10001210 0x10001210 0x00000150 Code RO 954 i._printf_core mc_p.l(printf1.o)
|
0x1000130c 0x1000130c 0x0000000c Code RO 1255 i.__set_errno mc_p.l(errno.o)
|
||||||
0x10001360 0x10001360 0x00000014 Code RO 724 i.boost_voltage_select_26V ens1_boost.o
|
0x10001318 0x10001318 0x0000001e Code RO 918 i._printf_core mc_p.l(printfb.o)
|
||||||
0x10001374 0x10001374 0x00000014 Code RO 449 i.fputc retarget.o
|
0x10001336 0x10001336 0x00000002 PAD
|
||||||
0x10001388 0x10001388 0x000000f4 Code RO 3 i.main mian.o
|
0x10001338 0x10001338 0x00000014 Code RO 732 i.boost_voltage_select_55V ens1_boost.o
|
||||||
0x1000147c 0x1000147c 0x000009fc Code RO 878 i.pow m_ps.l(pow.o)
|
0x1000134c 0x1000134c 0x00000014 Code RO 455 i.fputc retarget.o
|
||||||
0x10001e78 0x10001e78 0x00000020 Code RO 890 i.puts mc_p.l(puts.o)
|
0x10001360 0x10001360 0x000000f8 Code RO 3 i.main mian.o
|
||||||
0x10001e98 0x10001e98 0x00000048 Code RO 1219 i.sqrt m_ps.l(sqrt.o)
|
0x10001458 0x10001458 0x000009fc Code RO 890 i.pow m_ps.l(pow.o)
|
||||||
0x10001ee0 0x10001ee0 0x00000064 Code RO 774 i.wavegen_Init ens1_wavegen.o
|
0x10001e54 0x10001e54 0x00000048 Code RO 1226 i.sqrt m_ps.l(sqrt.o)
|
||||||
0x10001f44 0x10001f44 0x00000018 Code RO 775 i.wavegen_Start ens1_wavegen.o
|
0x10001e9c 0x10001e9c 0x00000028 Code RO 781 i.wavegen_Init ens1_wavegen.o
|
||||||
0x10001f5c 0x10001f5c 0x00000016 Code RO 776 i.wavegen_Stop ens1_wavegen.o
|
0x10001ec4 0x10001ec4 0x00000050 Code RO 782 i.wavegen_Start ens1_wavegen.o
|
||||||
0x10001f72 0x10001f72 0x00000002 PAD
|
0x10001f14 0x10001f14 0x00000016 Code RO 783 i.wavegen_Stop ens1_wavegen.o
|
||||||
0x10001f74 0x10001f74 0x000000a8 Code RO 777 i.wavegen_driverA_sine_test ens1_wavegen.o
|
0x10001f2a 0x10001f2a 0x00000002 PAD
|
||||||
0x1000201c 0x1000201c 0x0000000a Data RO 4 .constdata mian.o
|
0x10001f2c 0x10001f2c 0x000000a8 Code RO 784 i.wavegen_driverA_sine_test ens1_wavegen.o
|
||||||
0x10002026 0x10002026 0x00000002 PAD
|
0x10001fd4 0x10001fd4 0x0000000e Data RO 4 .constdata mian.o
|
||||||
0x10002028 0x10002028 0x00000088 Data RO 879 .constdata m_ps.l(pow.o)
|
0x10001fe2 0x10001fe2 0x00000006 PAD
|
||||||
0x100020b0 0x100020b0 0x00000008 Data RO 1217 .constdata m_ps.l(qnan.o)
|
0x10001fe8 0x10001fe8 0x00000088 Data RO 891 .constdata m_ps.l(pow.o)
|
||||||
0x100020b8 0x100020b8 0x00000020 Data RO 1278 Region$$Table anon$$obj.o
|
0x10002070 0x10002070 0x00000008 Data RO 1224 .constdata m_ps.l(qnan.o)
|
||||||
|
0x10002078 0x10002078 0x00000020 Data RO 1285 Region$$Table anon$$obj.o
|
||||||
|
|
||||||
|
|
||||||
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x100020d8, Size: 0x00000270, Max: 0x00020000, ABSOLUTE)
|
Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x10002098, Size: 0x00000288, Max: 0x00020000, ABSOLUTE)
|
||||||
|
|
||||||
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
|
Exec Addr Load Addr Size Type Attr Idx E Section Name Object
|
||||||
|
|
||||||
0x20000000 0x100020d8 0x00000002 Data RW 5 .data mian.o
|
0x20000000 0x10002098 0x00000002 Data RW 5 .data mian.o
|
||||||
0x20000002 0x100020da 0x00000002 PAD
|
0x20000002 0x1000209a 0x00000002 PAD
|
||||||
0x20000004 0x100020dc 0x00000016 Data RW 111 .data ens1_uart.o
|
0x20000004 0x1000209c 0x0000001e Data RW 112 .data ens1_uart.o
|
||||||
0x2000001a 0x100020f2 0x00000002 PAD
|
0x20000022 0x100020ba 0x00000002 PAD
|
||||||
0x2000001c 0x100020f4 0x0000000e Data RW 401 .data ens1_clock.o
|
0x20000024 0x100020bc 0x0000000e Data RW 407 .data ens1_clock.o
|
||||||
0x2000002a 0x10002102 0x00000002 PAD
|
0x20000032 0x100020ca 0x00000002 PAD
|
||||||
0x2000002c 0x10002104 0x00000008 Data RW 450 .data retarget.o
|
0x20000034 0x100020cc 0x00000008 Data RW 456 .data retarget.o
|
||||||
0x20000034 0x1000210c 0x0000001c Data RW 534 .data ens1_timer.o
|
0x2000003c 0x100020d4 0x0000001c Data RW 540 .data ens1_timer.o
|
||||||
0x20000050 0x10002128 0x00000008 Data RW 779 .data ens1_wavegen.o
|
0x20000058 0x100020f0 0x00000014 Data RW 786 .data ens1_wavegen.o
|
||||||
0x20000058 0x10002130 0x00000008 Data RW 842 .data system_cmsdk_cm0.o
|
0x2000006c 0x10002104 0x00000008 Data RW 854 .data system_cmsdk_cm0.o
|
||||||
0x20000060 0x10002138 0x00000004 Data RW 1249 .data mc_p.l(errno.o)
|
0x20000074 0x1000210c 0x00000004 Data RW 1256 .data mc_p.l(errno.o)
|
||||||
0x20000064 - 0x0000000a Zero RW 778 .bss ens1_wavegen.o
|
0x20000078 - 0x0000000e Zero RW 785 .bss ens1_wavegen.o
|
||||||
0x2000006e 0x1000213c 0x00000002 PAD
|
0x20000086 0x10002110 0x00000002 PAD
|
||||||
0x20000070 - 0x00000200 Zero RW 870 STACK startup_cmsdk_cm0.o
|
0x20000088 - 0x00000200 Zero RW 882 STACK startup_cmsdk_cm0.o
|
||||||
|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
|
|
@ -1149,18 +1108,18 @@ Image component sizes
|
||||||
404 22 0 14 0 3371 ens1_clock.o
|
404 22 0 14 0 3371 ens1_clock.o
|
||||||
584 30 0 0 0 3766 ens1_gpio.o
|
584 30 0 0 0 3766 ens1_gpio.o
|
||||||
4 0 0 0 0 391 ens1_mtp.o
|
4 0 0 0 0 391 ens1_mtp.o
|
||||||
514 134 0 28 0 5058 ens1_timer.o
|
430 66 0 28 0 5118 ens1_timer.o
|
||||||
578 34 0 22 0 14760 ens1_uart.o
|
662 34 0 30 0 15204 ens1_uart.o
|
||||||
546 234 0 8 10 4439 ens1_wavegen.o
|
818 188 0 20 14 5450 ens1_wavegen.o
|
||||||
244 24 10 2 0 44091 mian.o
|
248 26 14 2 0 44171 mian.o
|
||||||
20 4 0 8 0 2302 retarget.o
|
20 4 0 8 0 2302 retarget.o
|
||||||
28 8 192 0 512 576 startup_cmsdk_cm0.o
|
28 8 192 0 512 576 startup_cmsdk_cm0.o
|
||||||
16 8 0 8 0 631 system_cmsdk_cm0.o
|
16 8 0 8 0 631 system_cmsdk_cm0.o
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
2964 506 236 96 524 79796 Object Totals
|
3240 394 244 116 528 81391 Object Totals
|
||||||
0 0 32 0 0 0 (incl. Generated)
|
0 0 32 0 0 0 (incl. Generated)
|
||||||
6 0 2 6 2 0 (incl. Padding)
|
6 0 6 6 2 0 (incl. Padding)
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -1189,8 +1148,7 @@ Image component sizes
|
||||||
34 0 0 0 0 68 llushr.o
|
34 0 0 0 0 68 llushr.o
|
||||||
36 0 0 0 0 60 memcpya.o
|
36 0 0 0 0 60 memcpya.o
|
||||||
36 0 0 0 0 100 memseta.o
|
36 0 0 0 0 100 memseta.o
|
||||||
368 12 0 0 0 168 printf1.o
|
50 8 0 0 0 144 printfb.o
|
||||||
32 4 0 0 0 68 puts.o
|
|
||||||
44 0 0 0 0 72 uidiv.o
|
44 0 0 0 0 72 uidiv.o
|
||||||
40 2 0 0 0 68 cdrcmple.o
|
40 2 0 0 0 68 cdrcmple.o
|
||||||
356 4 0 0 0 140 dadd.o
|
356 4 0 0 0 140 dadd.o
|
||||||
|
|
@ -1204,19 +1162,19 @@ Image component sizes
|
||||||
162 0 0 0 0 80 dsqrt.o
|
162 0 0 0 0 80 dsqrt.o
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
5064 296 144 4 0 2544 Library Totals
|
4716 288 144 4 0 2452 Library Totals
|
||||||
4 0 0 0 0 0 (incl. Padding)
|
6 0 0 0 0 0 (incl. Padding)
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
Code (inc. data) RO Data RW Data ZI Data Debug Library Name
|
Code (inc. data) RO Data RW Data ZI Data Debug Library Name
|
||||||
|
|
||||||
2928 220 144 0 0 792 m_ps.l
|
2928 220 144 0 0 792 m_ps.l
|
||||||
718 38 0 4 0 800 mc_p.l
|
368 30 0 4 0 708 mc_p.l
|
||||||
1414 38 0 0 0 952 mf_p.l
|
1414 38 0 0 0 952 mf_p.l
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
5064 296 144 4 0 2544 Library Totals
|
4716 288 144 4 0 2452 Library Totals
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
@ -1225,15 +1183,15 @@ Image component sizes
|
||||||
|
|
||||||
Code (inc. data) RO Data RW Data ZI Data Debug
|
Code (inc. data) RO Data RW Data ZI Data Debug
|
||||||
|
|
||||||
8028 802 380 100 524 79448 Grand Totals
|
7956 682 388 120 528 80951 Grand Totals
|
||||||
8028 802 380 100 524 79448 ELF Image Totals
|
7956 682 388 120 528 80951 ELF Image Totals
|
||||||
8028 802 380 100 0 0 ROM Totals
|
7956 682 388 120 0 0 ROM Totals
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
|
|
||||||
Total RO Size (Code + RO Data) 8408 ( 8.21kB)
|
Total RO Size (Code + RO Data) 8344 ( 8.15kB)
|
||||||
Total RW Size (RW Data + ZI Data) 624 ( 0.61kB)
|
Total RW Size (RW Data + ZI Data) 648 ( 0.63kB)
|
||||||
Total ROM Size (Code + RO Data + RW Data) 8508 ( 8.31kB)
|
Total ROM Size (Code + RO Data + RW Data) 8464 ( 8.27kB)
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
|
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -26,19 +26,22 @@ Project File Date: 08/15/2025
|
||||||
|
|
||||||
<h2>Output:</h2>
|
<h2>Output:</h2>
|
||||||
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin'
|
*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin'
|
||||||
Build target 'ENS001_BASIC_PRJ'
|
Rebuild target 'ENS001_BASIC_PRJ'
|
||||||
|
assembling startup_CMSDK_CM0.s...
|
||||||
compiling mian.c...
|
compiling mian.c...
|
||||||
USER\mian.c(31): warning: #223-D: function "GPIO_IO_Init" declared implicitly
|
compiling ENS1_GPIO.c...
|
||||||
GPIO_IO_Init(GPIO_19, OUTPUT, 0x00, 0x02, 0x00, 0x00, ENABLE);
|
compiling system_CMSDK_CM0.c...
|
||||||
USER\mian.c: 1 warning, 0 errors
|
compiling retarget.c...
|
||||||
|
compiling ENS1_BOOST.c...
|
||||||
|
compiling ENS1_CLOCK.c...
|
||||||
|
compiling ENS1_MTP.c...
|
||||||
|
compiling ENS1_UART.c...
|
||||||
compiling ENS1_WAVEGEN.c...
|
compiling ENS1_WAVEGEN.c...
|
||||||
.\FWLIB\include\ENS1_BOOST.h(37): warning: #1-D: last line of file ends without a newline
|
compiling ENS1_TIMER.c...
|
||||||
#endif
|
|
||||||
FWLIB\source\ENS1_WAVEGEN.c: 1 warning, 0 errors
|
|
||||||
linking...
|
linking...
|
||||||
Program Size: Code=8028 RO-data=380 RW-data=100 ZI-data=524
|
Program Size: Code=7956 RO-data=388 RW-data=120 ZI-data=528
|
||||||
FromELF: creating hex file...
|
FromELF: creating hex file...
|
||||||
".\Objects\ENS001_BASIC_PRJ.axf" - 0 Error(s), 2 Warning(s).
|
".\Objects\ENS001_BASIC_PRJ.axf" - 0 Error(s), 0 Warning(s).
|
||||||
|
|
||||||
<h2>Software Packages used:</h2>
|
<h2>Software Packages used:</h2>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,19 @@
|
||||||
:020000041000EA
|
:020000041000EA
|
||||||
:1000000070020020D5000010DD000010DF0000109D
|
:1000000088020020D5000010DD000010DF00001085
|
||||||
:1000100000000000000000000000000000000000E0
|
:1000100000000000000000000000000000000000E0
|
||||||
:10002000000000000000000000000000E1000010DF
|
:10002000000000000000000000000000E1000010DF
|
||||||
:100030000000000000000000E3000010E5000010D8
|
:100030000000000000000000E3000010E5000010D8
|
||||||
:10004000E7000010E7000010E7000010E7000010D4
|
:10004000E7000010E7000010E7000010E7000010D4
|
||||||
:10005000E7000010E7000010E7000010E7000010C4
|
:10005000E7000010E7000010E7000010E7000010C4
|
||||||
:10006000E7000010E7000010E7000010E7000010B4
|
:10006000E7000010E7000010E7000010E7000010B4
|
||||||
:10007000610E0010CD0E0010E7000010E700001028
|
:10007000210F00108D0F0010E7000010E7000010A6
|
||||||
:10008000E7000010E7000010E7000010E700001094
|
:10008000E7000010E7000010E7000010E700001094
|
||||||
:10009000E7000010B50C0010690D0010E70000101B
|
:10009000E7000010C90D0010290E0010E700001045
|
||||||
:1000A000E7000010E7000010000000000000000062
|
:1000A000E7000010E7000010000000000000000062
|
||||||
:1000B0000000000000000000000000000000000040
|
:1000B0000000000000000000000000000000000040
|
||||||
:1000C0000348854600F0BAFA00480047891300103B
|
:1000C0000348854600F0BAFA004800476113001063
|
||||||
:1000D000700200200448804704480047FEE7FEE71E
|
:1000D000880200200448804704480047FEE7FEE706
|
||||||
:1000E000FEE7FEE7FEE7FEE7A50C0010C1000010EA
|
:1000E000FEE7FEE7FEE7FEE7B90D0010C1000010D5
|
||||||
:1000F00030B50B46014600202022012409E00D46C0
|
:1000F00030B50B46014600202022012409E00D46C0
|
||||||
:10010000D5409D4205D31D469540491B2546954047
|
:10010000D5409D4205D31D469540491B2546954047
|
||||||
:1001100040191546521E002DF1DC30BD03460B433D
|
:1001100040191546521E002DF1DC30BD03460B433D
|
||||||
|
|
@ -49,7 +49,7 @@
|
||||||
:1002F0000843194610BD10B5002B08DA0024401C35
|
:1002F0000843194610BD10B5002B08DA0024401C35
|
||||||
:10030000614192185B411A4301D14008400010BD81
|
:10030000614192185B411A4301D14008400010BD81
|
||||||
:10031000F0B51FB482B005460C0003D0084600F0CB
|
:10031000F0B51FB482B005460C0003D0084600F0CB
|
||||||
:10032000B3FE02E000F0B0FE20300246009021460D
|
:1003200037FF02E000F034FF203002460090214603
|
||||||
:10033000284600F095F9049B059A04460F46184399
|
:10033000284600F095F9049B059A04460F46184399
|
||||||
:100340001143084314D0184610431BD00098402195
|
:100340001143084314D0184610431BD00098402195
|
||||||
:100350000A1A18460599FFF7BDFF05460E46009A92
|
:100350000A1A18460599FFF7BDFF05460E46009A92
|
||||||
|
|
@ -100,7 +100,7 @@
|
||||||
:100620008C412146002B04DB1C460123DB07524290
|
:100620008C412146002B04DB1C460123DB07524290
|
||||||
:10063000A341994200D1904210BD0000064C012513
|
:10063000A341994200D1904210BD0000064C012513
|
||||||
:10064000064E05E0E36807CC2B430C3C984710347A
|
:10064000064E05E0E36807CC2B430C3C984710347A
|
||||||
:10065000B442F7D3FFF738FDB8200010D8200010BF
|
:10065000B442F7D3FFF738FD78200010982000103F
|
||||||
:1006600010B5202A04DB0146203A9140002010BD3D
|
:1006600010B5202A04DB0146203A9140002010BD3D
|
||||||
:10067000914020239C1A0346E3401943904010BD4B
|
:10067000914020239C1A0346E3401943904010BD4B
|
||||||
:1006800010B5202A06DBCB170846203A1041C117C7
|
:1006800010B5202A06DBCB170846203A1041C117C7
|
||||||
|
|
@ -118,418 +118,415 @@
|
||||||
:100740007141FFF7D8FDB6E710B5134600224160AE
|
:100740007141FFF7D8FDB6E710B5134600224160AE
|
||||||
:100750008160002B01D0082422430124224302603F
|
:100750008160002B01D0082422430124224302603F
|
||||||
:1007600010BD000010B5034800F008F80249086009
|
:1007600010BD000010B5034800F008F80249086009
|
||||||
:1007700010BD0000200000201C000020F0B587B054
|
:1007700010BD00002800002024000020F0B587B044
|
||||||
:100780000446002754480068217809040843524968
|
:100780000446002754480068217809040843524968
|
||||||
:100790000860207800281AD108464068617809016D
|
:100790000860207800281AD108464068617809016D
|
||||||
:1007A00008434D4948606178881CFFF753FD0246B5
|
:1007A00008434D4948606178881CFFF753FD0246B5
|
||||||
:1007B0000B460591049000200121890700F05EFEA0
|
:1007B0000B460591049000200121890700F04CFEB2
|
||||||
:1007C0000546FFF769FDC7B244494F4328E020784A
|
:1007C0000546FFF769FDC7B244494F4328E020784A
|
||||||
:1007D000012803D1A77841494F4321E0207802281E
|
:1007D000012803D1A77841494F4321E0207802281E
|
||||||
:1007E00001D187031CE02078032801D1A78817E0F6
|
:1007E00001D187031CE02078032801D1A78817E0F6
|
||||||
:1007F00039484068617809010843374948606178A1
|
:1007F00039484068617809010843374948606178A1
|
||||||
:10080000881CFFF727FD02460B4605910490002047
|
:10080000881CFFF727FD02460B4605910490002047
|
||||||
:100810000121890700F032FE0546FFF73DFDC7B212
|
:100810000121890700F020FE0546FFF73DFDC7B224
|
||||||
:100820002D480068A17908432B49086000BF2A4879
|
:100820002D480068A17908432B49086000BF2A4879
|
||||||
:1008300000684007C00F0028F9D127480068217AD6
|
:1008300000684007C00F0028F9D127480068217AD6
|
||||||
:10084000090208432449086008460068E179090361
|
:10084000090208432449086008460068E179090361
|
||||||
:10085000084321490860207A00281BDD217AC81E40
|
:10085000084321490860207A00281BDD217AC81E40
|
||||||
:10086000FFF7F8FC05462A460B46002001218907C0
|
:10086000FFF7F8FC05462A460B46002001218907C0
|
||||||
:1008700000F004FE039102903846FFF7FFFC01915F
|
:1008700000F0F2FD039102903846FFF7FFFC019172
|
||||||
:100880000090039B029AFFF76DFC05910490FFF71F
|
:100880000090039B029AFFF76DFC05910490FFF71F
|
||||||
:1008900003FD0746E07900281BDDE179C81EFFF75C
|
:1008900003FD0746E07900281BDDE179C81EFFF75C
|
||||||
:1008A000D9FC05462A460B4600200121890700F0A5
|
:1008A000D9FC05462A460B4600200121890700F0A5
|
||||||
:1008B000E5FD039102903846FFF7E0FC01910090BE
|
:1008B000D3FD039102903846FFF7E0FC01910090D0
|
||||||
:1008C000039B029AFFF74EFC05910490FFF7E4FCAE
|
:1008C000039B029AFFF74EFC05910490FFF7E4FCAE
|
||||||
:1008D0000746384607B0F0BD0000024040420F0016
|
:1008D0000746384607B0F0BD0000024040420F0016
|
||||||
:1008E00010B50446002C04D00A2221460148FFF727
|
:1008E00010B50446002C04D00E2221460148FFF723
|
||||||
:1008F00015FC10BD6400002010B5154800780028D4
|
:1008F00015FC10BD7800002010B5164800780028BF
|
||||||
:1009000024D014480068401C12490860084600685A
|
:1009000027D015480068401C1349086000F02AF8F9
|
||||||
:1009100005210902884205D20F4881880F4801F05D
|
:10091000124804881048006805210902884204D260
|
||||||
:1009200029FB13E00B4800680521090488420DD318
|
:1009200021460F4801F002FB12E00B480068052148
|
||||||
:1009300008480068C911884205D2074881880748DD
|
:10093000090488420CD308480068C911884204D2CF
|
||||||
:1009400001F018FB02E000200249086010BD000021
|
:100940002146074801F0F2FA02E00020024908605F
|
||||||
:1009500050000020540000206400002000C000402F
|
:1009500000BF10BD580000205C0000206000002097
|
||||||
:1009600010B501F0EFFA02A000F07EFB10BD000010
|
:1009600000C00040F8B54548407B002803D044480B
|
||||||
:10097000E794B5E588BAE6BF80E5B7B2E590AFE5A4
|
:100970000078002800D1F8BD00244048807A81002A
|
||||||
:100980008AA85C6E0000000010B5002005490870C0
|
:1009800045183E48067BC07A810047183B4880885E
|
||||||
:1009900005490860054801F0E1FA05A000F064FB94
|
:10099000002805DD394881882846FFF7A9FB044671
|
||||||
:1009A00010BD0000500000205400002000C0004096
|
:1009A00038480068401C37490860374800780028FC
|
||||||
:1009B000E794B5E588BAE6BF80E5B7B2E5819CE685
|
:1009B00004D0012829D002285CD13DE033480068EA
|
||||||
:1009C000ADA25C6E0000000010B502460F2A14DDD7
|
:1009C000A84217D22F480068A0420DD300202D491D
|
||||||
:1009D0001348806B1346103B5C000323A3409843ED
|
:1009D00008602A4880882E490988884204DD2C480E
|
||||||
:1009E0000F4B98631846806B1346103B5C000B4618
|
:1009E0000088401C2A49088028480068401C274984
|
||||||
:1009F000A34018430A4B98630FE00948406B54002A
|
:1009F000086009E0012024490870002023490860AC
|
||||||
:100A00000323A3409843064B58631846406B540099
|
:100A00001E4880882249088034E020480068B842A7
|
||||||
:100A10000B46A3401843024B5863002010BD000052
|
:100A100009D21A4880881E4908801C480068401C7A
|
||||||
:100A20000010024001460448406801228A401040FC
|
:100A20001A49086007E0022017490870002017499A
|
||||||
:100A3000C840C0B27047000000100240FFB5044635
|
:100A30000860144908601DE014480068B04215D2EF
|
||||||
:100A40000D461E460B9F00212046FFF7BDFF012DDE
|
:100A400010480068A0420BD300200E4908601048EF
|
||||||
:100A500010D1012F0ED14F4800690121A1408843D8
|
:100A50000088002804DD0E480088401E0C490880EC
|
||||||
:100A60004C490861084640690121A14008434949B1
|
:100A60000A480068401C0949086002E00020084963
|
||||||
:100A700048613BE0012D10D1002F0ED1454800699F
|
:100A7000088000BF00BF00BF7DE7000078000020B5
|
||||||
:100A80000121A1408843434908610846406901218A
|
:100A80005800002064000020620000206800002060
|
||||||
:100A9000A14088433F49486128E0002D14D1012F2F
|
:100A90006000002000B501F015FA00BD00B500208F
|
||||||
:100AA00012D13C4840690121A1408843394948613D
|
:100AA0000749087007490860074908800749087026
|
||||||
:100AB000084600690121A1400843364908610998A8
|
:100AB0000749086007490860074801F02BFA00BDA4
|
||||||
:100AC00048620298086311E0002D0FD1002F0DD16C
|
:100AC000580000205C000020600000206200002030
|
||||||
:100AD000304800690121A14088432E490861084639
|
:100AD000640000206800002000C0004010B50246FD
|
||||||
:100AE00040690121A14088432A494861022E0ED164
|
:100AE0000F2A14DD1348806B1346103B5C00032370
|
||||||
:100AF000284880690121A140884326498861084629
|
:100AF000A34098430F4B98631846806B1346103BF6
|
||||||
:100B0000C1690120A04081432248C1611FE0002E3D
|
:100B00005C000B46A34018430A4B98630FE009486A
|
||||||
:100B10000ED1204880690121A14008431D49886108
|
:100B1000406B54000323A3409843064B5863184688
|
||||||
:100B20000846C0690121A14088431A49C8610EE006
|
:100B2000406B54000B46A3401843024B586300200F
|
||||||
:100B3000012E0CD1174881690120A040814315483E
|
:100B300010BD000000100240014604484068012238
|
||||||
:100B40008161C0690121A14008431249C86111486F
|
:100B40008A401040C840C0B2704700000010024008
|
||||||
:100B5000816A0120A04081430E488162806A0A991F
|
:100B5000FFB504460D461E460B9F00212046FFF7B9
|
||||||
:100B6000C907C90FA14008430A4988620846C06AFC
|
:100B6000BDFF012D10D1012F0ED14F480069012189
|
||||||
:100B70000121A14088430749C8620846C06A0A9912
|
:100B7000A14088434C490861084640690121A140D1
|
||||||
:100B80008907C90FA14008430249C862002004B088
|
:100B80000843494948613BE0012D10D1002F0ED1A7
|
||||||
:100B9000F0BD000000100240012907D1074A526849
|
:100B9000454800690121A14088434349086108464E
|
||||||
:100BA000012383401A43054B5A6006E0034A52680A
|
:100BA00040690121A14088433F49486128E0002D68
|
||||||
:100BB000012383409A43014B5A6070470010024062
|
:100BB00014D1012F12D13C4840690121A140884342
|
||||||
:100BC00000B503461846FFF72DFF012803D118464C
|
:100BC00039494861084600690121A1400843364976
|
||||||
:100BD00000F00AF807E01846FFF724FF002802D1CA
|
:100BD0000861099848620298086311E0002D0FD15E
|
||||||
:100BE000184600F00BF800BD034949680122824015
|
:100BE000002F0DD1304800690121A14088432E49D2
|
||||||
:100BF0009143014A5160704700100240034949681F
|
:100BF0000861084640690121A14088432A494861AB
|
||||||
:100C0000012282401143014A5160704700100240A6
|
:100C0000022E0ED1284880690121A140884326493F
|
||||||
:100C100000207047C206D20E01219140014A1160A6
|
:100C100088610846C1690120A04081432248C16122
|
||||||
:100C20007047000080E200E0C206D20E0121914030
|
:100C20001FE0002E0ED1204880690121A140084319
|
||||||
:100C3000014A11607047000080E200E0C206D20E57
|
:100C30001D4988610846C0690121A14088431A49BD
|
||||||
:100C400001219140014A11607047000080E100E0FD
|
:100C4000C8610EE0012E0CD1174881690120A04037
|
||||||
:100C5000C206D20E01219140014A11607047000086
|
:100C5000814315488161C0690121A14008431249BF
|
||||||
:100C600080E100E0C206D20E01219140014A1160EC
|
:100C6000C8611148816A0120A04081430E48816219
|
||||||
:100C70007047000000E100E0C206D20E0121914061
|
:100C7000806A0A99C907C90FA14008430A498862D6
|
||||||
:100C8000014A11607047000000E100E0014604489D
|
:100C80000846C06A0121A14088430749C862084656
|
||||||
:100C9000406901228A401043014A50610020704798
|
:100C9000C06A0A998907C90FA14008430249C8627E
|
||||||
:100CA00000000240014802490860704700E1F50574
|
:100CA000002004B0F0BD000000100240012907D16F
|
||||||
:100CB0005C00002000B501200449C86004480068B9
|
:100CB000074A5268012383401A43054B5A6006E0F5
|
||||||
:100CC000401C0349086000F06FF800BD0080004040
|
:100CC000034A5268012383409A43014B5A6070479C
|
||||||
:100CD0004400002070B504460820FFF7D7FF152018
|
:100CD0000010024000B503461846FFF72DFF01281B
|
||||||
:100CE000FFF7B6FF1520FFF79FFF7D21C9000B48D6
|
:100CE00003D1184600F00AF807E01846FFF724FF82
|
||||||
:100CF0000068FFF7FDF960430546294608A000F0AB
|
:100CF000002802D1184600F00BF800BD03494968EE
|
||||||
:100D0000B3F9012229460C48FFF71EFD1520FFF715
|
:100D0000012282409143014A516070470010024025
|
||||||
:100D1000B3FF214609A000F0A7F970BD1C00002018
|
:100D100003494968012282401143014A51607047EA
|
||||||
:100D200054494D455230E9878DE8A385E8BDBDE5BE
|
:100D20000010024000207047C206D20E01219140FF
|
||||||
:100D300080BC3A2025640A000080004054494D459B
|
:100D3000014A11607047000080E200E0C206D20E56
|
||||||
:100D400052305F496E6974E5AE8CE68890EFBC8CDA
|
:100D400001219140014A11607047000080E200E0FB
|
||||||
:100D5000E4B8ADE696ADE591A8E69C9F3A202564FF
|
:100D5000C206D20E01219140014A11607047000085
|
||||||
:100D6000206D730A0000000001200449C860044897
|
:100D600080E100E0C206D20E01219140014A1160EB
|
||||||
:100D70000068401C02490860704700000090004075
|
:100D70007047000080E100E0C206D20E01219140E0
|
||||||
:100D80004C000020004870473400002010B50621B8
|
:100D8000014A11607047000000E100E0C206D20E87
|
||||||
:100D90000348FFF7DCF908210248FFF7D8F910BD36
|
:100D900001219140014A11607047000000E100E02C
|
||||||
:100DA000340000203A0000202B480078401C2A49DB
|
:100DA00001460448406901228A401043014A5061CB
|
||||||
:100DB000087008464078401C487008468078401CFF
|
:100DB0000020704700000240014802490860704767
|
||||||
:100DC00088700846C078401CC87008460079401CEE
|
:100DC00000E1F5057000002000B501200449C8606D
|
||||||
:100DD00008710846C088401CC88008460078022870
|
:100DD00004480068401C0349086000F045F800BD65
|
||||||
:100DE00004DB0020087001201C4908701A48407874
|
:100DE000008000404C00002070B504460820FFF74A
|
||||||
:100DF000062805DB00201849487001201749487073
|
:100DF000D7FF1520FFF7B6FF1520FFF79FFF7D21D6
|
||||||
:100E0000154880780A2805DB0020134988700120E6
|
:100E0000C90007480068FFF773F9604305460122EF
|
||||||
:100E1000124988701048C078142805DB00200E495C
|
:100E100029460448FFF798FC1520FFF7B7FF70BD7F
|
||||||
:100E2000C87001200D49C8700B480079642805DBA3
|
:100E2000240000200080004001200449C8600448DC
|
||||||
:100E30000020094908710120084908710648C08846
|
:100E30000068401C024908607047000000900040B4
|
||||||
:100E40007D21C900884205DB00200349C8800120BC
|
:100E400054000020004870473C00002010B50621E7
|
||||||
:100E500002494871704700003A0000203400002029
|
:100E50000348FFF77CF908210248FFF778F910BD35
|
||||||
:100E600010B500240C20FFF7D5FE0120800700F00C
|
:100E60003C000020420000202B480078401C2A490A
|
||||||
:100E700062F8032806D101208007406804218843D6
|
:100E7000087008464078401C487008468078401C3E
|
||||||
:100E8000090748600120800700F055F8022805D0C6
|
:100E800088700846C078401CC87008460079401C2D
|
||||||
:100E90000120800700F04FF8062816D101208007B6
|
:100E900008710846C088401CC880084600780228AF
|
||||||
:100EA0004068400840000121890748600846006802
|
:100EA00004DB0020087001201C4908701A484078B3
|
||||||
:100EB000C4B221460120800700F0C4F80120800759
|
:100EB000062805DB002018494870012017494870B2
|
||||||
:100EC0004068012108438907486010BD10B500241F
|
:100EC000154880780A2805DB002013498870012026
|
||||||
:100ED0000D20FFF79FFE144800F02DF8032805D1E0
|
:100ED000124988701048C078142805DB00200E499C
|
||||||
:100EE00011484068042188430F4948600E4800F0CB
|
:100EE000C87001200D49C8700B480079642805DBE3
|
||||||
:100EF00022F8022804D00C4800F01DF8062812D170
|
:100EF0000020094908710120084908710648C08886
|
||||||
:100F000009484068400840000749486008460068B2
|
:100F00007D21C900884205DB00200349C8800120FB
|
||||||
:100F1000C4B22146044800F095F803484068012116
|
:100F10000249487170470000420000203C00002058
|
||||||
:100F200008430149486010BD00100040014648696F
|
:100F200010B500240C20FFF7FFFE0120800700F021
|
||||||
:100F30008006C00F7047014688680007400F704761
|
:100F300062F8032806D10120800740680421884315
|
||||||
:100F400070B504460D461348844206D10D20FFF7C4
|
:100F4000090748600120800700F055F8022805D005
|
||||||
:100F500075FE0D20FFF75EFE09E001208007844248
|
:100F50000120800700F04FF8062816D101208007F5
|
||||||
:100F600005D10C20FFF76AFE0C20FFF753FE6068E6
|
:100F60004068400840000121890748600846006841
|
||||||
:100F70002978084360600748844203D10D20FFF7B9
|
:100F7000C4B221460120800700F0EEF8012080076E
|
||||||
:100F800071FE06E001208007844202D10C20FFF7A9
|
:100F80004068012108438907486010BD10B500245E
|
||||||
:100F900069FE70BD00100040F8B504460D46012002
|
:100F90000D20FFF7C9FE144800F02DF8032805D1F5
|
||||||
:100FA000800784420BD10020FFF770FE0121022050
|
:100FA00011484068042188430F4948600E4800F00A
|
||||||
:100FB000FFF70AFD01210320FFF706FD0DE01F48A2
|
:100FB00022F8022804D00C4800F01DF8062812D1AF
|
||||||
:100FC00084420AD10120FFF761FE01210C20FFF7C6
|
:100FC00009484068400840000749486008460068F2
|
||||||
:100FD000FBFC01210D20FFF7F7FC606BC007C00F81
|
:100FD000C4B22146044800F0BFF80348406801212C
|
||||||
:100FE000002801D1102700E00D2715486968006826
|
:100FE00008430149486010BD0010004001464869AF
|
||||||
:100FF000FFF77EF839460090FFF77AF8401E86B278
|
:100FF0008006C00F7047014688680007400F7047A1
|
||||||
:101000001120304020621120000230400012606246
|
:1010000070B504460D461348844206D10D20FFF703
|
||||||
:10101000A068E968097889010843A060E8688078D9
|
:101010009FFE0D20FFF788FE09E001208007844233
|
||||||
:10102000012803D1A06801210843A060287A012883
|
:1010200005D10C20FFF794FE0C20FFF77DFE6068D1
|
||||||
:1010300003D12069202108432061F8BD0010004041
|
:101030002978084360600748844203D10D20FFF7F8
|
||||||
:101040001C00002000B503460A4600BF1846FFF703
|
:101040009BFE06E001208007844202D10C20FFF7BE
|
||||||
:101050006DFF0028FAD01146184600F002F810463D
|
:1010500093FE70BD00100040F8B504460D46012017
|
||||||
:1010600000BD0160704700000FB410B503A9044B28
|
:10106000800784420BD10020FFF79AFE0121022065
|
||||||
:10107000044A029800F0CCF810BC08BC04B0184731
|
:10107000FFF734FD01210320FFF730FD0DE0344878
|
||||||
:10108000751300102C0000202021020C01D010212B
|
:1010800084420AD10120FFF78BFE01210C20FFF7DB
|
||||||
:101090001046020A01D010460839020901D0104654
|
:1010900025FD01210D20FFF721FD606BC007C00F6A
|
||||||
:1010A000091F820801D01046891E420801D0881EFF
|
:1010A000002801D1102700E00D272A486968006850
|
||||||
:1010B0007047081A704700004900CA020243100036
|
:1010B000FFF71EF839460090FFF71AF8401E86B277
|
||||||
:1010C00000D004204A0D01D001221043044A490DEA
|
:1010C000F0B22062FF200002304000126062A0688F
|
||||||
:1010D000914201D102210843012800D10520704727
|
:1010D000E968097889010843A060E86880780128F8
|
||||||
:1010E000FF070000F8B504464F1EC8000838211855
|
:1010E00003D1A06801210843A060E068042188437F
|
||||||
:1010F00015461E46086849683A4606239A4310D0AA
|
:1010F000E060E068297C89000843E060E0688008DF
|
||||||
:101100002A463346FFF708FA3A46D200083AA318AF
|
:101100008000E060E068697C0843E060E0680821F6
|
||||||
:101110001A687F1E5B68FFF74DF906223B46934332
|
:101110008843E060E068297DC9000843E060287DDD
|
||||||
:10112000EED1022F23D0042F11D0062F2FD12A4623
|
:1011200001280DD1E06830218843E060E068E97C67
|
||||||
:101130003346FFF7F1F9E36AA26AFFF73BF92A4663
|
:1011300009010843E060E068A97C49010843E060D8
|
||||||
:101140003346FFF7E9F9636A226AFFF733F92A4663
|
:10114000287A012803D12069202108432061F8BDB5
|
||||||
:101150003346FFF7E1F9E369A269FFF72BF92A4665
|
:10115000001000402400002000B503460A4600BFEE
|
||||||
:101160003346FFF7D9F963692269FFF723F92A4665
|
:101160001846FFF743FF0028FAD01146184600F052
|
||||||
:101170003346FFF7D1F9E368A268FFF71BF92A4667
|
:1011700002F8104600BD01607047000010B5024A39
|
||||||
:101180003346FFF7C9F963682268FFF713F9F8BD22
|
:10118000024900F0C9F810BD4D13001034000020D2
|
||||||
:10119000002210B5134610460149FEF7E3FF10BDCB
|
:101190002021020C01D010211046020A01D0104675
|
||||||
:1011A0000000F03F10B5FFF705F910BD002210B5A3
|
:1011A0000839020901D01046091F820801D01046F3
|
||||||
:1011B000134610461146FEF7D5FF10BD10B50721A6
|
:1011B000891E420801D0881E7047081A7047000037
|
||||||
:1011C000024A00200907FFF70FFA10BD01030000D3
|
:1011C0004900CA020243100000D004204A0D01D099
|
||||||
:1011D000034A10B500201107FFF706FA10BD000002
|
:1011D00001221043044A490D914201D102210843E2
|
||||||
:1011E00001FDFFFF02E008C8121F08C1002AFAD162
|
:1011E000012800D105207047FF070000F8B504462C
|
||||||
:1011F00070477047002001E001C1121F002AFBD197
|
:1011F0004F1EC8000838211815461E460868496861
|
||||||
:10120000704700000149086070470000600000203E
|
:101200003A4606239A4310D02A463346FFF784F91C
|
||||||
:10121000FFB58DB00446002506E025280AD0109AB7
|
:101210003A46D200083AA3181A687F1E5B68FFF7A7
|
||||||
:101220000F999047641C6D1C20780028F5D1284642
|
:10122000C9F806223B469343EED1022F23D0042F68
|
||||||
:1012300011B0F0BD00270121484A009700E00743A4
|
:1012300011D0062F2FD12A463346FFF76DF9E36A06
|
||||||
:10124000641C23780846203B98401042F7D1207850
|
:10124000A26AFFF7B7F82A463346FFF765F9636AE3
|
||||||
:101250002E2817D1042007436078641C2A280CD15B
|
:10125000226AFFF7AFF82A463346FFF75DF9E369E4
|
||||||
:101260000E98641C02C800910E900BE000990A22AF
|
:10126000A269FFF7A7F82A463346FFF755F96369E5
|
||||||
:10127000514330394018641C0090207801463039C1
|
:101270002269FFF79FF82A463346FFF74DF9E368E6
|
||||||
:101280000929F3D920780028D1D0642808D069280A
|
:10128000A268FFF797F82A463346FFF745F96368E7
|
||||||
:1012900006D075281ED0109A0F9990476D1C5BE000
|
:101290002268FFF78FF8F8BD002210B513461046FC
|
||||||
:1012A0000A200E99019001C90E91002802DA4042ED
|
:1012A0000149FEF75FFF10BD0000F03F10B5FFF7EA
|
||||||
:1012B0002D2102E0390504D52B216A461172012146
|
:1012B00081F810BD002210B5134610461146FEF706
|
||||||
:1012C00003E0F90704D02021F7E70BAE0B910DE006
|
:1012C00051FF10BD10B50721024A00200907FFF7A2
|
||||||
:1012D0000021FAE70A200E99019001C90E91F7E763
|
:1012D0008BF910BD01030000034A10B5002011076F
|
||||||
:1012E0000199FEF705FF3031761E31700028F7D1E5
|
:1012E000FFF782F910BD000001FDFFFF02E008C812
|
||||||
:1012F00003A8801B20300190780701D5009801E0F9
|
:1012F000121F08C1002AFAD170477047002001E090
|
||||||
:10130000012000900199884201DD401A00E0002090
|
:1013000001C1121F002AFBD170470000014908608B
|
||||||
:101310000027009006E002A8109AC05D0F99904740
|
:101310007047000074000020F8B516460F460446DA
|
||||||
:101320006D1C7F1C0B988742F5DB04E0109A30207F
|
:10132000002503E03946B047641C6D1C2078002876
|
||||||
:101330000F9990476D1C0099481E00900029F5DC1C
|
:10133000F8D12846F8BD0000024803494861102052
|
||||||
:1013400005E03078109A761C0F9990476D1C019932
|
:10134000086170471377090000E0004070B504465B
|
||||||
:10135000481E01900029F4DC641C65E7092801009F
|
:101350000D46E1B20148FFF7FFFE70BD00100040EE
|
||||||
:101360000248034948611020086170471372070062
|
:1013600088B0FFF7DFFCFFF7FDF9012000210091B5
|
||||||
:1013700000E0004070B504460D46E1B20148FFF7B9
|
:1013700002230A46019102901320FFF7E9FB0021A6
|
||||||
:1013800061FE70BD0010004086B0FFF741FCFFF722
|
:101380001320FFF793FC2E492E48FFF765FE2E49E8
|
||||||
:10139000E9F901200021009102230A4601910290FF
|
:101390002C48FFF735FE0120FFF726FDFFF756FD2D
|
||||||
:1013A0001320FFF74BFB00211320FFF7F5FB2D491E
|
:1013A00000F07CFD294B0FCB079304AB07C304A8C7
|
||||||
:1013B0002D48FFF7F1FD2D492B48FFF7C1FD012016
|
:1013B000FFF796FAFFF76EFB40E0FFF743FD0446A8
|
||||||
:1013C000FFF788FCFFF7E2FC00F08AFD284A07CA15
|
:1013C0002078002801D000202070A078002801D0CB
|
||||||
:1013D00003AB07C303A8FFF783FAFFF7C1FA40E0A6
|
:1013D0000020A0702079002801D0002020716079C1
|
||||||
:1013E000FFF7D0FC04462078002801D000202070B0
|
:1013E00000282AD01A480078401C1949087008467D
|
||||||
:1013F000A078002801D00020A0702079002801D01A
|
:1013F00000780A280BDC17480078002804D1012067
|
||||||
:1014000000202071607900282AD01A480078401CFA
|
:1014000014490870FFF746FBFFF776FA10E0104822
|
||||||
:1014100018490870084600780A280BDC164800783E
|
:101410000078142809DC0F480078012808D1002042
|
||||||
:10142000002804D1012014490870FFF799FAFFF74A
|
:101420000C490870FFF73AFB02E0002008490870F9
|
||||||
:1014300063FA10E00F480078142809DC0E480078A1
|
:101430001320FFF74FFC0020607100BFBDE70000E4
|
||||||
:10144000012808D100200C490870FFF79DFA02E03E
|
:10144000080000200010004020000020D41F0010E1
|
||||||
:101450000020084908701320FFF7B2FB00206071DC
|
:101450000000002001000020F0B51FB496B08446C3
|
||||||
:1014600000BFBDE708000020001000401800002069
|
:101460000C460246199D18980390490068006300D5
|
||||||
:101470001C2000100000002001000020F0B51FB467
|
:10147000490840080193002A01D0012600E0002617
|
||||||
:1014800096B084460C460246199D18980390490070
|
:101480009E19FE4BF6185B109E422BD36E00039FF5
|
||||||
:1014900068006300490840080193002A01D0012632
|
:101490000296002F00D00127F719F84EF84BBE191D
|
||||||
:1014A00000E000269E19FE4BF6185B109E422BD3DF
|
:1014A0009E421FD3039E0346F64F334309D03B466B
|
||||||
:1014B0006E00039F0296002F00D00127F719F84E07
|
:1014B0009C4201D1002A04D0019B002A05D00126BC
|
||||||
:1014C000F84BBE199E421FD3039E0346F64F33438B
|
:1014C00004E0002039461BB0F0BD00269E19EE4B0B
|
||||||
:1014D00009D03B469C4201D1002A04D0019B002A3E
|
:1014D0009E4207D8039F029E002F00D00127F619D5
|
||||||
:1014E00005D0012604E0002039461BB0F0BD0026DF
|
:1014E0009E4207D92B4660462146189AFFF7DEFE3A
|
||||||
:1014F0009E19EE4B9E4207D8039F029E002F00D0FC
|
:1014F0001BB0F0BD0023002C29DAE44EB04226DAFE
|
||||||
:101500000127F6199E4207D92B4660462146189AB4
|
:10150000E34EB04201DB022321E0DE4EB0421EDB9F
|
||||||
:10151000FFF748FE1BB0F0BD0023002C29DAE44E93
|
:10151000E04E070DBE19142E09DD3427BF1B039EB4
|
||||||
:10152000B04226DAE34EB04201DB022321E0DE4E78
|
:10152000FE400196BE40039FBE420BD00FE0039FDA
|
||||||
:10153000B0421EDBE04E070DBE19142E09DD342724
|
:10153000002F0CD11427BF1B0646FE400196BE406B
|
||||||
:10154000BF1B039EFE400196BE40039FBE420BD0D0
|
:10154000864204D1019BDE07F60F02239B1B0E4649
|
||||||
:101550000FE0039F002F0CD11427BF1B0646FE404F
|
:10155000164318D1002D16DA002C03D0022B01D02F
|
||||||
:101560000196BE40864204D1019BDE07F60F02239E
|
:10156000012B06D00220FFF7D1FEFFF795FE1BB03E
|
||||||
:101570009B1B0E46164318D1002D16DA002C03D003
|
:10157000F0BD0220FFF7CAFEFFF78EFE0122D20760
|
||||||
:10158000022B01D0012B06D00220FFF73BFEFFF714
|
:1015800051401BB0F0BD039E002E61D1BF4EB04252
|
||||||
:10159000FFFD1BB0F0BD0220FFF734FEFFF7F8FDA2
|
:1015900020D1C148844201D1002A08D0B9488142F3
|
||||||
:1015A0000122D20751401BB0F0BD039E002E61D135
|
:1015A00009DB002D10DB189829461BB0F0BD002088
|
||||||
:1015B000BF4EB04220D1C148844201D1002A08D098
|
:1015B000B4491BB0F0BD002D06DA01222946D2073E
|
||||||
:1015C000B948814209DB002D10DB189829461BB071
|
:1015C000189851401BB0F0BDB44979440868496887
|
||||||
:1015D000F0BD0020B4491BB0F0BD002D06DA012299
|
:1015D0001BB0F0BDAB4FB84225D1002D1FDA00295A
|
||||||
:1015E0002946D207189851401BB0F0BDB449794440
|
:1015E00004D0B14212D1002A09D018E0002A72D1E9
|
||||||
:1015F000086849681BB0F0BDAB4FB84225D1002D3B
|
:1015F000A649E20F0020D20711431BB0F0BD002026
|
||||||
:101600001FDA002904D0B14212D1002A09D018E013
|
:10160000E20F0146D20711431BB0F0BDB14206DA2A
|
||||||
:10161000002A72D1A649E20F0020D20711431BB065
|
:10161000234600203946FEF7A5FD1BB0F0BD10465D
|
||||||
:10162000F0BD0020E20F0146D20711431BB0F0BD10
|
:1016200021461BB0F0BDB14212DA0126B607B54221
|
||||||
:10163000B14206DA234600203946FEF793FD1BB07F
|
:1016300003D1234610461946FEE3994EB54207D121
|
||||||
:10164000F0BD104621461BB0F0BDB14212DA0126B2
|
:10164000261E05DB1046314600F004FC1BB0F0BD41
|
||||||
:10165000B607B54203D1234610461946FEE3994E1C
|
:1016500067007F081646002A40D100290AD08B4A2D
|
||||||
:10166000B54207D1261E05DB1046314600F014FCBA
|
:10166000914229D1002C0EDD002D1CDB00201146FB
|
||||||
:101670001BB0F0BD67007F081646002A40D1002944
|
:101670001BB0F0BD022B16D0002C14D0012B12D1C0
|
||||||
:101680000AD08B4A914229D1002C0EDD002D1CDBA3
|
:10168000002C14DB0FE0002C28DA002D09DB012BE5
|
||||||
:10169000002011461BB0F0BD022B16D0002C14D038
|
:1016900003D000207D491BB0F0BD002081491BB064
|
||||||
:1016A000012B12D1002C14DB0FE0002C28DA002DC6
|
:1016A000F0BD012B03D0002001461BB0F0BD00208F
|
||||||
:1016B00009DB012B03D000207D491BB0F0BD0020C9
|
:1016B0000121C9071BB0F0BD724A91420ED1002C26
|
||||||
:1016C00081491BB0F0BD012B03D0002001461BB0A7
|
:1016C00001DA002B17D0022B06D00020C043FEF712
|
||||||
:1016D000F0BD00200121C9071BB0F0BD724A914244
|
:1016D000C1FD1BB0F0BD90E20120F8E7E217521CFB
|
||||||
:1016E0000ED1002C01DA002B17D0022B06D00020DF
|
:1016E00094461A4307D000220892664C62465B1E5D
|
||||||
:1016F000C043FEF7AFFD1BB0F0BD90E20120F8E75C
|
:1016F0001A4307D009E00120FFF708FEFFF7DAFDE3
|
||||||
:10170000E217521C94461A4307D000220892664CF6
|
:101700001BB0F0BD0022644C0892674A90427DDD18
|
||||||
:1017100062465B1E1A4307D009E00120FFF772FD05
|
:10171000664B674A98421FDD914202DC002D05DBD3
|
||||||
:10172000FFF744FD1BB0F0BD0022644C0892674AED
|
:101720004DE05848814217DB002D48DD0220FFF7CD
|
||||||
:1017300090427DDD664B674A98421FDD914202DC94
|
:10173000EDFDFFF7C7FD05460E460022534B21463F
|
||||||
:10174000002D05DB4DE05848814217DB002D48DDB8
|
:101740000898FEF7E9FE084671004908C00FC00777
|
||||||
:101750000220FFF757FDFFF731FD05460E46002238
|
:10175000014328461BB0F0BD914215DA002D2EDA68
|
||||||
:10176000534B21460898FEF7D7FE084671004908FA
|
:101760000220FFF7D3FDFFF7ADFD05460E46002230
|
||||||
:10177000C00FC007014328461BB0F0BD914215DAE7
|
:10177000464B21460898FEF7CFFE72005208C80F6C
|
||||||
:10178000002D2EDA0220FFF73DFDFFF717FD05467D
|
:10178000C0070243114617E03E4B994223DD002D6E
|
||||||
:101790000E460022464B21460898FEF7BDFE720019
|
:1017900015DD0220FFF7BAFDFFF794FD05460E4662
|
||||||
:1017A0005208C80FC0070243114617E03E4B99424A
|
:1017A00000223A4B21460898FEF7B6FE0846710023
|
||||||
:1017B00023DD002D15DD0220FFF724FDFFF7FEFCE1
|
:1017B0004908C00FC007014328461BB0F0BD0220F6
|
||||||
:1017C00005460E4600223A4B21460898FEF7A4FE35
|
:1017C000FFF7A4FDFFF788FD49004908E20FD207A3
|
||||||
:1017D000084671004908C00FC007014328461BB0E6
|
:1017D00011431BB0F0BD002230463946FEF78EFEA5
|
||||||
:1017E000F0BD0220FFF70EFDFFF7F2FC49004908AB
|
:1017E000012205460E46D243FEF7FEFE314A324B39
|
||||||
:1017F000E20FD20711431BB0F0BD0022304639463C
|
:1017F000FEF78AFE2A463346FEF78EFE0022284B6D
|
||||||
:10180000FEF77CFE012205460E46D243FEF7ECFEB3
|
:10180000FEF782FE07462A46334600E064E0039175
|
||||||
:10181000314A324BFEF778FE2A463346FEF77CFE0D
|
:1018100010461946FEF780FE3A46039BFEF77CFE13
|
||||||
:101820000022284BFEF770FE07462A46334600E0AA
|
:101820000746032209915207244B28463146FEF70A
|
||||||
:1018300064E0039110461946FEF76EFE3A46039B9C
|
:1018300073FE07910C90224A204B38460999FEF717
|
||||||
:10184000FEF76AFE0746032209915207244B2846F9
|
:101840006BFE074601911F4A1F4B28463146FEF7A3
|
||||||
:101850003146FEF761FE07910C90224A204B384634
|
:1018500063FE3A46019BFEF751FE07460B460246E1
|
||||||
:101860000999FEF759FE074601911F4A1F4B28466A
|
:10186000099107990C98FEF7A5FD00250E4628461C
|
||||||
:101870003146FEF751FE3A46019BFEF73FFE074612
|
:10187000079B0C9AFEF742FE3A4627E0FFFF1F0047
|
||||||
:101880000B460246099107990C98FEF793FD002537
|
:10188000FFFF0F000000F03F0000E0FF0000F07FCE
|
||||||
:101890000E462846079B0C9AFEF730FE3A4627E094
|
:101890000000404301FCFFFF0000F0BFA20A00006F
|
||||||
:1018A000FFFF1F00FFFF0F000000F03F0000E0FF00
|
:1018A0000000E03F0000F0FF0000E0410000F043D6
|
||||||
:1018B0000000F07F0000404301FCFFFF0000F0BF8C
|
:1018B000FFFFEF3F555555555555D53F4715F73F58
|
||||||
:1018C000BE0A00000000E03F0000F0FF0000E04121
|
:1018C000FE822B6544DF5DF80BAE543E099BFEF7AC
|
||||||
:1018D0000000F043FFFFEF3F555555555555D53F97
|
:1018D0001BFE02460B4652E1012500202D05A942C0
|
||||||
:1018E0004715F73FFE822B6544DF5DF80BAE543E93
|
:1018E00007DA352230463946FEF77EFE06463420BA
|
||||||
:1018F000099BFEF709FE02460B4652E10125002036
|
:1018F000C0430A151218FE48101803900803FD494A
|
||||||
:101900002D05A94207DA352230463946FEF76CFE2E
|
:10190000000B01430F46FC49884201DC002003E044
|
||||||
:1019100006463420C0430A151218FE4810180390DA
|
:10191000FA49884202DA0120119005E00020119076
|
||||||
:101920000803FD49000B01430F46FC49884201DCD6
|
:101920000398401C7F1B039011980597C200F44850
|
||||||
:10193000002003E0FA49884202DA0120119005E014
|
:101930000F927844801843680268394630460D9308
|
||||||
:10194000002011900398401C7F1B0390119805976D
|
:101940000292FEF7DBFD07910C9030460D9B029A48
|
||||||
:10195000C200F4480F927844801843680268394600
|
:101950000599FEF72FFD02460B460020E549FEF7EC
|
||||||
:1019600030460D930292FEF7C9FD07910C90304668
|
:1019600001FC09910490079B0C9AFEF7D5FD12909B
|
||||||
:101970000D9B029A0599FEF71DFD02460B460020BD
|
:1019700000201090E3480D46784400680E90012145
|
||||||
:10198000E549FEF7EFFB09910490079B0C9AFEF7DF
|
:1019800078104907084311990D9B890440180121DB
|
||||||
:10199000C3FD129000201090E3480D467844006883
|
:10199000C90447183946029A0E98FEF7AFFD324641
|
||||||
:1019A0000E90012178104907084311990D9B890475
|
:1019A000059BFEF7B1FD02460B4629461098FEF74F
|
||||||
:1019B00040180121C90447183946029A0E98FEF7CB
|
:1019B000B3FD064602913B4629460E9A1098FEF763
|
||||||
:1019C0009DFD3246059BFEF79FFD02460B462946CC
|
:1019C000ABFD079B0C9AFEF79FFD3246029BFEF78C
|
||||||
:1019D0001098FEF7A1FD064602913B4629460E9A55
|
:1019D00095FD099B049AFEF79FFD0591129A0A90C6
|
||||||
:1019E0001098FEF799FD079B0C9AFEF78DFD324685
|
:1019E0002B4610461946FEF797FD06460246C648A6
|
||||||
:1019F000029BFEF783FD099B049AFEF78DFD05917E
|
:1019F0000F460B4606217844FFF7F8FB32463B467C
|
||||||
:101A0000129A0A902B4610461946FEF785FD0646A7
|
:101A00000091049010461946FEF786FD009B049A4B
|
||||||
:101A10000246C6480F460B4606217844FFF762FB94
|
:101A1000FEF782FD06460F462B461946129A10988D
|
||||||
:101A200032463B460091049010461946FEF774FD7D
|
:101A2000FEF7C8FC059B0A9AFEF776FD32463B4658
|
||||||
:101A3000009B049AFEF770FD06460F462B4619469A
|
:101A3000FEF7C0FC109A079104902B4610461946F9
|
||||||
:101A4000129A1098FEF7B6FC059B0A9AFEF764FD01
|
:101A4000FEF76AFDB14E0022334609910290FEF77F
|
||||||
:101A500032463B46FEF7AEFC109A079104902B46A7
|
:101A5000B1FC079B049AFEF7ADFC00200746024646
|
||||||
:101A600010461946FEF758FDB14E00223346099143
|
:101A600033460091FEF74AFD099B029AFEF746FDB8
|
||||||
:101A70000290FEF79FFC079B049AFEF79BFC002058
|
:101A7000079B049AFEF748FD06460D913A46294613
|
||||||
:101A80000746024633460091FEF738FD099B029A4D
|
:101A8000009B1098FEF748FD07910C902B463046BE
|
||||||
:101A9000FEF734FD079B049AFEF736FD06460D91CE
|
:101A9000129A0D99FEF740FD05460E463A46009B08
|
||||||
:101AA0003A462946009B1098FEF736FD07910C90A8
|
:101AA00005990A98FEF738FD33462A46FEF782FC70
|
||||||
:101AB0002B463046129A0D99FEF72EFD05460E462E
|
:101AB00002460B460746099107990C98FEF77AFCF7
|
||||||
:101AC0003A46009B05990A98FEF726FD33462A46BA
|
:101AC00000250E462846079B0C9AFEF717FD3A465E
|
||||||
:101AD000FEF770FC02460B460746099107990C98E1
|
:101AD000099BFEF719FD07460722099152078C4B17
|
||||||
:101AE000FEF768FC00250E462846079B0C9AFEF779
|
:101AE00031462846FEF718FD07910090894A884B39
|
||||||
:101AF00005FD3A46099BFEF707FD074607220991B7
|
:101AF00038460999FEF710FD07460191864A874B43
|
||||||
:101B000052078C4B31462846FEF706FD07910090A0
|
:101B000031462846FEF708FD3A46019BFEF752FC97
|
||||||
:101B1000894A884B38460999FEF7FEFC0746019131
|
:101B1000834B7B440F9A9B181A685B68FEF74AFC5C
|
||||||
:101B2000864A874B31462846FEF7F6FC3A46019B2B
|
:101B2000029009910398FEF795FB05910490099B9B
|
||||||
:101B3000FEF740FC834B7B440F9A9B181A685B6846
|
:101B3000029A07990098FEF73DFC7A4B7B440F9A76
|
||||||
:101B4000FEF738FC029009910398FEF783FB05919C
|
:101B40009B181A685B6817460393FEF733FC059BE6
|
||||||
:101B50000490099B029A07990098FEF72BFC7A4B98
|
:101B5000049AFEF72FFC0E462846059B049AFEF7D2
|
||||||
:101B60007B440F9A9B181A685B6817460393FEF72D
|
:101B6000CDFC3A46039BFEF7C9FC079B009AFEF7A3
|
||||||
:101B700021FC059B049AFEF71DFC0E462846059B9A
|
:101B7000C5FC099B029AFEF7C7FC02460B46199961
|
||||||
:101B8000049AFEF7BBFC3A46039BFEF7B7FC079BA3
|
:101B800000200C900F461898FEF7C6FC02910490B6
|
||||||
:101B9000009AFEF7B3FC099B029AFEF7B5FC0246D9
|
:101B90003B460C9A19991898FEF7B0FC2A46334632
|
||||||
:101BA0000B46199900200C900F461898FEF7B4FCCC
|
:101BA000FEF7BAFC029B049AFEF704FC09910E9022
|
||||||
:101BB000029104903B460C9A19991898FEF79EFCE6
|
:101BB0002A46334639460C98FEF7AEFC06460F46D9
|
||||||
:101BC0002A463346FEF7A8FC029B049AFEF7F2FB76
|
:101BC000099B0E9AFEF7F6FB574A0D46914220DB21
|
||||||
:101BD00009910E902A46334639460C98FEF79CFC34
|
:101BD0005242AA18024310D132463B46FEF78EFC11
|
||||||
:101BE00006460F46099B0E9AFEF7E4FB574A0D4640
|
:101BE00004900391514A524B09990E98FEF7E2FB7B
|
||||||
:101BF000914220DB5242AA18024310D132463B46A2
|
:101BF000039B049AFEF70EFD1ED20220FFF786FB20
|
||||||
:101C0000FEF77CFC04900391514A524B09990E98BF
|
:101C0000FFF760FB49004908E20FD20711431BB000
|
||||||
:101C1000FEF7D0FB039B049AFEF7FCFC1ED20220C9
|
:101C1000F0BD6A00474B52089A420DD3464AAA18B3
|
||||||
:101C2000FFF7F0FAFFF7CAFA49004908E20FD207B6
|
:101C2000024300D0CBE532463B46FEF767FC099BFA
|
||||||
:101C300011431BB0F0BD6A00474B52089A420DD3C6
|
:101C30000E9AFEF7EFFCF5D96800002340082C4906
|
||||||
:101C4000464AAA18024300D0CBE532463B46FEF78F
|
:101C40000393020D3D4B5218984223DD01200005FD
|
||||||
:101C500055FC099B0E9AFEF7DDFCF5D968000023C0
|
:101C5000521CD04042195000400D40183849794478
|
||||||
:101C600040082C490393020D3D4B5218984223DD46
|
:101C6000096813468C463749C1408B431203012152
|
||||||
:101C700001200005521CD04042195000400D401870
|
:101C7000120B090551181422101AC1400391002DAE
|
||||||
:101C800038497944096813468C463749C1408B432B
|
:101C800001DA48420390624630463946FEF736FC98
|
||||||
:101C900012030121120B090551181422101AC14018
|
:101C900006460F4632463B4609990E98FEF78AFBE8
|
||||||
:101CA0000391002D01DA48420390624630463946DE
|
:101CA00000252A46284B28460591FEF735FC07916A
|
||||||
:101CB000FEF724FC06460F4632463B4609990E982D
|
:101CB0000C90264A264B28460599FEF72DFC0091EC
|
||||||
:101CC000FEF778FB00252A46284B28460591FEF7AB
|
:101CC000029032463B4628460599FEF717FC099BD1
|
||||||
:101CD00023FC07910C90264A264B28460599FEF7CF
|
:101CD0000E9AFEF719FC1F4A1F4BFEF71DFC009BD6
|
||||||
:101CE0001BFC0091029032463B4628460599FEF7C0
|
:101CE000029AFEF767FB07460B460246099135E06C
|
||||||
:101CF00005FC099B0E9AFEF707FC1F4A1F4BFEF7D7
|
:101CF00001FCFFFF0000F03F8E9803007AB60B0056
|
||||||
:101D00000BFC009B029AFEF755FB07460B4602466A
|
:101D0000B2060000F40600001E06000000000840B5
|
||||||
:101D1000099135E001FCFFFF0000F03F8E980300C1
|
:101D100009C7EE3FFD033ADCF5015B14E02F3EBE40
|
||||||
:101D20007AB60B00CE060000100700003A0600004D
|
:101D2000F2040000B804000000009040FE822B6521
|
||||||
:101D30000000084009C7EE3FFD033ADCF5015B14E3
|
:101D30004715973C00CC904000346F3F0000E03FD7
|
||||||
:101D4000E02F3EBE0E050000D404000000009040CD
|
:101D40000E040000FFFF0F00432EE63F396CA80C85
|
||||||
:101D5000FE822B654715973C00CC904000346F3FC6
|
:101D5000615C20BEEF39FAFE422EE63F07990C98EF
|
||||||
:101D60000000E03F2A040000FFFF0F00432EE63F83
|
:101D6000FEF728FB05460E46079B0C9AFEF7C6FBBE
|
||||||
:101D7000396CA80C615C20BEEF39FAFE422EE63FBA
|
:101D70003A46099BFEF7C8FB09912A4633460E9066
|
||||||
:101D800007990C98FEF716FB05460E46079B0C9A22
|
:101D800010461946FEF7C8FB074602462F480B4689
|
||||||
:101D9000FEF7B4FB3A46099BFEF7B6FB09912A46CB
|
:101D9000059105217844FFF729FA3A46059BFEF79D
|
||||||
:101DA00033460E9010461946FEF7B6FB074602462C
|
:101DA000BBFB2A463346FEF7AFFB074601912846A8
|
||||||
:101DB0002F480B46059105217844FFF793F93A46E1
|
:101DB0003146099B0E9AFEF7AFFB099B0E9AFEF780
|
||||||
:101DC000059BFEF7A9FB2A463346FEF79DFB074617
|
:101DC000F9FA012304910C9000229B0738460199EF
|
||||||
:101DD000019128463146099B0E9AFEF79DFB099B0F
|
:101DD000FEF794FB05910E903A4628463146019B4A
|
||||||
:101DE0000E9AFEF7E7FA012304910C9000229B075C
|
:101DE000FEF79AFB059B0E9AFEF7BCF9049B0C9A32
|
||||||
:101DF00038460199FEF782FB05910E903A46284637
|
:101DF000FEF784FB2A463346FEF780FB0022144B95
|
||||||
:101E00003146019BFEF788FB059B0E9AFEF7AAF967
|
:101E0000FEF782FB064603980D46000541190915A9
|
||||||
:101E1000049B0C9AFEF772FB2A463346FEF76EFBD4
|
:101E1000002912DC30462946039AFEF7E5FBFFF75E
|
||||||
:101E20000022144BFEF770FB064603980D46000592
|
:101E2000CFF9042801D1FFF757FA30462946039A23
|
||||||
:101E300041190915002912DC30462946039AFEF79C
|
:101E3000FEF7DAFB064601E004E029180B463246BD
|
||||||
:101E4000D3FBFFF739F9042801D1FFF7C1F9304678
|
:101E400021460898FEF768FB1BB0F0BDB002000009
|
||||||
:101E50002946039AFEF7C8FB064601E004E029186C
|
:101E50000000F03FF8B506460C46FEF724FC051ED0
|
||||||
:101E60000B46324621460898FEF756FB1BB0F0BDE4
|
:101E60000F4600D00120014349000B484908411AA0
|
||||||
:101E7000CC0200000000F03F10B5044601E0FFF77F
|
:101E7000C90F0DD0002E01D0012100E000210C433C
|
||||||
:101E800079FA2078641C03490028F8D10A20FFF76A
|
:101E800061004908401AC00F02D10120FFF73EFA55
|
||||||
:101E900071FA10BD2C000020F8B506460C46FEF77E
|
:101E900028463946F8BD00000000F07F10B502204A
|
||||||
:101EA00002FC051E0F4600D00120014349000B48EB
|
:101EA00005490860054840690549084303494861F8
|
||||||
:101EB0004908411AC90F0DD0002E01D0012100E0C0
|
:101EB000FFF742FA10BD000000300240000002406F
|
||||||
:101EC00000210C4361004908401AC00F02D10120D3
|
:101EC0000350000001200C49087000200B490860F5
|
||||||
:101ED000FFF798F928463946F8BD00000000F07F6A
|
:101ED0000B48407B002809D000200A4908800A49A5
|
||||||
:101EE00010B50220064908600648406906490843C3
|
:101EE00008700A4908600A49086003E004488088CD
|
||||||
:101EF00004494861FFF734FA04A0FFF7BDFF10BDA5
|
:101EF0000449088070470000580000205C00002062
|
||||||
:101F0000003002400000024003500000454E5331B3
|
:101F000078000020600000206200002064000020B3
|
||||||
:101F1000202D20574156455F47454E455241544F6D
|
:101F1000680000200021C16300BF03E0C16100220E
|
||||||
:101F2000525F4452495645525F415F546573742075
|
:101F20000262491C4029F9DB70470000F8B50446FD
|
||||||
:101F30002D20245265766973696F6E3A20523030D5
|
:101F30000D460026002716A0FFF720F96420A060B8
|
||||||
:101F4000310A00000120034908700020024908609E
|
:101F40002020A061A0616420206160615020206099
|
||||||
:101F50007047000050000020540000200021C163A1
|
:101F50000420E063002002E0E0612562401C40288C
|
||||||
:101F600000BF03E0C16100220262491C4029F9DB85
|
:101F6000FADB1920C00160620020A062E06201205B
|
||||||
:101F700070470000F8B504460D460026002716A05D
|
:101F7000206300206063A06301206060002F04D014
|
||||||
:101F8000FFF77AFF6420A0602020A061A061642098
|
:101F80000BA0FFF7FBF8012600273046F8BD000044
|
||||||
:101F900020616061502020600420E063002002E0A6
|
:101F90000AE9A9B1E58AA8E599A841E6ADA3E5BC9F
|
||||||
:101FA000E0612562401C4028FADB1920C001606214
|
:101FA000A6E6B3A2E6B58BE8AF955C6E0000000034
|
||||||
:101FB0000020A062E0620120206300206063A06333
|
:101FB0000AE99499E8AFAF203A20E9A9B1E58AA8E7
|
||||||
:101FC00001206060002F04D00BA0FFF755FF012611
|
:101FC000E599A841E6B58BE8AF95E5A4B1E8B4A5DD
|
||||||
:101FD00000273046F8BD00000AE9A9B1E58AA8E566
|
:101FD0000A0000006400E80380006400320002068A
|
||||||
:101FE00099A841E6ADA3E5BCA6E6B3A2E6B58BE8A9
|
:101FE0000201000000000000000000000000F03FBF
|
||||||
:101FF000AF955C6E000000000AE99499E8AFAF204D
|
:101FF000000000000000F83F0000000000000000AA
|
||||||
:102000003A20E9A9B1E58AA8E599A841E6B58BE8A7
|
:102000000000004003B8E23F0000000000000000B4
|
||||||
:10201000AF95E5A4B1E8B4A50A0000006400E803A8
|
:1020100006D0CF43EBFD4C3E033333333333E33F42
|
||||||
:102020008000640032000000000000000000F03F6B
|
:10202000FFAB6FDBB66DDB3F4D268F515555D53F6E
|
||||||
:10203000000000000000F83F000000000000000069
|
:1020300001411DA96074D13F65DBC9934A86CD3F3C
|
||||||
:102040000000004003B8E23F000000000000000074
|
:10204000EF4E454A287ECA3F3E5555555555C53F2A
|
||||||
:1020500006D0CF43EBFD4C3E033333333333E33F02
|
:1020500093BDBE166CC166BF2CDE25AF6A56113F1C
|
||||||
:10206000FFAB6FDBB66DDB3F4D268F515555D53F2E
|
:10206000F16BD2C541BDBBBED0A4BE726937663E1E
|
||||||
:1020700001411DA96074D13F65DBC9934A86CD3FFC
|
:102070000000000000000000982000100000002078
|
||||||
:10208000EF4E454A287ECA3F3E5555555555C53FEA
|
:1020800078000000EC1200101021001078000020F1
|
||||||
:1020900093BDBE166CC166BF2CDE25AF6A56113FDC
|
:1020900010020000FC12001000000000020001000D
|
||||||
:1020A000F16BD2C541BDBBBED0A4BE726937663EDE
|
:1020A00000000000B0AD01000000000004000020AE
|
||||||
:1020B0000000000000000000D820001000000020F8
|
:1020B0000003000100000000050000000000000017
|
||||||
:1020C00064000000E41100103C21001064000020B6
|
:1020C000000300000000000000000000000000000D
|
||||||
:1020D0000C020000F41100100000000002000100DA
|
:1020D0000000000000000000000000000000000000
|
||||||
:1020E0000000000000C20100000000000400002009
|
:1020E00000000000000000000000000000000000F0
|
||||||
:1020F00005000000000000000003000000000000D8
|
:1020F00000000000000000000000000000000000E0
|
||||||
:1021000000000000000000000000000000000000CF
|
:102100000000000000E1F50500E1F5050000000019
|
||||||
:1021100000000000000000000000000000000000BF
|
|
||||||
:1021200000000000000000000000000000000000AF
|
|
||||||
:0C21300000E1F50500E1F50500000000ED
|
|
||||||
:04000005100000C126
|
:04000005100000C126
|
||||||
:00000001FF
|
:00000001FF
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@
|
||||||
<title>Static Call Graph - [.\Objects\ENS001_BASIC_PRJ.axf]</title></head>
|
<title>Static Call Graph - [.\Objects\ENS001_BASIC_PRJ.axf]</title></head>
|
||||||
<body><HR>
|
<body><HR>
|
||||||
<H1>Static Call Graph for image .\Objects\ENS001_BASIC_PRJ.axf</H1><HR>
|
<H1>Static Call Graph for image .\Objects\ENS001_BASIC_PRJ.axf</H1><HR>
|
||||||
<BR><P>#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Wed Aug 20 11:01:24 2025
|
<BR><P>#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Fri Aug 29 11:28:15 2025
|
||||||
<BR><P>
|
<BR><P>
|
||||||
<H3>Maximum Stack Usage = 360 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
|
<H3>Maximum Stack Usage = 368 bytes + Unknown(Cycles, Untraceable Function Pointers)</H3><H3>
|
||||||
Call chain for Maximum Stack Depth:</H3>
|
Call chain for Maximum Stack Depth:</H3>
|
||||||
main ⇒ ClockInit ⇒ ClockInitSet ⇒ pow ⇒ __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
|
main ⇒ ClockInit ⇒ ClockInitSet ⇒ pow ⇒ __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
|
||||||
<P>
|
<P>
|
||||||
|
|
@ -56,7 +56,7 @@ Function Pointers
|
||||||
<LI><a href="#[13]">UART1_Handler</a> from ens1_uart.o(i.UART1_Handler) referenced from startup_cmsdk_cm0.o(RESET)
|
<LI><a href="#[13]">UART1_Handler</a> from ens1_uart.o(i.UART1_Handler) referenced from startup_cmsdk_cm0.o(RESET)
|
||||||
<LI><a href="#[1f]">WG_DRV_Handler</a> from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
|
<LI><a href="#[1f]">WG_DRV_Handler</a> from startup_cmsdk_cm0.o(.text) referenced from startup_cmsdk_cm0.o(RESET)
|
||||||
<LI><a href="#[22]">__main</a> from entry.o(.ARM.Collect$$$$00000000) referenced from startup_cmsdk_cm0.o(.text)
|
<LI><a href="#[22]">__main</a> from entry.o(.ARM.Collect$$$$00000000) referenced from startup_cmsdk_cm0.o(.text)
|
||||||
<LI><a href="#[23]">fputc</a> from retarget.o(i.fputc) referenced from printf1.o(i.__0printf$1)
|
<LI><a href="#[23]">fputc</a> from retarget.o(i.fputc) referenced from printfb.o(i.__0printf$bare)
|
||||||
<LI><a href="#[20]">main</a> from mian.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)
|
<LI><a href="#[20]">main</a> from mian.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)
|
||||||
</UL>
|
</UL>
|
||||||
<P>
|
<P>
|
||||||
|
|
@ -196,12 +196,12 @@ Global Symbols
|
||||||
</UL>
|
</UL>
|
||||||
<P><STRONG><a name="[77]"></a>__aeabi_uidiv</STRONG> (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)
|
<P><STRONG><a name="[77]"></a>__aeabi_uidiv</STRONG> (Thumb, 0 bytes, Stack size 12 bytes, uidiv.o(.text), UNUSED)
|
||||||
|
|
||||||
<P><STRONG><a name="[50]"></a>__aeabi_uidivmod</STRONG> (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text))
|
<P><STRONG><a name="[41]"></a>__aeabi_uidivmod</STRONG> (Thumb, 44 bytes, Stack size 12 bytes, uidiv.o(.text))
|
||||||
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = __aeabi_uidivmod
|
<BR><BR>[Stack]<UL><LI>Max Depth = 12<LI>Call Chain = __aeabi_uidivmod
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Called By]<UL><LI><a href="#[5b]">>></a> UART_Init
|
<BR>[Called By]<UL><LI><a href="#[5b]">>></a> UART_Init
|
||||||
<LI><a href="#[4c]">>></a> TIMER0_Init
|
<LI><a href="#[4d]">>></a> TIMER0_Init
|
||||||
<LI><a href="#[5f]">>></a> _printf_core
|
<LI><a href="#[3f]">>></a> EMS_Process_Ramp
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[3d]"></a>__aeabi_memcpy</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text))
|
<P><STRONG><a name="[3d]"></a>__aeabi_memcpy</STRONG> (Thumb, 36 bytes, Stack size 0 bytes, memcpya.o(.text))
|
||||||
|
|
@ -399,7 +399,7 @@ Global Symbols
|
||||||
<P><STRONG><a name="[51]"></a>CMSDK_timer_Init</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, ens1_timer.o(i.CMSDK_timer_Init))
|
<P><STRONG><a name="[51]"></a>CMSDK_timer_Init</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, ens1_timer.o(i.CMSDK_timer_Init))
|
||||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = CMSDK_timer_Init
|
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = CMSDK_timer_Init
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Called By]<UL><LI><a href="#[4c]">>></a> TIMER0_Init
|
<BR>[Called By]<UL><LI><a href="#[4d]">>></a> TIMER0_Init
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[39]"></a>ClockInit</STRONG> (Thumb, 14 bytes, Stack size 8 bytes, ens1_clock.o(i.ClockInit))
|
<P><STRONG><a name="[39]"></a>ClockInit</STRONG> (Thumb, 14 bytes, Stack size 8 bytes, ens1_clock.o(i.ClockInit))
|
||||||
|
|
@ -430,47 +430,54 @@ Global Symbols
|
||||||
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[3e]"></a>EMS_Process</STRONG> (Thumb, 86 bytes, Stack size 8 bytes, ens1_wavegen.o(i.EMS_Process))
|
<P><STRONG><a name="[3e]"></a>EMS_Process</STRONG> (Thumb, 92 bytes, Stack size 8 bytes, ens1_wavegen.o(i.EMS_Process))
|
||||||
<BR><BR>[Stack]<UL><LI>Max Depth = 60<LI>Call Chain = EMS_Process ⇒ wavegen_driverA_sine_test ⇒ puts ⇒ fputc ⇒ UartPutc
|
<BR><BR>[Stack]<UL><LI>Max Depth = 44<LI>Call Chain = EMS_Process ⇒ EMS_Process_Ramp ⇒ __aeabi_uidivmod
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Calls]<UL><LI><a href="#[3f]">>></a> wavegen_driverA_sine_test
|
<BR>[Calls]<UL><LI><a href="#[40]">>></a> wavegen_driverA_sine_test
|
||||||
|
<LI><a href="#[3f]">>></a> EMS_Process_Ramp
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[40]"></a>EMS_Start</STRONG> (Thumb, 14 bytes, Stack size 8 bytes, ens1_wavegen.o(i.EMS_Start))
|
<P><STRONG><a name="[3f]"></a>EMS_Process_Ramp</STRONG> (Thumb, 278 bytes, Stack size 24 bytes, ens1_wavegen.o(i.EMS_Process_Ramp))
|
||||||
<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = EMS_Start ⇒ __2printf
|
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = EMS_Process_Ramp ⇒ __aeabi_uidivmod
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Calls]<UL><LI><a href="#[42]">>></a> __2printf
|
<BR>[Calls]<UL><LI><a href="#[41]">>></a> __aeabi_uidivmod
|
||||||
<LI><a href="#[41]">>></a> wavegen_Start
|
</UL>
|
||||||
|
<BR>[Called By]<UL><LI><a href="#[3e]">>></a> EMS_Process
|
||||||
|
</UL>
|
||||||
|
|
||||||
|
<P><STRONG><a name="[42]"></a>EMS_Start</STRONG> (Thumb, 8 bytes, Stack size 4 bytes, ens1_wavegen.o(i.EMS_Start))
|
||||||
|
<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = EMS_Start
|
||||||
|
</UL>
|
||||||
|
<BR>[Calls]<UL><LI><a href="#[43]">>></a> wavegen_Start
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[43]"></a>EMS_Stop</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, ens1_wavegen.o(i.EMS_Stop))
|
<P><STRONG><a name="[44]"></a>EMS_Stop</STRONG> (Thumb, 36 bytes, Stack size 4 bytes, ens1_wavegen.o(i.EMS_Stop))
|
||||||
<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = EMS_Stop ⇒ __2printf
|
<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = EMS_Stop
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Calls]<UL><LI><a href="#[42]">>></a> __2printf
|
<BR>[Calls]<UL><LI><a href="#[45]">>></a> wavegen_Stop
|
||||||
<LI><a href="#[44]">>></a> wavegen_Stop
|
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[46]"></a>GPIO_AltFunction</STRONG> (Thumb, 86 bytes, Stack size 8 bytes, ens1_gpio.o(i.GPIO_AltFunction))
|
<P><STRONG><a name="[47]"></a>GPIO_AltFunction</STRONG> (Thumb, 86 bytes, Stack size 8 bytes, ens1_gpio.o(i.GPIO_AltFunction))
|
||||||
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = GPIO_AltFunction
|
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = GPIO_AltFunction
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Called By]<UL><LI><a href="#[5b]">>></a> UART_Init
|
<BR>[Called By]<UL><LI><a href="#[5b]">>></a> UART_Init
|
||||||
<LI><a href="#[45]">>></a> GPIO_IO_Init
|
<LI><a href="#[46]">>></a> GPIO_IO_Init
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[48]"></a>GPIO_GetOutputValue</STRONG> (Thumb, 18 bytes, Stack size 0 bytes, ens1_gpio.o(i.GPIO_GetOutputValue))
|
<P><STRONG><a name="[49]"></a>GPIO_GetOutputValue</STRONG> (Thumb, 18 bytes, Stack size 0 bytes, ens1_gpio.o(i.GPIO_GetOutputValue))
|
||||||
<BR><BR>[Called By]<UL><LI><a href="#[47]">>></a> GPIO_Overturn
|
<BR><BR>[Called By]<UL><LI><a href="#[48]">>></a> GPIO_Overturn
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[45]"></a>GPIO_IO_Init</STRONG> (Thumb, 342 bytes, Stack size 36 bytes, ens1_gpio.o(i.GPIO_IO_Init))
|
<P><STRONG><a name="[46]"></a>GPIO_IO_Init</STRONG> (Thumb, 342 bytes, Stack size 36 bytes, ens1_gpio.o(i.GPIO_IO_Init))
|
||||||
<BR><BR>[Stack]<UL><LI>Max Depth = 44<LI>Call Chain = GPIO_IO_Init ⇒ GPIO_AltFunction
|
<BR><BR>[Stack]<UL><LI>Max Depth = 44<LI>Call Chain = GPIO_IO_Init ⇒ GPIO_AltFunction
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Calls]<UL><LI><a href="#[46]">>></a> GPIO_AltFunction
|
<BR>[Calls]<UL><LI><a href="#[47]">>></a> GPIO_AltFunction
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
||||||
</UL>
|
</UL>
|
||||||
|
|
@ -479,31 +486,31 @@ Global Symbols
|
||||||
<BR><BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
<BR><BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[47]"></a>GPIO_Overturn</STRONG> (Thumb, 40 bytes, Stack size 4 bytes, ens1_gpio.o(i.GPIO_Overturn))
|
<P><STRONG><a name="[48]"></a>GPIO_Overturn</STRONG> (Thumb, 40 bytes, Stack size 4 bytes, ens1_gpio.o(i.GPIO_Overturn))
|
||||||
<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = GPIO_Overturn
|
<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = GPIO_Overturn
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Calls]<UL><LI><a href="#[4a]">>></a> GPIO_SetOutput
|
<BR>[Calls]<UL><LI><a href="#[4b]">>></a> GPIO_SetOutput
|
||||||
<LI><a href="#[49]">>></a> GPIO_ResetOutput
|
<LI><a href="#[4a]">>></a> GPIO_ResetOutput
|
||||||
<LI><a href="#[48]">>></a> GPIO_GetOutputValue
|
<LI><a href="#[49]">>></a> GPIO_GetOutputValue
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[49]"></a>GPIO_ResetOutput</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, ens1_gpio.o(i.GPIO_ResetOutput))
|
<P><STRONG><a name="[4a]"></a>GPIO_ResetOutput</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, ens1_gpio.o(i.GPIO_ResetOutput))
|
||||||
<BR><BR>[Called By]<UL><LI><a href="#[47]">>></a> GPIO_Overturn
|
<BR><BR>[Called By]<UL><LI><a href="#[48]">>></a> GPIO_Overturn
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[4a]"></a>GPIO_SetOutput</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, ens1_gpio.o(i.GPIO_SetOutput))
|
<P><STRONG><a name="[4b]"></a>GPIO_SetOutput</STRONG> (Thumb, 16 bytes, Stack size 0 bytes, ens1_gpio.o(i.GPIO_SetOutput))
|
||||||
<BR><BR>[Called By]<UL><LI><a href="#[47]">>></a> GPIO_Overturn
|
<BR><BR>[Called By]<UL><LI><a href="#[48]">>></a> GPIO_Overturn
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[67]"></a>MTP_init</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, ens1_mtp.o(i.MTP_init))
|
<P><STRONG><a name="[67]"></a>MTP_init</STRONG> (Thumb, 4 bytes, Stack size 0 bytes, ens1_mtp.o(i.MTP_init))
|
||||||
<BR><BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
<BR><BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[4d]"></a>PCLK_Enable</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, ens1_clock.o(i.PCLK_Enable))
|
<P><STRONG><a name="[4e]"></a>PCLK_Enable</STRONG> (Thumb, 20 bytes, Stack size 0 bytes, ens1_clock.o(i.PCLK_Enable))
|
||||||
<BR><BR>[Called By]<UL><LI><a href="#[5b]">>></a> UART_Init
|
<BR><BR>[Called By]<UL><LI><a href="#[5b]">>></a> UART_Init
|
||||||
<LI><a href="#[4c]">>></a> TIMER0_Init
|
<LI><a href="#[4d]">>></a> TIMER0_Init
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[21]"></a>SystemInit</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, system_cmsdk_cm0.o(i.SystemInit))
|
<P><STRONG><a name="[21]"></a>SystemInit</STRONG> (Thumb, 8 bytes, Stack size 0 bytes, system_cmsdk_cm0.o(i.SystemInit))
|
||||||
|
|
@ -512,20 +519,19 @@ Global Symbols
|
||||||
<P><STRONG><a name="[1b]"></a>TIMER0_Handler</STRONG> (Thumb, 24 bytes, Stack size 4 bytes, ens1_timer.o(i.TIMER0_Handler))
|
<P><STRONG><a name="[1b]"></a>TIMER0_Handler</STRONG> (Thumb, 24 bytes, Stack size 4 bytes, ens1_timer.o(i.TIMER0_Handler))
|
||||||
<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = TIMER0_Handler
|
<BR><BR>[Stack]<UL><LI>Max Depth = 4<LI>Call Chain = TIMER0_Handler
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Calls]<UL><LI><a href="#[4b]">>></a> Time_Manager_Process
|
<BR>[Calls]<UL><LI><a href="#[4c]">>></a> Time_Manager_Process
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Address Reference Count : 1]<UL><LI> startup_cmsdk_cm0.o(RESET)
|
<BR>[Address Reference Count : 1]<UL><LI> startup_cmsdk_cm0.o(RESET)
|
||||||
</UL>
|
</UL>
|
||||||
<P><STRONG><a name="[4c]"></a>TIMER0_Init</STRONG> (Thumb, 72 bytes, Stack size 16 bytes, ens1_timer.o(i.TIMER0_Init))
|
<P><STRONG><a name="[4d]"></a>TIMER0_Init</STRONG> (Thumb, 56 bytes, Stack size 16 bytes, ens1_timer.o(i.TIMER0_Init))
|
||||||
<BR><BR>[Stack]<UL><LI>Max Depth = 40<LI>Call Chain = TIMER0_Init ⇒ __2printf
|
<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = TIMER0_Init ⇒ __aeabi_uidivmod
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Calls]<UL><LI><a href="#[51]">>></a> CMSDK_timer_Init
|
<BR>[Calls]<UL><LI><a href="#[51]">>></a> CMSDK_timer_Init
|
||||||
<LI><a href="#[52]">>></a> NVIC_EnableIRQ
|
<LI><a href="#[52]">>></a> NVIC_EnableIRQ
|
||||||
<LI><a href="#[4e]">>></a> NVIC_DisableIRQ
|
<LI><a href="#[4f]">>></a> NVIC_DisableIRQ
|
||||||
<LI><a href="#[4f]">>></a> NVIC_ClearPendingIRQ
|
<LI><a href="#[50]">>></a> NVIC_ClearPendingIRQ
|
||||||
<LI><a href="#[4d]">>></a> PCLK_Enable
|
<LI><a href="#[4e]">>></a> PCLK_Enable
|
||||||
<LI><a href="#[42]">>></a> __2printf
|
<LI><a href="#[41]">>></a> __aeabi_uidivmod
|
||||||
<LI><a href="#[50]">>></a> __aeabi_uidivmod
|
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
||||||
</UL>
|
</UL>
|
||||||
|
|
@ -546,7 +552,7 @@ Global Symbols
|
||||||
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[4b]"></a>Time_Manager_Process</STRONG> (Thumb, 174 bytes, Stack size 0 bytes, ens1_timer.o(i.Time_Manager_Process))
|
<P><STRONG><a name="[4c]"></a>Time_Manager_Process</STRONG> (Thumb, 174 bytes, Stack size 0 bytes, ens1_timer.o(i.Time_Manager_Process))
|
||||||
<BR><BR>[Called By]<UL><LI><a href="#[1b]">>></a> TIMER0_Handler
|
<BR><BR>[Called By]<UL><LI><a href="#[1b]">>></a> TIMER0_Handler
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
|
|
@ -587,12 +593,12 @@ Global Symbols
|
||||||
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[5b]"></a>UART_Init</STRONG> (Thumb, 164 bytes, Stack size 24 bytes, ens1_uart.o(i.UART_Init))
|
<P><STRONG><a name="[5b]"></a>UART_Init</STRONG> (Thumb, 248 bytes, Stack size 24 bytes, ens1_uart.o(i.UART_Init))
|
||||||
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = UART_Init ⇒ __aeabi_uidivmod
|
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = UART_Init ⇒ __aeabi_uidivmod
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Calls]<UL><LI><a href="#[4d]">>></a> PCLK_Enable
|
<BR>[Calls]<UL><LI><a href="#[4e]">>></a> PCLK_Enable
|
||||||
<LI><a href="#[46]">>></a> GPIO_AltFunction
|
<LI><a href="#[47]">>></a> GPIO_AltFunction
|
||||||
<LI><a href="#[50]">>></a> __aeabi_uidivmod
|
<LI><a href="#[41]">>></a> __aeabi_uidivmod
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
||||||
</UL>
|
</UL>
|
||||||
|
|
@ -612,18 +618,16 @@ Global Symbols
|
||||||
<BR><BR>[Called By]<UL><LI><a href="#[57]">>></a> UartPutc
|
<BR><BR>[Called By]<UL><LI><a href="#[57]">>></a> UartPutc
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[5e]"></a>__0printf$1</STRONG> (Thumb, 24 bytes, Stack size 24 bytes, printf1.o(i.__0printf$1), UNUSED)
|
<P><STRONG><a name="[5e]"></a>__0printf$bare</STRONG> (Thumb, 12 bytes, Stack size 8 bytes, printfb.o(i.__0printf$bare), UNUSED)
|
||||||
<BR><BR>[Calls]<UL><LI><a href="#[5f]">>></a> _printf_core
|
<BR><BR>[Calls]<UL><LI><a href="#[5f]">>></a> _printf_core
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[83]"></a>__1printf$1</STRONG> (Thumb, 0 bytes, Stack size 24 bytes, printf1.o(i.__0printf$1), UNUSED)
|
<P><STRONG><a name="[83]"></a>__1printf$bare</STRONG> (Thumb, 0 bytes, Stack size 8 bytes, printfb.o(i.__0printf$bare), UNUSED)
|
||||||
|
|
||||||
<P><STRONG><a name="[42]"></a>__2printf</STRONG> (Thumb, 0 bytes, Stack size 24 bytes, printf1.o(i.__0printf$1))
|
<P><STRONG><a name="[70]"></a>__2printf</STRONG> (Thumb, 0 bytes, Stack size 8 bytes, printfb.o(i.__0printf$bare))
|
||||||
<BR><BR>[Stack]<UL><LI>Max Depth = 24<LI>Call Chain = __2printf
|
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = __2printf
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Called By]<UL><LI><a href="#[4c]">>></a> TIMER0_Init
|
<BR>[Called By]<UL><LI><a href="#[40]">>></a> wavegen_driverA_sine_test
|
||||||
<LI><a href="#[43]">>></a> EMS_Stop
|
|
||||||
<LI><a href="#[40]">>></a> EMS_Start
|
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[30]"></a>__ARM_clz</STRONG> (Thumb, 46 bytes, Stack size 0 bytes, depilogue.o(i.__ARM_clz))
|
<P><STRONG><a name="[30]"></a>__ARM_clz</STRONG> (Thumb, 46 bytes, Stack size 0 bytes, depilogue.o(i.__ARM_clz))
|
||||||
|
|
@ -694,7 +698,7 @@ Global Symbols
|
||||||
<LI><a href="#[3b]">>></a> pow
|
<LI><a href="#[3b]">>></a> pow
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[70]"></a>boost_voltage_select_26V</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, ens1_boost.o(i.boost_voltage_select_26V))
|
<P><STRONG><a name="[6f]"></a>boost_voltage_select_55V</STRONG> (Thumb, 12 bytes, Stack size 0 bytes, ens1_boost.o(i.boost_voltage_select_55V))
|
||||||
<BR><BR>[Called By]<UL><LI><a href="#[69]">>></a> wavegen_Init
|
<BR><BR>[Called By]<UL><LI><a href="#[69]">>></a> wavegen_Init
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
|
|
@ -703,25 +707,23 @@ Global Symbols
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Calls]<UL><LI><a href="#[57]">>></a> UartPutc
|
<BR>[Calls]<UL><LI><a href="#[57]">>></a> UartPutc
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Called By]<UL><LI><a href="#[6f]">>></a> puts
|
<BR>[Address Reference Count : 1]<UL><LI> printfb.o(i.__0printf$bare)
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Address Reference Count : 1]<UL><LI> printf1.o(i.__0printf$1)
|
<P><STRONG><a name="[20]"></a>main</STRONG> (Thumb, 222 bytes, Stack size 32 bytes, mian.o(i.main))
|
||||||
</UL>
|
<BR><BR>[Stack]<UL><LI>Max Depth = 368<LI>Call Chain = main ⇒ ClockInit ⇒ ClockInitSet ⇒ pow ⇒ __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
|
||||||
<P><STRONG><a name="[20]"></a>main</STRONG> (Thumb, 220 bytes, Stack size 24 bytes, mian.o(i.main))
|
|
||||||
<BR><BR>[Stack]<UL><LI>Max Depth = 360<LI>Call Chain = main ⇒ ClockInit ⇒ ClockInitSet ⇒ pow ⇒ __kernel_poly ⇒ __aeabi_dmul ⇒ _double_epilogue ⇒ _double_round
|
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Calls]<UL><LI><a href="#[69]">>></a> wavegen_Init
|
<BR>[Calls]<UL><LI><a href="#[69]">>></a> wavegen_Init
|
||||||
<LI><a href="#[5b]">>></a> UART_Init
|
<LI><a href="#[5b]">>></a> UART_Init
|
||||||
<LI><a href="#[58]">>></a> UART_ITConfig
|
<LI><a href="#[58]">>></a> UART_ITConfig
|
||||||
<LI><a href="#[53]">>></a> Time_Manager_Init
|
<LI><a href="#[53]">>></a> Time_Manager_Init
|
||||||
<LI><a href="#[6a]">>></a> Time_Manager_GetFlags
|
<LI><a href="#[6a]">>></a> Time_Manager_GetFlags
|
||||||
<LI><a href="#[4c]">>></a> TIMER0_Init
|
<LI><a href="#[4d]">>></a> TIMER0_Init
|
||||||
<LI><a href="#[67]">>></a> MTP_init
|
<LI><a href="#[67]">>></a> MTP_init
|
||||||
<LI><a href="#[47]">>></a> GPIO_Overturn
|
<LI><a href="#[48]">>></a> GPIO_Overturn
|
||||||
<LI><a href="#[68]">>></a> GPIO_Output
|
<LI><a href="#[68]">>></a> GPIO_Output
|
||||||
<LI><a href="#[45]">>></a> GPIO_IO_Init
|
<LI><a href="#[46]">>></a> GPIO_IO_Init
|
||||||
<LI><a href="#[43]">>></a> EMS_Stop
|
<LI><a href="#[44]">>></a> EMS_Stop
|
||||||
<LI><a href="#[40]">>></a> EMS_Start
|
<LI><a href="#[42]">>></a> EMS_Start
|
||||||
<LI><a href="#[3e]">>></a> EMS_Process
|
<LI><a href="#[3e]">>></a> EMS_Process
|
||||||
<LI><a href="#[3c]">>></a> EMS_Configure
|
<LI><a href="#[3c]">>></a> EMS_Configure
|
||||||
<LI><a href="#[39]">>></a> ClockInit
|
<LI><a href="#[39]">>></a> ClockInit
|
||||||
|
|
@ -752,15 +754,6 @@ Global Symbols
|
||||||
<BR>[Called By]<UL><LI><a href="#[3a]">>></a> ClockInitSet
|
<BR>[Called By]<UL><LI><a href="#[3a]">>></a> ClockInitSet
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[6f]"></a>puts</STRONG> (Thumb, 28 bytes, Stack size 8 bytes, puts.o(i.puts))
|
|
||||||
<BR><BR>[Stack]<UL><LI>Max Depth = 28<LI>Call Chain = puts ⇒ fputc ⇒ UartPutc
|
|
||||||
</UL>
|
|
||||||
<BR>[Calls]<UL><LI><a href="#[23]">>></a> fputc
|
|
||||||
</UL>
|
|
||||||
<BR>[Called By]<UL><LI><a href="#[69]">>></a> wavegen_Init
|
|
||||||
<LI><a href="#[3f]">>></a> wavegen_driverA_sine_test
|
|
||||||
</UL>
|
|
||||||
|
|
||||||
<P><STRONG><a name="[6c]"></a>sqrt</STRONG> (Thumb, 66 bytes, Stack size 24 bytes, sqrt.o(i.sqrt))
|
<P><STRONG><a name="[6c]"></a>sqrt</STRONG> (Thumb, 66 bytes, Stack size 24 bytes, sqrt.o(i.sqrt))
|
||||||
<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = sqrt ⇒ _dsqrt ⇒ _double_round
|
<BR><BR>[Stack]<UL><LI>Max Depth = 64<LI>Call Chain = sqrt ⇒ _dsqrt ⇒ _double_round
|
||||||
</UL>
|
</UL>
|
||||||
|
|
@ -770,27 +763,26 @@ Global Symbols
|
||||||
<BR>[Called By]<UL><LI><a href="#[3b]">>></a> pow
|
<BR>[Called By]<UL><LI><a href="#[3b]">>></a> pow
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[69]"></a>wavegen_Init</STRONG> (Thumb, 32 bytes, Stack size 8 bytes, ens1_wavegen.o(i.wavegen_Init))
|
<P><STRONG><a name="[69]"></a>wavegen_Init</STRONG> (Thumb, 26 bytes, Stack size 8 bytes, ens1_wavegen.o(i.wavegen_Init))
|
||||||
<BR><BR>[Stack]<UL><LI>Max Depth = 36<LI>Call Chain = wavegen_Init ⇒ puts ⇒ fputc ⇒ UartPutc
|
<BR><BR>[Stack]<UL><LI>Max Depth = 8<LI>Call Chain = wavegen_Init
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Calls]<UL><LI><a href="#[70]">>></a> boost_voltage_select_26V
|
<BR>[Calls]<UL><LI><a href="#[6f]">>></a> boost_voltage_select_55V
|
||||||
<LI><a href="#[6f]">>></a> puts
|
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
<BR>[Called By]<UL><LI><a href="#[20]">>></a> main
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[41]"></a>wavegen_Start</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, ens1_wavegen.o(i.wavegen_Start))
|
<P><STRONG><a name="[43]"></a>wavegen_Start</STRONG> (Thumb, 50 bytes, Stack size 0 bytes, ens1_wavegen.o(i.wavegen_Start))
|
||||||
<BR><BR>[Called By]<UL><LI><a href="#[40]">>></a> EMS_Start
|
<BR><BR>[Called By]<UL><LI><a href="#[42]">>></a> EMS_Start
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[44]"></a>wavegen_Stop</STRONG> (Thumb, 22 bytes, Stack size 0 bytes, ens1_wavegen.o(i.wavegen_Stop))
|
<P><STRONG><a name="[45]"></a>wavegen_Stop</STRONG> (Thumb, 22 bytes, Stack size 0 bytes, ens1_wavegen.o(i.wavegen_Stop))
|
||||||
<BR><BR>[Called By]<UL><LI><a href="#[43]">>></a> EMS_Stop
|
<BR><BR>[Called By]<UL><LI><a href="#[44]">>></a> EMS_Stop
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[3f]"></a>wavegen_driverA_sine_test</STRONG> (Thumb, 98 bytes, Stack size 24 bytes, ens1_wavegen.o(i.wavegen_driverA_sine_test))
|
<P><STRONG><a name="[40]"></a>wavegen_driverA_sine_test</STRONG> (Thumb, 98 bytes, Stack size 24 bytes, ens1_wavegen.o(i.wavegen_driverA_sine_test))
|
||||||
<BR><BR>[Stack]<UL><LI>Max Depth = 52<LI>Call Chain = wavegen_driverA_sine_test ⇒ puts ⇒ fputc ⇒ UartPutc
|
<BR><BR>[Stack]<UL><LI>Max Depth = 32<LI>Call Chain = wavegen_driverA_sine_test ⇒ __2printf
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Calls]<UL><LI><a href="#[6f]">>></a> puts
|
<BR>[Calls]<UL><LI><a href="#[70]">>></a> __2printf
|
||||||
</UL>
|
</UL>
|
||||||
<BR>[Called By]<UL><LI><a href="#[3e]">>></a> EMS_Process
|
<BR>[Called By]<UL><LI><a href="#[3e]">>></a> EMS_Process
|
||||||
</UL>
|
</UL>
|
||||||
|
|
@ -812,22 +804,20 @@ Local Symbols
|
||||||
<BR><BR>[Called By]<UL><LI><a href="#[58]">>></a> UART_ITConfig
|
<BR><BR>[Called By]<UL><LI><a href="#[58]">>></a> UART_ITConfig
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[4f]"></a>NVIC_ClearPendingIRQ</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, ens1_timer.o(i.NVIC_ClearPendingIRQ))
|
<P><STRONG><a name="[50]"></a>NVIC_ClearPendingIRQ</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, ens1_timer.o(i.NVIC_ClearPendingIRQ))
|
||||||
<BR><BR>[Called By]<UL><LI><a href="#[4c]">>></a> TIMER0_Init
|
<BR><BR>[Called By]<UL><LI><a href="#[4d]">>></a> TIMER0_Init
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[4e]"></a>NVIC_DisableIRQ</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, ens1_timer.o(i.NVIC_DisableIRQ))
|
<P><STRONG><a name="[4f]"></a>NVIC_DisableIRQ</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, ens1_timer.o(i.NVIC_DisableIRQ))
|
||||||
<BR><BR>[Called By]<UL><LI><a href="#[4c]">>></a> TIMER0_Init
|
<BR><BR>[Called By]<UL><LI><a href="#[4d]">>></a> TIMER0_Init
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[52]"></a>NVIC_EnableIRQ</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, ens1_timer.o(i.NVIC_EnableIRQ))
|
<P><STRONG><a name="[52]"></a>NVIC_EnableIRQ</STRONG> (Thumb, 14 bytes, Stack size 0 bytes, ens1_timer.o(i.NVIC_EnableIRQ))
|
||||||
<BR><BR>[Called By]<UL><LI><a href="#[4c]">>></a> TIMER0_Init
|
<BR><BR>[Called By]<UL><LI><a href="#[4d]">>></a> TIMER0_Init
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
<P><STRONG><a name="[5f]"></a>_printf_core</STRONG> (Thumb, 332 bytes, Stack size 88 bytes, printf1.o(i._printf_core), UNUSED)
|
<P><STRONG><a name="[5f]"></a>_printf_core</STRONG> (Thumb, 30 bytes, Stack size 24 bytes, printfb.o(i._printf_core), UNUSED)
|
||||||
<BR><BR>[Calls]<UL><LI><a href="#[50]">>></a> __aeabi_uidivmod
|
<BR><BR>[Called By]<UL><LI><a href="#[5e]">>></a> __0printf$bare
|
||||||
</UL>
|
|
||||||
<BR>[Called By]<UL><LI><a href="#[5e]">>></a> __0printf$1
|
|
||||||
</UL>
|
</UL>
|
||||||
<P>
|
<P>
|
||||||
<H3>
|
<H3>
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
Dependencies for Project 'ENS001_BASIC_PRJ', Target 'ENS001_BASIC_PRJ': (DO NOT MODIFY !)
|
Dependencies for Project 'ENS001_BASIC_PRJ', Target 'ENS001_BASIC_PRJ': (DO NOT MODIFY !)
|
||||||
CompilerVersion: 5060750::V5.06 update 6 (build 750)::.\ARM_Compiler_5.06u7
|
CompilerVersion: 5060750::V5.06 update 6 (build 750)::.\ARM_Compiler_5.06u7
|
||||||
F (.\USER\mian.c)(0x68A53A7B)(--c99 -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\CORE\INCLUDE -I .\USER -I .\FWLIB\include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARMCM0\Include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARM\ARMCM0\Include
-D__UVISION_VERSION="538" -DARMCM0
-o .\objects\mian.o --omf_browse .\objects\mian.crf --depend .\objects\mian.d)
|
F (.\USER\mian.c)(0x68B11E1F)(--c99 -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\CORE\INCLUDE -I .\USER -I .\FWLIB\include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARMCM0\Include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARM\ARMCM0\Include
-D__UVISION_VERSION="538" -DARMCM0
-o .\objects\mian.o --omf_browse .\objects\mian.crf --depend .\objects\mian.d)
|
||||||
I (USER\my_header.h)(0x689C4B9B)
|
I (USER\my_header.h)(0x68B11CC5)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdio.h)(0x599ECD2C)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdio.h)(0x599ECD2C)
|
||||||
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\string.h)(0x599ECD2C)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\math.h)(0x599ECD2E)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\math.h)(0x599ECD2E)
|
||||||
I (.\CORE\INCLUDE\CMSDK_CM0.h)(0x64D5ADE8)
|
I (.\CORE\INCLUDE\CMSDK_CM0.h)(0x64D5ADE8)
|
||||||
I (.\CORE\INCLUDE\core_cm0.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cm0.h)(0x63648DE6)
|
||||||
|
|
@ -11,17 +12,17 @@ I (.\CORE\INCLUDE\core_cmInstr.h)(0x63648DE6)
|
||||||
I (.\CORE\INCLUDE\core_cmFunc.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cmFunc.h)(0x63648DE6)
|
||||||
I (.\CORE\INCLUDE\system_CMSDK_CM0.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\system_CMSDK_CM0.h)(0x63648DE6)
|
||||||
I (.\FWLIB\include\ENS1_TIMER.h)(0x68A5333E)
|
I (.\FWLIB\include\ENS1_TIMER.h)(0x68A5333E)
|
||||||
I (.\USER\my_header.h)(0x689C4B9B)
|
I (.\USER\my_header.h)(0x68B11CC5)
|
||||||
I (.\FWLIB\include\ENS1_MTP.h)(0x65605CD6)
|
I (.\FWLIB\include\ENS1_MTP.h)(0x65605CD6)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdlib.h)(0x599ECD2C)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdlib.h)(0x599ECD2C)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\string.h)(0x599ECD2C)
|
|
||||||
I (.\FWLIB\include\ENS1_CLOCK.h)(0x68358097)
|
I (.\FWLIB\include\ENS1_CLOCK.h)(0x68358097)
|
||||||
I (.\FWLIB\include\ENS1_UART.h)(0x689C4BC8)
|
I (.\FWLIB\include\ENS1_UART.h)(0x68B10579)
|
||||||
I (.\FWLIB\include\ENS1_GPIO.h)(0x656546CE)
|
I (.\FWLIB\include\ENS1_GPIO.h)(0x68B11DDD)
|
||||||
I (.\FWLIB\include\ENS1_WAVEGEN.h)(0x68A53A7B)
|
I (.\FWLIB\include\ENS1_WAVEGEN.h)(0x68A53F9C)
|
||||||
F (.\FWLIB\source\ENS1_UART.c)(0x689C4BE6)(--c99 -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\CORE\INCLUDE -I .\USER -I .\FWLIB\include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARMCM0\Include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARM\ARMCM0\Include
-D__UVISION_VERSION="538" -DARMCM0
-o .\objects\ens1_uart.o --omf_browse .\objects\ens1_uart.crf --depend .\objects\ens1_uart.d)
|
F (.\FWLIB\source\ENS1_UART.c)(0x68B117BC)(--c99 -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\CORE\INCLUDE -I .\USER -I .\FWLIB\include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARMCM0\Include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARM\ARMCM0\Include
-D__UVISION_VERSION="538" -DARMCM0
-o .\objects\ens1_uart.o --omf_browse .\objects\ens1_uart.crf --depend .\objects\ens1_uart.d)
|
||||||
I (.\USER\my_header.h)(0x689C4B9B)
|
I (.\USER\my_header.h)(0x68B11CC5)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdio.h)(0x599ECD2C)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdio.h)(0x599ECD2C)
|
||||||
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\string.h)(0x599ECD2C)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\math.h)(0x599ECD2E)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\math.h)(0x599ECD2E)
|
||||||
I (.\CORE\INCLUDE\CMSDK_CM0.h)(0x64D5ADE8)
|
I (.\CORE\INCLUDE\CMSDK_CM0.h)(0x64D5ADE8)
|
||||||
I (.\CORE\INCLUDE\core_cm0.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cm0.h)(0x63648DE6)
|
||||||
|
|
@ -30,12 +31,13 @@ I (.\CORE\INCLUDE\core_cmInstr.h)(0x63648DE6)
|
||||||
I (.\CORE\INCLUDE\core_cmFunc.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cmFunc.h)(0x63648DE6)
|
||||||
I (.\CORE\INCLUDE\system_CMSDK_CM0.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\system_CMSDK_CM0.h)(0x63648DE6)
|
||||||
I (.\FWLIB\include\ENS1_TIMER.h)(0x68A5333E)
|
I (.\FWLIB\include\ENS1_TIMER.h)(0x68A5333E)
|
||||||
I (.\FWLIB\include\ENS1_UART.h)(0x689C4BC8)
|
I (.\FWLIB\include\ENS1_UART.h)(0x68B10579)
|
||||||
I (.\FWLIB\include\ENS1_CLOCK.h)(0x68358097)
|
I (.\FWLIB\include\ENS1_CLOCK.h)(0x68358097)
|
||||||
I (.\FWLIB\include\ENS1_GPIO.h)(0x656546CE)
|
I (.\FWLIB\include\ENS1_GPIO.h)(0x68B11DDD)
|
||||||
F (.\FWLIB\source\ENS1_GPIO.c)(0x689C4B85)(--c99 -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\CORE\INCLUDE -I .\USER -I .\FWLIB\include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARMCM0\Include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARM\ARMCM0\Include
-D__UVISION_VERSION="538" -DARMCM0
-o .\objects\ens1_gpio.o --omf_browse .\objects\ens1_gpio.crf --depend .\objects\ens1_gpio.d)
|
F (.\FWLIB\source\ENS1_GPIO.c)(0x689C4B85)(--c99 -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\CORE\INCLUDE -I .\USER -I .\FWLIB\include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARMCM0\Include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARM\ARMCM0\Include
-D__UVISION_VERSION="538" -DARMCM0
-o .\objects\ens1_gpio.o --omf_browse .\objects\ens1_gpio.crf --depend .\objects\ens1_gpio.d)
|
||||||
I (.\USER\my_header.h)(0x689C4B9B)
|
I (.\USER\my_header.h)(0x68B11CC5)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdio.h)(0x599ECD2C)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdio.h)(0x599ECD2C)
|
||||||
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\string.h)(0x599ECD2C)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\math.h)(0x599ECD2E)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\math.h)(0x599ECD2E)
|
||||||
I (.\CORE\INCLUDE\CMSDK_CM0.h)(0x64D5ADE8)
|
I (.\CORE\INCLUDE\CMSDK_CM0.h)(0x64D5ADE8)
|
||||||
I (.\CORE\INCLUDE\core_cm0.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cm0.h)(0x63648DE6)
|
||||||
|
|
@ -44,8 +46,8 @@ I (.\CORE\INCLUDE\core_cmInstr.h)(0x63648DE6)
|
||||||
I (.\CORE\INCLUDE\core_cmFunc.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cmFunc.h)(0x63648DE6)
|
||||||
I (.\CORE\INCLUDE\system_CMSDK_CM0.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\system_CMSDK_CM0.h)(0x63648DE6)
|
||||||
I (.\FWLIB\include\ENS1_TIMER.h)(0x68A5333E)
|
I (.\FWLIB\include\ENS1_TIMER.h)(0x68A5333E)
|
||||||
I (.\FWLIB\include\ENS1_GPIO.h)(0x656546CE)
|
I (.\FWLIB\include\ENS1_GPIO.h)(0x68B11DDD)
|
||||||
F (.\FWLIB\source\ENS1_MTP.c)(0x680B4E85)(--c99 -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\CORE\INCLUDE -I .\USER -I .\FWLIB\include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARMCM0\Include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARM\ARMCM0\Include
-D__UVISION_VERSION="538" -DARMCM0
-o .\objects\ens1_mtp.o --omf_browse .\objects\ens1_mtp.crf --depend .\objects\ens1_mtp.d)
|
F (.\FWLIB\source\ENS1_MTP.c)(0x68B10C84)(--c99 -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\CORE\INCLUDE -I .\USER -I .\FWLIB\include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARMCM0\Include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARM\ARMCM0\Include
-D__UVISION_VERSION="538" -DARMCM0
-o .\objects\ens1_mtp.o --omf_browse .\objects\ens1_mtp.crf --depend .\objects\ens1_mtp.d)
|
||||||
I (.\FWLIB\include\ENS1_MTP.h)(0x65605CD6)
|
I (.\FWLIB\include\ENS1_MTP.h)(0x65605CD6)
|
||||||
I (.\CORE\INCLUDE\CMSDK_CM0.h)(0x64D5ADE8)
|
I (.\CORE\INCLUDE\CMSDK_CM0.h)(0x64D5ADE8)
|
||||||
I (.\CORE\INCLUDE\core_cm0.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cm0.h)(0x63648DE6)
|
||||||
|
|
@ -55,14 +57,15 @@ I (.\CORE\INCLUDE\core_cmFunc.h)(0x63648DE6)
|
||||||
I (.\CORE\INCLUDE\system_CMSDK_CM0.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\system_CMSDK_CM0.h)(0x63648DE6)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdlib.h)(0x599ECD2C)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdlib.h)(0x599ECD2C)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\string.h)(0x599ECD2C)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\string.h)(0x599ECD2C)
|
||||||
I (.\USER\my_header.h)(0x689C4B9B)
|
I (.\USER\my_header.h)(0x68B11CC5)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdio.h)(0x599ECD2C)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdio.h)(0x599ECD2C)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\math.h)(0x599ECD2E)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\math.h)(0x599ECD2E)
|
||||||
I (.\FWLIB\include\ENS1_TIMER.h)(0x68A5333E)
|
I (.\FWLIB\include\ENS1_TIMER.h)(0x68A5333E)
|
||||||
F (.\FWLIB\source\ENS1_CLOCK.c)(0x68A5300C)(--c99 -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\CORE\INCLUDE -I .\USER -I .\FWLIB\include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARMCM0\Include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARM\ARMCM0\Include
-D__UVISION_VERSION="538" -DARMCM0
-o .\objects\ens1_clock.o --omf_browse .\objects\ens1_clock.crf --depend .\objects\ens1_clock.d)
|
F (.\FWLIB\source\ENS1_CLOCK.c)(0x68A5300C)(--c99 -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\CORE\INCLUDE -I .\USER -I .\FWLIB\include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARMCM0\Include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARM\ARMCM0\Include
-D__UVISION_VERSION="538" -DARMCM0
-o .\objects\ens1_clock.o --omf_browse .\objects\ens1_clock.crf --depend .\objects\ens1_clock.d)
|
||||||
I (.\FWLIB\include\ENS1_CLOCK.h)(0x68358097)
|
I (.\FWLIB\include\ENS1_CLOCK.h)(0x68358097)
|
||||||
I (.\USER\my_header.h)(0x689C4B9B)
|
I (.\USER\my_header.h)(0x68B11CC5)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdio.h)(0x599ECD2C)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdio.h)(0x599ECD2C)
|
||||||
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\string.h)(0x599ECD2C)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\math.h)(0x599ECD2E)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\math.h)(0x599ECD2E)
|
||||||
I (.\CORE\INCLUDE\CMSDK_CM0.h)(0x64D5ADE8)
|
I (.\CORE\INCLUDE\CMSDK_CM0.h)(0x64D5ADE8)
|
||||||
I (.\CORE\INCLUDE\core_cm0.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cm0.h)(0x63648DE6)
|
||||||
|
|
@ -82,7 +85,7 @@ I (.\CORE\INCLUDE\core_cm0.h)(0x63648DE6)
|
||||||
I (.\CORE\INCLUDE\core_cmInstr.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cmInstr.h)(0x63648DE6)
|
||||||
I (.\CORE\INCLUDE\core_cmFunc.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cmFunc.h)(0x63648DE6)
|
||||||
I (.\CORE\INCLUDE\system_CMSDK_CM0.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\system_CMSDK_CM0.h)(0x63648DE6)
|
||||||
F (.\FWLIB\source\ENS1_TIMER.c)(0x68A53735)(--c99 -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\CORE\INCLUDE -I .\USER -I .\FWLIB\include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARMCM0\Include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARM\ARMCM0\Include
-D__UVISION_VERSION="538" -DARMCM0
-o .\objects\ens1_timer.o --omf_browse .\objects\ens1_timer.crf --depend .\objects\ens1_timer.d)
|
F (.\FWLIB\source\ENS1_TIMER.c)(0x68B11CB3)(--c99 -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\CORE\INCLUDE -I .\USER -I .\FWLIB\include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARMCM0\Include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARM\ARMCM0\Include
-D__UVISION_VERSION="538" -DARMCM0
-o .\objects\ens1_timer.o --omf_browse .\objects\ens1_timer.crf --depend .\objects\ens1_timer.d)
|
||||||
I (.\FWLIB\include\ENS1_TIMER.h)(0x68A5333E)
|
I (.\FWLIB\include\ENS1_TIMER.h)(0x68A5333E)
|
||||||
I (.\CORE\INCLUDE\CMSDK_CM0.h)(0x64D5ADE8)
|
I (.\CORE\INCLUDE\CMSDK_CM0.h)(0x64D5ADE8)
|
||||||
I (.\CORE\INCLUDE\core_cm0.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cm0.h)(0x63648DE6)
|
||||||
|
|
@ -90,34 +93,36 @@ I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdint.h)(0x599ECD2E)
|
||||||
I (.\CORE\INCLUDE\core_cmInstr.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cmInstr.h)(0x63648DE6)
|
||||||
I (.\CORE\INCLUDE\core_cmFunc.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cmFunc.h)(0x63648DE6)
|
||||||
I (.\CORE\INCLUDE\system_CMSDK_CM0.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\system_CMSDK_CM0.h)(0x63648DE6)
|
||||||
I (.\USER\my_header.h)(0x689C4B9B)
|
I (.\USER\my_header.h)(0x68B11CC5)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdio.h)(0x599ECD2C)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdio.h)(0x599ECD2C)
|
||||||
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\string.h)(0x599ECD2C)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\math.h)(0x599ECD2E)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\math.h)(0x599ECD2E)
|
||||||
I (.\FWLIB\include\ENS_CURRENT_CALIBRATION.h)(0x6566A27C)
|
I (.\FWLIB\include\ENS_CURRENT_CALIBRATION.h)(0x6566A27C)
|
||||||
I (.\FWLIB\include\ENS1_CLOCK.h)(0x68358097)
|
I (.\FWLIB\include\ENS1_CLOCK.h)(0x68358097)
|
||||||
F (.\FWLIB\source\ENS1_BOOST.c)(0x689E9D44)(--c99 -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\CORE\INCLUDE -I .\USER -I .\FWLIB\include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARMCM0\Include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARM\ARMCM0\Include
-D__UVISION_VERSION="538" -DARMCM0
-o .\objects\ens1_boost.o --omf_browse .\objects\ens1_boost.crf --depend .\objects\ens1_boost.d)
|
F (.\FWLIB\source\ENS1_BOOST.c)(0x689E9D44)(--c99 -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\CORE\INCLUDE -I .\USER -I .\FWLIB\include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARMCM0\Include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARM\ARMCM0\Include
-D__UVISION_VERSION="538" -DARMCM0
-o .\objects\ens1_boost.o --omf_browse .\objects\ens1_boost.crf --depend .\objects\ens1_boost.d)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdio.h)(0x599ECD2C)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdio.h)(0x599ECD2C)
|
||||||
I (.\FWLIB\include\ENS1_BOOST.h)(0x689E9D44)
|
I (.\FWLIB\include\ENS1_BOOST.h)(0x68B11D22)
|
||||||
I (.\CORE\INCLUDE\CMSDK_CM0.h)(0x64D5ADE8)
|
I (.\CORE\INCLUDE\CMSDK_CM0.h)(0x64D5ADE8)
|
||||||
I (.\CORE\INCLUDE\core_cm0.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cm0.h)(0x63648DE6)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdint.h)(0x599ECD2E)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdint.h)(0x599ECD2E)
|
||||||
I (.\CORE\INCLUDE\core_cmInstr.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cmInstr.h)(0x63648DE6)
|
||||||
I (.\CORE\INCLUDE\core_cmFunc.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cmFunc.h)(0x63648DE6)
|
||||||
I (.\CORE\INCLUDE\system_CMSDK_CM0.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\system_CMSDK_CM0.h)(0x63648DE6)
|
||||||
F (.\FWLIB\source\ENS1_WAVEGEN.c)(0x68A53A7B)(--c99 -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\CORE\INCLUDE -I .\USER -I .\FWLIB\include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARMCM0\Include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARM\ARMCM0\Include
-D__UVISION_VERSION="538" -DARMCM0
-o .\objects\ens1_wavegen.o --omf_browse .\objects\ens1_wavegen.crf --depend .\objects\ens1_wavegen.d)
|
F (.\FWLIB\source\ENS1_WAVEGEN.c)(0x68B11C3C)(--c99 -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\CORE\INCLUDE -I .\USER -I .\FWLIB\include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARMCM0\Include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARM\ARMCM0\Include
-D__UVISION_VERSION="538" -DARMCM0
-o .\objects\ens1_wavegen.o --omf_browse .\objects\ens1_wavegen.crf --depend .\objects\ens1_wavegen.d)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdio.h)(0x599ECD2C)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdio.h)(0x599ECD2C)
|
||||||
I (.\FWLIB\include\ENS1_WAVEGEN.h)(0x68A53A7B)
|
I (.\FWLIB\include\ENS1_WAVEGEN.h)(0x68A53F9C)
|
||||||
I (.\CORE\INCLUDE\CMSDK_CM0.h)(0x64D5ADE8)
|
I (.\CORE\INCLUDE\CMSDK_CM0.h)(0x64D5ADE8)
|
||||||
I (.\CORE\INCLUDE\core_cm0.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cm0.h)(0x63648DE6)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdint.h)(0x599ECD2E)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdint.h)(0x599ECD2E)
|
||||||
I (.\CORE\INCLUDE\core_cmInstr.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cmInstr.h)(0x63648DE6)
|
||||||
I (.\CORE\INCLUDE\core_cmFunc.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\core_cmFunc.h)(0x63648DE6)
|
||||||
I (.\CORE\INCLUDE\system_CMSDK_CM0.h)(0x63648DE6)
|
I (.\CORE\INCLUDE\system_CMSDK_CM0.h)(0x63648DE6)
|
||||||
I (.\USER\my_header.h)(0x689C4B9B)
|
I (.\USER\my_header.h)(0x68B11CC5)
|
||||||
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\string.h)(0x599ECD2C)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\math.h)(0x599ECD2E)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\math.h)(0x599ECD2E)
|
||||||
I (.\FWLIB\include\ENS1_TIMER.h)(0x68A5333E)
|
I (.\FWLIB\include\ENS1_TIMER.h)(0x68A5333E)
|
||||||
I (.\FWLIB\include\ENS1_CLOCK.h)(0x68358097)
|
I (.\FWLIB\include\ENS1_CLOCK.h)(0x68358097)
|
||||||
I (.\FWLIB\include\ENS1_BOOST.h)(0x689E9D44)
|
I (.\FWLIB\include\ENS1_BOOST.h)(0x68B11D22)
|
||||||
F (.\CORE\system_CMSDK_CM0.c)(0x63648DE6)(--c99 -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\CORE\INCLUDE -I .\USER -I .\FWLIB\include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARMCM0\Include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARM\ARMCM0\Include
-D__UVISION_VERSION="538" -DARMCM0
-o .\objects\system_cmsdk_cm0.o --omf_browse .\objects\system_cmsdk_cm0.crf --depend .\objects\system_cmsdk_cm0.d)
|
F (.\CORE\system_CMSDK_CM0.c)(0x63648DE6)(--c99 -c --cpu Cortex-M0 -D__MICROLIB --li -g -O0 --apcs=interwork --split_sections -I .\CORE\INCLUDE -I .\USER -I .\FWLIB\include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARMCM0\Include
-ID:\Keil_v5\ARM\Packs\ARM\Cortex_DFP\1.1.0\Device\ARM\ARMCM0\Include
-D__UVISION_VERSION="538" -DARMCM0
-o .\objects\system_cmsdk_cm0.o --omf_browse .\objects\system_cmsdk_cm0.crf --depend .\objects\system_cmsdk_cm0.d)
|
||||||
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdint.h)(0x599ECD2E)
|
I (D:\Keil_v5\ARM\ARM_Compiler_5.06u7\include\stdint.h)(0x599ECD2E)
|
||||||
I (.\CORE\INCLUDE\CMSDK_CM0.h)(0x64D5ADE8)
|
I (.\CORE\INCLUDE\CMSDK_CM0.h)(0x64D5ADE8)
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -2,6 +2,7 @@
|
||||||
.\objects\ens1_clock.o: .\FWLIB\include\ENS1_CLOCK.h
|
.\objects\ens1_clock.o: .\FWLIB\include\ENS1_CLOCK.h
|
||||||
.\objects\ens1_clock.o: .\USER\my_header.h
|
.\objects\ens1_clock.o: .\USER\my_header.h
|
||||||
.\objects\ens1_clock.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\stdio.h
|
.\objects\ens1_clock.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\stdio.h
|
||||||
|
.\objects\ens1_clock.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\string.h
|
||||||
.\objects\ens1_clock.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\math.h
|
.\objects\ens1_clock.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\math.h
|
||||||
.\objects\ens1_clock.o: .\CORE\INCLUDE\CMSDK_CM0.h
|
.\objects\ens1_clock.o: .\CORE\INCLUDE\CMSDK_CM0.h
|
||||||
.\objects\ens1_clock.o: .\CORE\INCLUDE\core_cm0.h
|
.\objects\ens1_clock.o: .\CORE\INCLUDE\core_cm0.h
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -1,6 +1,7 @@
|
||||||
.\objects\ens1_gpio.o: FWLIB\source\ENS1_GPIO.c
|
.\objects\ens1_gpio.o: FWLIB\source\ENS1_GPIO.c
|
||||||
.\objects\ens1_gpio.o: .\USER\my_header.h
|
.\objects\ens1_gpio.o: .\USER\my_header.h
|
||||||
.\objects\ens1_gpio.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\stdio.h
|
.\objects\ens1_gpio.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\stdio.h
|
||||||
|
.\objects\ens1_gpio.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\string.h
|
||||||
.\objects\ens1_gpio.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\math.h
|
.\objects\ens1_gpio.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\math.h
|
||||||
.\objects\ens1_gpio.o: .\CORE\INCLUDE\CMSDK_CM0.h
|
.\objects\ens1_gpio.o: .\CORE\INCLUDE\CMSDK_CM0.h
|
||||||
.\objects\ens1_gpio.o: .\CORE\INCLUDE\core_cm0.h
|
.\objects\ens1_gpio.o: .\CORE\INCLUDE\core_cm0.h
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -8,6 +8,7 @@
|
||||||
.\objects\ens1_timer.o: .\CORE\INCLUDE\system_CMSDK_CM0.h
|
.\objects\ens1_timer.o: .\CORE\INCLUDE\system_CMSDK_CM0.h
|
||||||
.\objects\ens1_timer.o: .\USER\my_header.h
|
.\objects\ens1_timer.o: .\USER\my_header.h
|
||||||
.\objects\ens1_timer.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\stdio.h
|
.\objects\ens1_timer.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\stdio.h
|
||||||
|
.\objects\ens1_timer.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\string.h
|
||||||
.\objects\ens1_timer.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\math.h
|
.\objects\ens1_timer.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\math.h
|
||||||
.\objects\ens1_timer.o: .\FWLIB\include\ENS1_TIMER.h
|
.\objects\ens1_timer.o: .\FWLIB\include\ENS1_TIMER.h
|
||||||
.\objects\ens1_timer.o: .\FWLIB\include\ENS_CURRENT_CALIBRATION.h
|
.\objects\ens1_timer.o: .\FWLIB\include\ENS_CURRENT_CALIBRATION.h
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -1,6 +1,7 @@
|
||||||
.\objects\ens1_uart.o: FWLIB\source\ENS1_UART.c
|
.\objects\ens1_uart.o: FWLIB\source\ENS1_UART.c
|
||||||
.\objects\ens1_uart.o: .\USER\my_header.h
|
.\objects\ens1_uart.o: .\USER\my_header.h
|
||||||
.\objects\ens1_uart.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\stdio.h
|
.\objects\ens1_uart.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\stdio.h
|
||||||
|
.\objects\ens1_uart.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\string.h
|
||||||
.\objects\ens1_uart.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\math.h
|
.\objects\ens1_uart.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\math.h
|
||||||
.\objects\ens1_uart.o: .\CORE\INCLUDE\CMSDK_CM0.h
|
.\objects\ens1_uart.o: .\CORE\INCLUDE\CMSDK_CM0.h
|
||||||
.\objects\ens1_uart.o: .\CORE\INCLUDE\core_cm0.h
|
.\objects\ens1_uart.o: .\CORE\INCLUDE\core_cm0.h
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -8,6 +8,7 @@
|
||||||
.\objects\ens1_wavegen.o: .\CORE\INCLUDE\core_cmFunc.h
|
.\objects\ens1_wavegen.o: .\CORE\INCLUDE\core_cmFunc.h
|
||||||
.\objects\ens1_wavegen.o: .\CORE\INCLUDE\system_CMSDK_CM0.h
|
.\objects\ens1_wavegen.o: .\CORE\INCLUDE\system_CMSDK_CM0.h
|
||||||
.\objects\ens1_wavegen.o: .\USER\my_header.h
|
.\objects\ens1_wavegen.o: .\USER\my_header.h
|
||||||
|
.\objects\ens1_wavegen.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\string.h
|
||||||
.\objects\ens1_wavegen.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\math.h
|
.\objects\ens1_wavegen.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\math.h
|
||||||
.\objects\ens1_wavegen.o: .\FWLIB\include\ENS1_TIMER.h
|
.\objects\ens1_wavegen.o: .\FWLIB\include\ENS1_TIMER.h
|
||||||
.\objects\ens1_wavegen.o: .\USER\my_header.h
|
.\objects\ens1_wavegen.o: .\USER\my_header.h
|
||||||
|
|
|
||||||
Binary file not shown.
BIN
Objects/mian.crf
BIN
Objects/mian.crf
Binary file not shown.
|
|
@ -1,6 +1,7 @@
|
||||||
.\objects\mian.o: USER\mian.c
|
.\objects\mian.o: USER\mian.c
|
||||||
.\objects\mian.o: USER\my_header.h
|
.\objects\mian.o: USER\my_header.h
|
||||||
.\objects\mian.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\stdio.h
|
.\objects\mian.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\stdio.h
|
||||||
|
.\objects\mian.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\string.h
|
||||||
.\objects\mian.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\math.h
|
.\objects\mian.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\math.h
|
||||||
.\objects\mian.o: .\CORE\INCLUDE\CMSDK_CM0.h
|
.\objects\mian.o: .\CORE\INCLUDE\CMSDK_CM0.h
|
||||||
.\objects\mian.o: .\CORE\INCLUDE\core_cm0.h
|
.\objects\mian.o: .\CORE\INCLUDE\core_cm0.h
|
||||||
|
|
@ -12,7 +13,6 @@
|
||||||
.\objects\mian.o: .\USER\my_header.h
|
.\objects\mian.o: .\USER\my_header.h
|
||||||
.\objects\mian.o: .\FWLIB\include\ENS1_MTP.h
|
.\objects\mian.o: .\FWLIB\include\ENS1_MTP.h
|
||||||
.\objects\mian.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\stdlib.h
|
.\objects\mian.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\stdlib.h
|
||||||
.\objects\mian.o: D:\Keil_v5\ARM\ARM_Compiler_5.06u7\Bin\..\include\string.h
|
|
||||||
.\objects\mian.o: .\FWLIB\include\ENS1_CLOCK.h
|
.\objects\mian.o: .\FWLIB\include\ENS1_CLOCK.h
|
||||||
.\objects\mian.o: .\FWLIB\include\ENS1_UART.h
|
.\objects\mian.o: .\FWLIB\include\ENS1_UART.h
|
||||||
.\objects\mian.o: .\FWLIB\include\ENS1_GPIO.h
|
.\objects\mian.o: .\FWLIB\include\ENS1_GPIO.h
|
||||||
|
|
|
||||||
BIN
Objects/mian.o
BIN
Objects/mian.o
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1,4 +1,4 @@
|
||||||
/*Copyright (C),2023 , NANOCHAP
|
/*Copyright (C),2023 , NANOCHAP
|
||||||
*File name:
|
*File name:
|
||||||
*Author: Martin
|
*Author: Martin
|
||||||
*Version: V1.0
|
*Version: V1.0
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
#ifndef MY_HEADER_H
|
#ifndef MY_HEADER_H
|
||||||
#define MY_HEADER_H
|
#define MY_HEADER_H
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include "CMSDK_CM0.h"
|
#include "CMSDK_CM0.h"
|
||||||
#include "ENS1_TIMER.h"
|
#include "ENS1_TIMER.h"
|
||||||
|
|
@ -22,32 +24,32 @@ typedef enum {OUTPUT = 0, INPUT = !OUTPUT} I_O_SELECT;
|
||||||
typedef enum {oversamp_16 = 0, oversamp_13=!oversamp_16} OverSampModeSel;
|
typedef enum {oversamp_16 = 0, oversamp_13=!oversamp_16} OverSampModeSel;
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
GPIO_PU = 0x00, //上拉
|
GPIO_PU = 0x00, //上拉
|
||||||
GPIO_PD = 0x01, //下拉
|
GPIO_PD = 0x01, //下拉
|
||||||
GPIO_NOPULL = 0x02 //无上下拉
|
GPIO_NOPULL = 0x02 //无上下拉
|
||||||
}GPIO_PUPD_TypeDef;
|
}GPIO_PUPD_TypeDef;
|
||||||
|
|
||||||
//输出速度选择枚举
|
//输出速度选择枚举
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
OUTPUT_FAST = 0x00, //快速
|
OUTPUT_FAST = 0x00, //快速
|
||||||
OUTPUT_SLOW = 0x01 //慢速
|
OUTPUT_SLOW = 0x01 //慢速
|
||||||
}OUTPUT_SPEED_TypeDef;
|
}OUTPUT_SPEED_TypeDef;
|
||||||
|
|
||||||
//输出模式选择枚举
|
//输出模式选择枚举
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
GPIO_OType_PP = 0x00, //推挽输出
|
GPIO_OType_PP = 0x00, //推挽输出
|
||||||
GPIO_OType_OD = 0x01 //开漏输出
|
GPIO_OType_OD = 0x01 //开漏输出
|
||||||
}GPIOOType_TypeDef;
|
}GPIOOType_TypeDef;
|
||||||
|
|
||||||
//驱动强度选择枚举
|
//驱动强度选择枚举
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
PDRV_4mA = 0x00, //输出驱动强度4mA
|
PDRV_4mA = 0x00, //输出驱动强度4mA
|
||||||
PDRV_8mA, //输出驱动强度8mA
|
PDRV_8mA, //输出驱动强度8mA
|
||||||
PDRV_14mA, //输出驱动强度14mA
|
PDRV_14mA, //输出驱动强度14mA
|
||||||
PDRV_16mA //输出驱动强度16mA
|
PDRV_16mA //输出驱动强度16mA
|
||||||
}OUTPUT_PDRV_TypeDef;
|
}OUTPUT_PDRV_TypeDef;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
104
USER/mian.c
104
USER/mian.c
|
|
@ -4,14 +4,14 @@
|
||||||
*Author:
|
*Author:
|
||||||
*Version: V1.0
|
*Version: V1.0
|
||||||
*Date: 2023-11-
|
*Date: 2023-11-
|
||||||
*Description: 定时器电刺激综合测试(TIMER0 + 电刺激)
|
*Description: 定时器电刺激综合测试(TIMER0 + 电刺激)
|
||||||
*Function List:
|
*Function List:
|
||||||
|
|
||||||
History:
|
History:
|
||||||
1.V1.0
|
1.V1.0
|
||||||
Date:
|
Date:
|
||||||
Author:
|
Author:
|
||||||
Modification: 初版
|
Modification: 初版
|
||||||
|
|
||||||
*/
|
*/
|
||||||
#include "my_header.h"
|
#include "my_header.h"
|
||||||
|
|
@ -23,116 +23,104 @@ Modification:
|
||||||
#include "ENS1_WAVEGEN.h"
|
#include "ENS1_WAVEGEN.h"
|
||||||
|
|
||||||
int main(){
|
int main(){
|
||||||
// 初始化系统
|
// 初始化系统
|
||||||
MTP_init();
|
MTP_init();
|
||||||
ClockInit();
|
ClockInit();
|
||||||
|
|
||||||
// 初始化GPIO19用于定时器指示
|
// 初始化GPIO19用于定时器指示
|
||||||
GPIO_IO_Init(GPIO_19, OUTPUT, 0x00, 0x02, 0x00, 0x00, ENABLE);
|
GPIO_IO_Init(GPIO_19, OUTPUT, GPIO_OType_PP, GPIO_NOPULL, OUTPUT_FAST, PDRV_4mA, ENABLE);
|
||||||
GPIO_Output(GPIO_19, LOW_LEVEL);
|
GPIO_Output(GPIO_19, LOW_LEVEL);
|
||||||
|
|
||||||
// 初始化UART
|
// 初始化UART
|
||||||
UART_Init(CMSDK_UART1, &UART1_Init);
|
UART_Init(CMSDK_UART1, &UART1_Init);
|
||||||
UART_ITConfig(CMSDK_UART1, &UART1_ITSet);
|
UART_ITConfig(CMSDK_UART1, &UART1_ITSet);
|
||||||
|
|
||||||
// 初始化定时器(在wavegen_Init之前)
|
// 初始化定时器(在wavegen_Init之前)
|
||||||
TIMER0_Init(1);
|
TIMER0_Init(1);
|
||||||
|
|
||||||
// 初始化时间管理器
|
// 初始化时间管理器
|
||||||
Time_Manager_Init();
|
Time_Manager_Init();
|
||||||
|
|
||||||
// 添加调试信息
|
// 初始化波形生成器(电刺激)
|
||||||
// printf("APB_Clock_Freq: %d Hz\n", APB_Clock_Freq);
|
|
||||||
// printf("TIMER0初始化完成\n");
|
|
||||||
|
|
||||||
// 初始化波形生成器(电刺激)
|
|
||||||
wavegen_Init();
|
wavegen_Init();
|
||||||
|
|
||||||
// 配置电刺激参数
|
// 配置电刺激参数
|
||||||
EMS_Config_TypeDef ems_config = {
|
EMS_Config_TypeDef ems_config = {
|
||||||
.frequency = 100, // 100Hz
|
.frequency = 100, // 100Hz
|
||||||
.duration = 1000, // 1000ms
|
.duration = 1000, // 1000ms
|
||||||
.intensity = 128, // 中等强度
|
.intensity = 128, // 中等强度
|
||||||
.rest_time = 100, // 100ms休息时间
|
.rest_time = 100, // 100ms休息时间
|
||||||
.silent_time = 50 // 50ms静默时间
|
.silent_time = 50, // 50ms静默时间
|
||||||
|
|
||||||
|
// 缓进缓出控制参数
|
||||||
|
.ramp_up_time = 2, // 缓进时间:2秒
|
||||||
|
.hold_time = 6, // 保持时间:6秒
|
||||||
|
.ramp_down_time = 2, // 缓出时间:2秒
|
||||||
|
.enable_ramp = 1 // 启用渐进控制
|
||||||
};
|
};
|
||||||
EMS_Configure(&ems_config);
|
EMS_Configure(&ems_config);
|
||||||
|
|
||||||
// 启动电刺激
|
// 启动电刺激
|
||||||
EMS_Start();
|
EMS_Start();
|
||||||
|
|
||||||
// printf("========================================\n");
|
|
||||||
// printf("定时器电刺激综合测试启动\n");
|
|
||||||
// printf("========================================\n");
|
|
||||||
// printf("GPIO19: 定时器指示(1秒翻转)\n");
|
|
||||||
// printf("电刺激: 方波输出(强度128)\n");
|
|
||||||
// printf("系统时钟: 32MHz HSI\n");
|
|
||||||
// printf("升压电压: 26V\n");
|
|
||||||
// printf("UART波特率: 115200\n");
|
|
||||||
// printf("========================================\n");
|
|
||||||
|
|
||||||
// 电刺激控制变量(需要在main函数外部定义)
|
static uint8_t ems_control_count = 0; // 电刺激控制计数器
|
||||||
static uint8_t ems_control_count = 0; // 电刺激控制计数器
|
static uint8_t ems_state = 0; // 电刺激状态:0=关闭,1=开启
|
||||||
static uint8_t ems_state = 0; // 电刺激状态:0=关闭,1=开启
|
|
||||||
|
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
// 获取时间标志位
|
// 获取时间标志位
|
||||||
Time_Flag_TypeDef* time_flags = Time_Manager_GetFlags();
|
Time_Flag_TypeDef* time_flags = Time_Manager_GetFlags();
|
||||||
|
|
||||||
// 处理电刺激(在主循环中运行)
|
// 处理电刺激(在主循环中运行)
|
||||||
// 注意:这里不再直接调用EMS_Process(),而是通过状态控制
|
// 注意:这里不再直接调用EMS_Process(),而是通过状态控制
|
||||||
|
|
||||||
// 基于时间标志位执行不同周期的任务
|
// 基于时间标志位执行不同周期的任务
|
||||||
if (time_flags->T_2ms) {
|
if (time_flags->T_2ms) {
|
||||||
// 2ms周期任务 - 高频控制任务
|
// 2ms周期任务 - 高频控制任务
|
||||||
time_flags->T_2ms = 0; // 清除标志位
|
time_flags->T_2ms = 0; // 清除标志位
|
||||||
}
|
}
|
||||||
|
|
||||||
if (time_flags->T_10ms) {
|
if (time_flags->T_10ms) {
|
||||||
// 10ms周期任务 - 中频控制任务
|
// 10ms周期任务 - 中频控制任务
|
||||||
time_flags->T_10ms = 0; // 清除标志位
|
time_flags->T_10ms = 0; // 清除标志位
|
||||||
}
|
}
|
||||||
|
|
||||||
if (time_flags->T_100ms) {
|
if (time_flags->T_100ms) {
|
||||||
// 100ms周期任务 - 低频控制任务
|
// 100ms周期任务 - 低频控制任务
|
||||||
time_flags->T_100ms = 0; // 清除标志位
|
time_flags->T_100ms = 0; // 清除标志位
|
||||||
}
|
}
|
||||||
|
|
||||||
if (time_flags->T_1s) {
|
if (time_flags->T_1s) {
|
||||||
// 1s周期任务 - 超低频任务
|
// 1s周期任务 - 超低频任务
|
||||||
ems_control_count++; // 每秒递增计数器
|
ems_control_count++; // 每秒递增计数器
|
||||||
|
|
||||||
// 间断性放电控制逻辑
|
|
||||||
|
// 间断性放电控制逻辑
|
||||||
if (ems_control_count <= 10) {
|
if (ems_control_count <= 10) {
|
||||||
// 前10秒:开启电刺激
|
// 前10秒:开启电刺激
|
||||||
if (ems_state == 0) {
|
if (ems_state == 0) {
|
||||||
ems_state = 1;
|
ems_state = 1;
|
||||||
EMS_Start(); // 启动电刺激
|
EMS_Start(); // 启动电刺激
|
||||||
// printf("电刺激开启 - 第%d秒\n", ems_control_count);
|
|
||||||
}
|
}
|
||||||
// 处理电刺激
|
// 处理电刺激
|
||||||
EMS_Process();
|
EMS_Process();
|
||||||
} else if (ems_control_count <= 20) {
|
} else if (ems_control_count <= 20) {
|
||||||
// 后10秒:关闭电刺激
|
// 后10秒:关闭电刺激
|
||||||
if (ems_state == 1) {
|
if (ems_state == 1) {
|
||||||
ems_state = 0;
|
ems_state = 0;
|
||||||
EMS_Stop(); // 停止电刺激
|
EMS_Stop(); // 停止电刺激
|
||||||
// printf("电刺激关闭 - 第%d秒\n", ems_control_count);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 重置计数器,开始新的周期
|
// 重置计数器,开始新的周期
|
||||||
ems_control_count = 0;
|
ems_control_count = 0;
|
||||||
// printf("电刺激周期重置\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GPIO_Overturn(GPIO_19); // GPIO19翻转
|
GPIO_Overturn(GPIO_19); // GPIO19翻转
|
||||||
// printf("1s定时任务执行 - 系统运行正常,电刺激状态: %s\n",
|
time_flags->T_1s = 0; // 清除标志位
|
||||||
// ems_state ? "开启" : "关闭");
|
|
||||||
time_flags->T_1s = 0; // 清除标志位
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 定时器中断处理在 TIMER0_Handler() 中
|
// 定时器中断处理在 TIMER0_Handler() 中
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,254 @@
|
||||||
|
# 缓进缓出功能说明
|
||||||
|
|
||||||
|
## 功能概述
|
||||||
|
|
||||||
|
缓进缓出功能实现了电刺激强度的渐进式控制,避免突然的强度变化给用户带来的不适感。整个10秒的电刺激周期被分为三个阶段:
|
||||||
|
|
||||||
|
- **缓进阶段(2秒)**:强度从0逐渐增加到设定最大值
|
||||||
|
- **保持阶段(6秒)**:保持最大强度
|
||||||
|
- **缓出阶段(2秒)**:强度从最大值逐渐降低到0
|
||||||
|
|
||||||
|
## 实现原理
|
||||||
|
|
||||||
|
### 1. 时间控制
|
||||||
|
|
||||||
|
基于2ms定时器中断,实现精确的强度控制:
|
||||||
|
|
||||||
|
```c
|
||||||
|
// 计算每个强度步进的时间间隔(微秒)
|
||||||
|
uint32_t step_interval = (g_ems_config.ramp_up_time * 2000000) / g_ems_config.intensity;
|
||||||
|
// 例如:2秒 = 2000000微秒,强度128,则每15625微秒增加1个强度单位
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 强度计算
|
||||||
|
|
||||||
|
根据您的计算:
|
||||||
|
- 总时间:2秒 = 2,000,000微秒
|
||||||
|
- 目标强度:128
|
||||||
|
- 步进间隔:2,000,000 / 128 = 15,625微秒
|
||||||
|
- 每15,625微秒增加/减少1个强度单位
|
||||||
|
|
||||||
|
### 3. 阶段控制
|
||||||
|
|
||||||
|
```c
|
||||||
|
switch (g_ramp_phase) {
|
||||||
|
case 0: // 缓进阶段
|
||||||
|
// 强度从0增加到设定值
|
||||||
|
break;
|
||||||
|
case 1: // 保持阶段
|
||||||
|
// 保持最大强度
|
||||||
|
break;
|
||||||
|
case 2: // 缓出阶段
|
||||||
|
// 强度从设定值降低到0
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 配置参数
|
||||||
|
|
||||||
|
### 1. 结构体定义
|
||||||
|
|
||||||
|
```c
|
||||||
|
typedef struct {
|
||||||
|
uint16_t frequency; // 频率 (Hz)
|
||||||
|
uint16_t duration; // 持续时间 (ms)
|
||||||
|
uint16_t intensity; // 强度 (0-255)
|
||||||
|
uint16_t rest_time; // 休息时间 (ms)
|
||||||
|
uint16_t silent_time; // 静默时间 (ms)
|
||||||
|
|
||||||
|
// 缓进缓出控制参数
|
||||||
|
uint8_t ramp_up_time; // 缓进时间:2秒
|
||||||
|
uint8_t hold_time; // 保持时间:6秒
|
||||||
|
uint8_t ramp_down_time; // 缓出时间:2秒
|
||||||
|
uint8_t enable_ramp; // 启用渐进控制
|
||||||
|
} EMS_Config_TypeDef;
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 当前配置
|
||||||
|
|
||||||
|
```c
|
||||||
|
EMS_Config_TypeDef ems_config = {
|
||||||
|
.frequency = 100, // 100Hz
|
||||||
|
.duration = 1000, // 1000ms
|
||||||
|
.intensity = 128, // 中等强度
|
||||||
|
.rest_time = 100, // 100ms休息时间
|
||||||
|
.silent_time = 50, // 50ms静默时间
|
||||||
|
|
||||||
|
// 缓进缓出控制参数
|
||||||
|
.ramp_up_time = 2, // 缓进时间:2秒
|
||||||
|
.hold_time = 6, // 保持时间:6秒
|
||||||
|
.ramp_down_time = 2, // 缓出时间:2秒
|
||||||
|
.enable_ramp = 1 // 启用渐进控制
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
## 工作流程
|
||||||
|
|
||||||
|
### 1. 系统启动
|
||||||
|
- 初始化缓进缓出变量
|
||||||
|
- 设置初始强度为0
|
||||||
|
- 进入缓进阶段
|
||||||
|
|
||||||
|
### 2. 缓进阶段(0-2秒)
|
||||||
|
- 每15,625微秒增加1个强度单位
|
||||||
|
- 从0逐渐增加到128
|
||||||
|
- 2秒后进入保持阶段
|
||||||
|
|
||||||
|
### 3. 保持阶段(2-8秒)
|
||||||
|
- 保持强度为128
|
||||||
|
- 持续6秒
|
||||||
|
- 8秒后进入缓出阶段
|
||||||
|
|
||||||
|
### 4. 缓出阶段(8-10秒)
|
||||||
|
- 每15,625微秒减少1个强度单位
|
||||||
|
- 从128逐渐降低到0
|
||||||
|
- 10秒后停止电刺激
|
||||||
|
|
||||||
|
### 5. 休息阶段(10-20秒)
|
||||||
|
- 电刺激完全停止
|
||||||
|
- 持续10秒
|
||||||
|
- 20秒后重新开始新周期
|
||||||
|
|
||||||
|
## 关键函数
|
||||||
|
|
||||||
|
### 1. 缓进缓出处理函数
|
||||||
|
|
||||||
|
```c
|
||||||
|
void EMS_Process_Ramp(void)
|
||||||
|
{
|
||||||
|
// 计算步进间隔
|
||||||
|
uint32_t step_interval = (g_ems_config.ramp_up_time * 2000000) / g_ems_config.intensity;
|
||||||
|
|
||||||
|
// 根据当前阶段调整强度
|
||||||
|
switch (g_ramp_phase) {
|
||||||
|
case 0: // 缓进
|
||||||
|
if (g_ramp_timer >= step_interval) {
|
||||||
|
g_current_intensity++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1: // 保持
|
||||||
|
g_current_intensity = g_ems_config.intensity;
|
||||||
|
break;
|
||||||
|
case 2: // 缓出
|
||||||
|
if (g_ramp_timer >= step_interval) {
|
||||||
|
g_current_intensity--;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 电刺激处理函数
|
||||||
|
|
||||||
|
```c
|
||||||
|
void EMS_Process(void)
|
||||||
|
{
|
||||||
|
if(g_ems_running) {
|
||||||
|
// 使用当前缓进缓出的强度
|
||||||
|
uint16_t current_intensity = g_current_intensity;
|
||||||
|
|
||||||
|
// 生成方波信号
|
||||||
|
wavegen_driverA_sine_test(WAVE_GEN_DRVA_BLK0, current_intensity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 波形特征
|
||||||
|
|
||||||
|
### 1. 梯形波形
|
||||||
|
在示波器上观察到的波形将呈现梯形特征:
|
||||||
|
- **上升沿**:2秒内从0V逐渐上升到最大电压
|
||||||
|
- **平顶**:6秒内保持最大电压
|
||||||
|
- **下降沿**:2秒内从最大电压逐渐下降到0V
|
||||||
|
- **平底**:10秒内保持0V
|
||||||
|
|
||||||
|
### 2. 时间精度
|
||||||
|
- 基于2ms定时器中断
|
||||||
|
- 强度变化精度:15,625微秒
|
||||||
|
- 总时间精度:±2ms
|
||||||
|
|
||||||
|
## 调试输出
|
||||||
|
|
||||||
|
系统会输出以下调试信息:
|
||||||
|
|
||||||
|
```
|
||||||
|
缓进缓出控制已启动 - 缓进阶段开始
|
||||||
|
缓进完成 - 进入保持阶段, 强度: 128
|
||||||
|
保持完成 - 进入缓出阶段
|
||||||
|
缓出完成 - 强度降至0
|
||||||
|
电刺激已停止
|
||||||
|
```
|
||||||
|
|
||||||
|
## 参数调整
|
||||||
|
|
||||||
|
### 1. 修改时间分配
|
||||||
|
|
||||||
|
```c
|
||||||
|
// 修改为3秒缓进,4秒保持,3秒缓出
|
||||||
|
.ramp_up_time = 3, // 缓进时间:3秒
|
||||||
|
.hold_time = 4, // 保持时间:4秒
|
||||||
|
.ramp_down_time = 3, // 缓出时间:3秒
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 修改目标强度
|
||||||
|
|
||||||
|
```c
|
||||||
|
.intensity = 200, // 修改目标强度为200
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 禁用缓进缓出
|
||||||
|
|
||||||
|
```c
|
||||||
|
.enable_ramp = 0 // 禁用渐进控制,直接使用设定强度
|
||||||
|
```
|
||||||
|
|
||||||
|
## 优势特点
|
||||||
|
|
||||||
|
### 1. 用户体验
|
||||||
|
- 避免突然的强度变化
|
||||||
|
- 减少刺痛感
|
||||||
|
- 提供舒适的刺激体验
|
||||||
|
|
||||||
|
### 2. 安全性
|
||||||
|
- 渐进式强度控制
|
||||||
|
- 避免过度刺激
|
||||||
|
- 可控的强度范围
|
||||||
|
|
||||||
|
### 3. 灵活性
|
||||||
|
- 可调节的时间分配
|
||||||
|
- 可配置的目标强度
|
||||||
|
- 可启用的功能开关
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
|
||||||
|
### 1. 时间精度
|
||||||
|
- 确保2ms定时器正常工作
|
||||||
|
- 注意微秒计时器的溢出处理
|
||||||
|
- 验证步进间隔的计算准确性
|
||||||
|
|
||||||
|
### 2. 强度范围
|
||||||
|
- 强度值范围:0-255
|
||||||
|
- 避免超出硬件限制
|
||||||
|
- 考虑用户承受能力
|
||||||
|
|
||||||
|
### 3. 系统资源
|
||||||
|
- 缓进缓出处理在2ms中断中执行
|
||||||
|
- 保持中断处理简洁
|
||||||
|
- 避免影响其他功能
|
||||||
|
|
||||||
|
## 测试验证
|
||||||
|
|
||||||
|
### 1. 硬件测试
|
||||||
|
- 用示波器观察梯形波形
|
||||||
|
- 验证时间精度
|
||||||
|
- 检查强度变化平滑性
|
||||||
|
|
||||||
|
### 2. 软件测试
|
||||||
|
- 通过UART观察调试输出
|
||||||
|
- 确认阶段切换正确
|
||||||
|
- 验证强度计算准确
|
||||||
|
|
||||||
|
### 3. 功能验证
|
||||||
|
- 测试不同强度值
|
||||||
|
- 验证时间分配
|
||||||
|
- 确认循环工作正常
|
||||||
|
|
@ -0,0 +1,229 @@
|
||||||
|
# 缓进缓出功能说明(修正版)
|
||||||
|
|
||||||
|
## 问题分析
|
||||||
|
|
||||||
|
原始实现存在定时器冲突问题:
|
||||||
|
- 2ms定时器与1s定时器产生冲突
|
||||||
|
- 缓进缓出处理在2ms中断中执行,干扰了主循环的电刺激处理
|
||||||
|
- 导致在示波器上观察不到有效波形
|
||||||
|
|
||||||
|
## 解决方案
|
||||||
|
|
||||||
|
采用方波周期计数的方式实现缓进缓出,避免定时器冲突:
|
||||||
|
|
||||||
|
### 1. 计算原理
|
||||||
|
|
||||||
|
根据您的分析:
|
||||||
|
- 每个方波周期:100微秒
|
||||||
|
- 2秒内方波周期数:2,000,000 ÷ 100 = 20,000个
|
||||||
|
- 强度从0增加到128,需要128个步进
|
||||||
|
- 每个步进的方波周期数:20,000 ÷ 128 ≈ 156.25个
|
||||||
|
|
||||||
|
### 2. 实现方式
|
||||||
|
|
||||||
|
```c
|
||||||
|
// 计算每个强度步进需要的方波周期数
|
||||||
|
uint32_t waves_per_step = (g_ems_config.ramp_up_time * 20000) / g_ems_config.intensity;
|
||||||
|
// 例如:2秒 × 20000 ÷ 128 = 156.25个方波周期
|
||||||
|
```
|
||||||
|
|
||||||
|
## 核心变量
|
||||||
|
|
||||||
|
```c
|
||||||
|
// 缓进缓出控制变量
|
||||||
|
static volatile uint16_t g_current_intensity = 0; // 当前强度
|
||||||
|
static volatile uint8_t g_ramp_phase = 0; // 渐进阶段:0=缓进, 1=保持, 2=缓出
|
||||||
|
static volatile uint32_t g_wave_counter = 0; // 方波周期计数器
|
||||||
|
static volatile uint32_t g_ramp_step_counter = 0; // 缓进步进计数器
|
||||||
|
```
|
||||||
|
|
||||||
|
## 工作流程
|
||||||
|
|
||||||
|
### 1. 缓进阶段(0-2秒)
|
||||||
|
```c
|
||||||
|
case 0: // 缓进阶段
|
||||||
|
if (g_ramp_step_counter < g_ems_config.ramp_up_time) {
|
||||||
|
// 每156个方波周期增加1个强度单位
|
||||||
|
if (g_wave_counter >= waves_per_step) {
|
||||||
|
g_wave_counter = 0; // 重置方波计数器
|
||||||
|
if (g_current_intensity < g_ems_config.intensity) {
|
||||||
|
g_current_intensity++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g_ramp_step_counter++;
|
||||||
|
} else {
|
||||||
|
// 缓进完成,进入保持阶段
|
||||||
|
g_ramp_phase = 1;
|
||||||
|
g_ramp_step_counter = 0;
|
||||||
|
g_current_intensity = g_ems_config.intensity;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 保持阶段(2-8秒)
|
||||||
|
```c
|
||||||
|
case 1: // 保持阶段
|
||||||
|
if (g_ramp_step_counter < g_ems_config.hold_time) {
|
||||||
|
// 保持最大强度
|
||||||
|
g_current_intensity = g_ems_config.intensity;
|
||||||
|
g_ramp_step_counter++;
|
||||||
|
} else {
|
||||||
|
// 保持完成,进入缓出阶段
|
||||||
|
g_ramp_phase = 2;
|
||||||
|
g_ramp_step_counter = 0;
|
||||||
|
g_wave_counter = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 缓出阶段(8-10秒)
|
||||||
|
```c
|
||||||
|
case 2: // 缓出阶段
|
||||||
|
if (g_ramp_step_counter < g_ems_config.ramp_down_time) {
|
||||||
|
// 每156个方波周期减少1个强度单位
|
||||||
|
if (g_wave_counter >= waves_per_step) {
|
||||||
|
g_wave_counter = 0; // 重置方波计数器
|
||||||
|
if (g_current_intensity > 0) {
|
||||||
|
g_current_intensity--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
g_ramp_step_counter++;
|
||||||
|
} else {
|
||||||
|
// 缓出完成,停止电刺激
|
||||||
|
g_current_intensity = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
```
|
||||||
|
|
||||||
|
## 调用方式
|
||||||
|
|
||||||
|
缓进缓出处理函数在电刺激处理函数中调用:
|
||||||
|
|
||||||
|
```c
|
||||||
|
void EMS_Process(void)
|
||||||
|
{
|
||||||
|
if(g_ems_running) {
|
||||||
|
g_ems_count++;
|
||||||
|
|
||||||
|
// 处理缓进缓出控制
|
||||||
|
EMS_Process_Ramp();
|
||||||
|
|
||||||
|
// 使用当前缓进缓出的强度
|
||||||
|
uint16_t current_intensity = g_current_intensity;
|
||||||
|
|
||||||
|
// 生成方波信号
|
||||||
|
wavegen_driverA_sine_test(WAVE_GEN_DRVA_BLK0, current_intensity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 优势特点
|
||||||
|
|
||||||
|
### 1. 避免定时器冲突
|
||||||
|
- 不再使用2ms定时器进行缓进缓出控制
|
||||||
|
- 缓进缓出处理在电刺激处理函数中执行
|
||||||
|
- 确保时序一致性
|
||||||
|
|
||||||
|
### 2. 精确控制
|
||||||
|
- 基于方波周期计数,精度高
|
||||||
|
- 每156个方波周期调整一次强度
|
||||||
|
- 平滑的强度变化
|
||||||
|
|
||||||
|
### 3. 简单可靠
|
||||||
|
- 逻辑清晰,易于理解
|
||||||
|
- 不依赖复杂的定时器机制
|
||||||
|
- 调试方便
|
||||||
|
|
||||||
|
## 时间分配
|
||||||
|
|
||||||
|
### 完整周期(20秒)
|
||||||
|
1. **缓进阶段**:0-2秒,强度0→128
|
||||||
|
2. **保持阶段**:2-8秒,强度保持128
|
||||||
|
3. **缓出阶段**:8-10秒,强度128→0
|
||||||
|
4. **休息阶段**:10-20秒,强度保持0
|
||||||
|
|
||||||
|
### 强度变化
|
||||||
|
- **缓进**:每156个方波周期增加1个强度单位
|
||||||
|
- **保持**:稳定在最大强度128
|
||||||
|
- **缓出**:每156个方波周期减少1个强度单位
|
||||||
|
|
||||||
|
## 调试输出
|
||||||
|
|
||||||
|
系统会输出以下调试信息:
|
||||||
|
|
||||||
|
```
|
||||||
|
缓进缓出控制已启动 - 缓进阶段开始
|
||||||
|
缓进 - 强度增加到: 1
|
||||||
|
缓进 - 强度增加到: 2
|
||||||
|
...
|
||||||
|
缓进完成 - 进入保持阶段, 强度: 128
|
||||||
|
保持完成 - 进入缓出阶段
|
||||||
|
缓出 - 强度降低到: 127
|
||||||
|
缓出 - 强度降低到: 126
|
||||||
|
...
|
||||||
|
缓出完成 - 强度降至0
|
||||||
|
电刺激已停止
|
||||||
|
```
|
||||||
|
|
||||||
|
## 参数配置
|
||||||
|
|
||||||
|
```c
|
||||||
|
EMS_Config_TypeDef ems_config = {
|
||||||
|
.frequency = 100, // 100Hz
|
||||||
|
.duration = 1000, // 1000ms
|
||||||
|
.intensity = 128, // 中等强度
|
||||||
|
.rest_time = 100, // 100ms休息时间
|
||||||
|
.silent_time = 50, // 50ms静默时间
|
||||||
|
|
||||||
|
// 缓进缓出控制参数
|
||||||
|
.ramp_up_time = 2, // 缓进时间:2秒
|
||||||
|
.hold_time = 6, // 保持时间:6秒
|
||||||
|
.ramp_down_time = 2, // 缓出时间:2秒
|
||||||
|
.enable_ramp = 1 // 启用渐进控制
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
## 测试验证
|
||||||
|
|
||||||
|
### 1. 硬件测试
|
||||||
|
- 用示波器观察梯形波形
|
||||||
|
- 验证缓进缓出的平滑性
|
||||||
|
- 检查时间精度
|
||||||
|
|
||||||
|
### 2. 软件测试
|
||||||
|
- 通过UART观察调试输出
|
||||||
|
- 确认强度变化正确
|
||||||
|
- 验证阶段切换正常
|
||||||
|
|
||||||
|
### 3. 功能验证
|
||||||
|
- 测试不同强度值
|
||||||
|
- 验证时间分配
|
||||||
|
- 确认循环工作正常
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
|
||||||
|
### 1. 方波周期
|
||||||
|
- 确保方波周期计算正确(100微秒)
|
||||||
|
- 验证方波计数器正常工作
|
||||||
|
- 注意计数器的溢出处理
|
||||||
|
|
||||||
|
### 2. 强度范围
|
||||||
|
- 强度值范围:0-255
|
||||||
|
- 避免超出硬件限制
|
||||||
|
- 考虑用户承受能力
|
||||||
|
|
||||||
|
### 3. 系统资源
|
||||||
|
- 缓进缓出处理在电刺激处理中执行
|
||||||
|
- 保持处理简洁高效
|
||||||
|
- 避免影响其他功能
|
||||||
|
|
||||||
|
## 总结
|
||||||
|
|
||||||
|
修正后的缓进缓出功能:
|
||||||
|
- 解决了定时器冲突问题
|
||||||
|
- 采用方波周期计数方式
|
||||||
|
- 实现了平滑的强度变化
|
||||||
|
- 提供了舒适的刺激体验
|
||||||
|
|
||||||
|
现在您应该能在示波器上观察到清晰的梯形波形了!
|
||||||
|
|
||||||
Loading…
Reference in New Issue