工具/软件:Code Composer Studio
我正在努力将 main.c 分解成可管理的模块、并在 main.c 编译和链接中正确执行函数。 如果我创建另一个.c 文件、例如 myspi.c、并将一些 map_xxx()调用移动到其中的函数、则 所有 map_xxx()引用都会出现"隐式声明函数"错误。
为了创建一个最小值、我从构建中排除了 mySPI.c、并在 main.c 的末尾添加了以下内容
void mySPI_Init (void)
{
MAP_SPI_enableModule (EUSCI_B0_BASE);
}
我仍然以隐式方式声明函数。 令人惊奇的是,我从 main()发出完全相同的调用,如果我注释掉 mySPI()函数,它不会出现此错误!
下面是 main.c:
//
/*
*
*计时器(1MHz)触发转换序列(ADC14、4、5、6)、其中每个转换序列
*序列中的转换是手动触发的、采样保持时间也是如此
*是负占空比的函数。
*脉冲采样模式下 ADC14的时序:
*采样保持:由计时器5个周期定义(计时器源为 TACLK、24MHz)
*同步:2周期(25MHz)
*转换:16个周期(25MHz)
*内存传输:1个周期(25MHz)
*
* ADC 触发 DMA、将数据从 ADCMEM 移动到数组
*内存。
*
*
//#include
#include
#include
/*标准包括*/
#include
#include
void mySPI_Init (void);
/*静态*/
静态易失性 uint8_t transmitData = 0x01、receiveData = 0x00;
/* SPI 从器件配置参数*/
const eUSCI_SPI_SlaveConfig spiSlaveConfig =
{
EUSCI_B_SPI_MSB_FIRST、// MSB 优先
EUSCI_B_SPI_PHASE_DATA_Changed_ONFIRST_Captured_On_Next、//相位
EUSCI_B_SPI_CLOCKPOLARITY_INACTION_HIGH、//正常极性
EUSCI_B_SPI_3引脚// 3线模式
};
//#define 权变措施
/*时钟系统频率*/
#define MCLK_FREQUENCY 48000000
#define SMCLK_FREQUENCY 24000000
#define SAPESS_PER_ADC_SCAN 3 //在1个"扫描"中采集的 ADC 样本数(每次扫描3个样本)。
#define NUMBER_ON_ADC_SCANS_DMAED 64 //待执行 DMA 的"扫描数"。
#define ADC_tasks (number_of _ADC_scanses_DMAED + 2)//我们还有2个 DMA 任务比"扫描"多。 一种是触发中断、最后一种是在乒乓 DMA 任务列表之间切换。
#define DMA_channel 7.
// ADC DMA 的目标缓冲区
uint32_t dataset_01[number_of _adc_scans_DMAED][samples_per_adc_scan];
uint32_t dataset_02[number_of _adc_scans_DMAED][samples_per_adc_scan];
uint32_t (*数据集_P)[samples_per_adc_scan];//指向上述内容之一的指针
/* DMA 控制表*/
#if defined (__TI_Compiler_version__)
#pragma DATA_ALIGN (MSP_EXP432P401RLP_DMAControlTable、1024)
#Elif defined (_IAR_systems_icc_)
#pragma DATA_alignment=1024
#Elif defined (_GNU_)
__attribute__((对齐(1024)))
#Elif defined (_CC_ARM)
_align (1024)
#endif
静态 DMA_ControlTable MSP_EXP432P401RLP_DMAControlTable[16];// 8主和8备用
const uint8_t forceP1B2ISR = 0x04;// P1.2为高电平
const uint8_t forceP1B3ISR = 0x08;// P1.3为高电平
/*
* TA0 PWM 配置
*用于触发 ADC 的计时器
* SMCLK -> SMCLK_FREQUENCY
*采样频率-> SAMPLE_FREQUENCY
*
#define SAMPLE_AND_HOLD_CYCLES 5
//#define TIMER_A_CYCLESS_PER_SAMPLE_PERIOD 24 // 24/24000000 = 1MHz
#define TIMER_A_CYCESS_PER_SAMPLE_PERIOD 40 // 40/24000000 = 600kHz
//这适用于每秒600、000个样本、具有5周期采样保持时间
CONST Timer_A_PWMConfig pwmConfig =
{
Timer_A_CLOCKSOURCE_SMCLK、// 24MHz
Timer_A_CLOCKSOURCE_divider _1、//
(TIMER_A_CYCESS_PER_SAMPLE_PERIOD - 1)、//(SAMPLE_PERIOD - 1)+ 1 =实际周期、
Timer_A_CAPTURECOMPARE 寄存器_1、// CCR1中定义的占空比
Timer_A_OUTPUTMODE_SET_RESET、
(timer_a_cycles _per_sample_period - sample_and_hold_cycles)//负占空比是最后5个周期、即采样保持时间。
};
// P1.5 = UCB0CLK
// P1.6 = UCB0SIMO =从器件输入、主器件输出
// P1.7 = UCB0SOMI =从器件输出、主器件输入
/* SPI 主配置参数*/
const eUSCI_SPI_MasterConfig spiMasterConfig =
{
EUSCI_B_SPI_CLOCKSOURCE_SMCLK、// SMCLK 时钟源
SMCLK_FREQUENCY、// SMCLK = DCO = 24MHZ
24000000、// SPICLK = 24MHz
EUSCI_B_SPI_MSB_FIRST、// MSB 优先
EUSCI_B_SPI_PHASE_DATA_Changed_ONFIRST_Captured_On_Next、//相位
EUSCI_B_SPI_CLOCKPOLARITY_INACTION_HIGH、//高极性
EUSCI_B_SPI_3引脚// 3线 SPI 模式
};
// DMA 任务结构
DMA_ControlTable pingTask;
DMA_ControlTable pongTask;
bool dataSet0Ready;
/*
*
*
#define ADC_UDMA_SIZE UDMA_SIZE_32 // UDMA_SIZE_16
#define ADC_UDMA_DST_INC UDMA_DST_INC_32 // UDMA_DST_INC_16
#define ADC_UDMA_SOURCE_ADDRESS ((void*)&ADC14->MEM[0])//((void*)&ADC14->MEM[0]+ 2)
const DMA_ControlTable AdcDmaSeq_01[ADC_tasks]=
{
//每3个 ADC 多次采样1个 DMA
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[1][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[2][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[3][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[4][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[5][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[6][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[7][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[8][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[9][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[10][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[11][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[12][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[13][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[14][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[15][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[16][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[17][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[18][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[19][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[20][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[21][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[22][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[23][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[24][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[25][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[26][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[27][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[28][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[29][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[30][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[31][0]、UDMA_ARB_1、UDMA_MODE_MEM_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[32][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[33][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[34][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[35][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[36][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[37][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[38][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[39][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[40][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[41][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[42][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[43][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[44][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[45][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[46][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[47][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[48][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[49][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[50][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[51][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[52][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[53][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[54][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[55][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[56][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[57][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[58][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[59][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[60][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[61][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[62][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_01[63][0]、UDMA_ARB_1、UDMA_MODE_MEM_散 射收集)、
//端口1位2 ISR;用于在完成组操作时发出通知。
DMA_TaskStructEntry (1、UDMA_SIZE_8、UDMA_SRC_INC_8、(空*)&forceP1B2ISR、UDMA_DST_INC_8、 (void *)&P1->OUT、UDMA_ARB_1、UDMA_MODE_MEM_散 射_收集)、
//作为最后一步,将"Pong"任务移入 DMA 控制表的相应插槽(DMA_channel)中。
// 4个32位移动= 16字节= sizeof (struct dma_ControlTable)
DMA_TaskStructEntry (4、UDMA_SIZE_32、UDMA_SRC_INC_32、(空*)&pongTask、UDMA_DST_INC_32、 (void *)&MSP_EXP432P401RLP_DMAControlTable[DMA_CHANGE]、UDMA_ARB_4、UDMA_MODE_MEM_SP散 射_收集)
};
const DMA_ControlTable AdcDmaSeq_02[ADC_tasks]=
{
//每3个 ADC 多次采样1个 DMA
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[0][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[1][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[2][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[3][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[4][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[5][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[6][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[7][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[8][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[9][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[10][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[11][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[12][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[13][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[14][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[15][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[16][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[17][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[18][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[19][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[20][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[21][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[22][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[23][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[24][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[25][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[26][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[27][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[28][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[29][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[30][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[31][0]、UDMA_ARB_1、UDMA_MODE_MEM_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[32][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[33][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[34][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[35][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[36][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[37][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[38][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[39][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[40][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[41][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[42][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[43][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[44][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[45][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[46][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[47][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[48][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[49][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[50][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[51][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[52][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[53][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[54][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[55][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[56][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[57][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[58][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[59][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[60][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[61][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[62][0]、UDMA_ARB_1、UDMA_MODE_PER_散 射收集)、
DMA_TaskStructEntry (3、ADC_UDMA_SIZE、UDMA_SRC_INC_32、ADC_UDMA_SOURC_ADDRESS、ADC_UDMA_DST_INC、 &datase_02[63][0]、UDMA_ARB_1、UDMA_MODE_MEM_散 射收集)、
//端口1位3 ISR;用于在完成组操作时发出通知。
DMA_TaskStructEntry (1、UDMA_SIZE_8、UDMA_SRC_INC_8、(空*)&forceP1B3ISR、UDMA_DST_INC_8、 (void *)&P1->OUT、UDMA_ARB_1、UDMA_MODE_MEM_散 射_收集)、
//作为最后一步,将“Ping”任务移到 DMA 控制表的相应插槽(DMA_CHANNEL)中。
// 4个32位移动= 16字节= sizeof (struct dma_ControlTable)
DMA_TaskStructEntry (4、UDMA_SIZE_32、UDMA_SRC_INC_32、(空*)&pingTask、UDMA_DST_INC_32、 (void *)&MSP_EXP432P401RLP_DMAControlTable[DMA_CHANGE]、UDMA_ARB_4、UDMA_MODE_MEM_SP散 射_收集)
};
int main (空)
{
// uint32_t srcIncrement = uDMA_SRC_INC_32;
// void *srcAddr = 0;
// uint32_t transferCount = 3;
//
// void *r =(((srcIncrement)== UDMA_SRC_INC_NONE)? (void *)(srcAddr):\
//((void *)(&((uint8_t *)(srcAddr))[((transferCount)<<((srcIncrement)>> 26))- 1]);
volatile uint32_t i;
volatile uint32_t j;
//停止 WDT
MAP_WDT_A_HOLDTimer();
/*
*修订版 C 芯片在48Mhz 时支持1的等待状态
*
MAP_PCM_setCoreVoltageLevel (PCM_VCORE1);
MAP_FlashCtl_setWaitState (FLASH_BANK0、1);
MAP_FlashCtl_setWaitState (FLASH_BANK1、1);
/*
*设置时钟
* MCLK = MCLK = 48MHz
* SMCLK = MCLK/2 = 24MHz
* ACLK = REFO = 32kHz
*
MAP_CS_setDCOFrequency (48000000);
MAP_CS_initClockSignal (CS_ACLK、CS_REFOCLK_SELECT、CS_CLOCK_DELUGER_1);
MAP_CS_initClockSignal (CS_SMCLK、CS_DCOCLK_SELECT、CS_CLOCK_DIVIDER_2);
MAP_CS_initClockSignal (CS_MCLK、CS_DCOCLK_SELECT、CS_CLOCK_DIVIDER_1);
/*
*调试、
*输出 TA0.1
*
P2->DIR |=(BIT4);
P2->SEL0 |= BIT4;
P2->SEL1 &=~BIT4;
/*将 P1.0配置为调试输出*/
MAP_GPIO_setAsOutputPin (GPIO_PORT_P1、GPIO_PIN0);
MAP_GPIO_setOutputLowOnPin (GPIO_PORT_P1、GPIO_PIN0);
/*
*非传统使用 P1.2和 P1.3作为"内部"中断
*从 DMA 触发。
*
MAP_GPIO_setOutputLowOnPin (GPIO_PORT_P1、(GPIO_PIN2 + GPIO_PIN3));
MAP_GPIO_setAsOutputPin (GPIO_PORT_P1、(GPIO_PIN2 + GPIO_PIN3));
MAP_GPIO_interruptEdgeSelect (GPIO_PORT_P1、(GPIO_PIN2 + GPIO_PIN3)、GPIO_LOW_TO_HIGH_TRANSITION);
MAP_GPIO_clearInterruptFlag (GPIO_PORT_P1、(GPIO_PIN2 + GPIO_PIN3));
MAP_GPIO_enableInterrupt (GPIO_PORT_P1、(GPIO_PIN2 + GPIO_PIN3));
/*在 SPI 模式下选择 P1.5 P1.6和 P1.7 */
MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P1、GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7、GPIO_PRIMARY_MODULE_FUNCTION);
/*配置 P2.0、P2.1和 P2.2进行调试*/
MAP_GPIO_setAsOutputPin (GPIO_PORT_P2、GPIO_PIN0|GPIO_PIN1|GPIO_PIN2);
MAP_GPIO_setOutputLowOnPin (GPIO_PORT_P2、GPIO_PIN0|GPIO_PIN1|GPIO_PIN2);
/*配置模拟输入(P5.5=A0、P5.4=A1、P5.3=A2)*/
MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P5、GPIO_PIN5 | GPIO_PIN4 | GPIO_PIN3、GPIO_TIVE_MODULE_Function);
/*
*初始化 ADC (ADCOSC/1/1)
* 25MHz
*
MAP_ADC14_enableModule();
MAP_ADC14_initModule (ADC_CLOCKSOURCE_ADCOSC、ADC_PREDIVIDER_1、ADC_DIVIDER_1、0);
/*使用内部2.5V 基准配置 ADC 存储器(ADC_MEM0 - ADC_MEM4 (A4 - A6)*
MAP_ADC14_configureMultiSequenceMode (ADC_MEM0、ADC_MEM2、TRUE);
// map_ADC14_configureConversionMemory (ADC_MEM0、ADC_VREFPOS_AVCC_VREFNEG_VSS、ADC_INPUT_A4、ADC_NONDIFFERENTIAL 输入);
// map_ADC14_configureConversionMemory (ADC_MEM1、ADC_VREFPOS_AVCC_VREFNEG_VSS、ADC_INPUT_A5、ADC_NONDIFFERENTIAL 输入);
// map_ADC14_configureConversionMemory (ADC_MEM2、ADC_VREFPOS_AVCC_VREFNEG_VSS、ADC_INPUT_A6、ADC_NONDIFFERENTIAL 输入);
MAP_ADC14_CONFIGureConversionMemory (ADC_MEM0、ADC_VREFPOS_AVCC_VREFNEG_VSS、ADC_INPUT_A0、ADC_NONDIFFERENTIAL 输入);
MAP_ADC14_CONFIGureConversionMemory (ADC_MEM1、ADC_VREFPS_AVCC_VREFNEG_VSS、ADC_INPUT_A1、ADC_NONDIFFERENTIAL 输入);
MAP_ADC14_CONFIGureConversionMemory (ADC_MEM2、ADC_VREFPS_AVCC_VREFNEG_VSS、ADC_INPUT_A2、ADC_NONDIFFERENTIAL 输入);
/*
*将样本触发器配置为来自 Timer_A0 CCR1
*并将其设置为触发后的自动迭代
*
MAP_ADC14_setSampleHoldTrigger (ADC_TRIGGER_SOURCE1、false);
/*
*禁用采样计时器(默认)、使用脉冲模式。
*
MAP_ADC14_disableSampleTimer();
MAP_ADC14_enableConversion();
/*配置 DMA 模块*/
map_dma_enableModule();
MAP_DMA_setControlBase (MSP_EXP432P401RLP_DMAControlTable);
/*正在禁用信道属性*/
MAP_DMA_disableChannelAttribute (DMA_CH7_ADC14、UDMA_ATTR_USEBURST | UDMA_ATTR_HIGH_PRIOR| UDMA_ATTR_REQMASK);
//加载"Pong"任务。
MAP_DMA_setChannelScatterGather (DMA_CH7_ADC14、ADC_tasks、(void*)&AdcDmaSeq_02[0]、true);
pongTask = MSP_EXP432P401RLP_DMAControlTable[DMA_CHANGE];
//加载“Ping”任务。
MAP_DMA_setChannelScatterGather (DMA_CH7_ADC14、ADC_tasks、(void*)&AdcDmaSeq_01[0]、true);
pingTask = MSP_EXP432P401RLP_DMAControlTable[DMA_CHANGE];
MAP_DMA_赋 值通道(DMA_CH7_ADC14);
MAP_DMA_enableChannel (DMA_CHANNEL);
/*
*
*
//SPI_Init();
/*在3线主控模式下配置 SPI */
MAP_SPI_initMaster (EUSCI_B0_BASE、&spiMasterConfig);
/*启用 SPI 模块*/
MAP_SPI_enableModule (EUSCI_B0_BASE);
MAP_Interrupt_disableSlepOnIsrExit();
MAP_Interrupt_enableInterrupt (INT_Port1);
MAP_Interrupt_enableMaster();
/*
*启动计时器
*在连续模式下配置 Timer_A、并以 SMCLK 为源
*
MAP_Timer_A_generatePWM (TIMER_A0_BASE、&pwmConfig);
while (1)
{
MAP_PCM_gotoLPM0 ();
//建立指向当前工作缓冲区的指针
IF (dataSet0Ready)
{
// P2->OUT |= BIT0;
Data集_P = Data集_01;
}
其他
{
// P2->OUT &=~BIT0;
Data集_P = Data集_02;
}
//循环浏览电流缓冲器的所有样本
(i=0;<NUMBER_OF_ADC_SCANS_DMAED; i++)
{
对于(j=0、<SAMPLES_PER_ADC_SCAN; j++)
{
//这样,当我们有足够有趣的样本(>10000)时,我们就可以关闭 DMA,然后在它之后设置一个断点
//查看我们是否有足够大的样本,以便在信号打开时使用
if (dataset_P[i][j]> 10000)
{
MAP_DMA_disableChannel (DMA_CHANNEL);//停止 DMA、因此它不会单步处理我们拥有的"有趣"数据
继续;//在此处放置断点以查看 dataset_01[]中的有趣数据,例如,View|Memory Browser|Save Memory (文件:DELETEME.csv;)
}
//这会将数据转换到 SPI 总线上,但速度不够快
while (!(EUSCI_B0->IFG 和 EUSCI_B_IFG_TXIFG0));
EUSCI_B0->TXBUF =(uint8_t) dataset_P[i][j];//低位字节
while (!(EUSCI_B0->IFG 和 EUSCI_B_IFG_TXIFG0));
EUSCI_B0->TXBUF =(uint8_t)(dataset_P[i][j]>8);//高位字节
}
}
}
}
#if __TI_Compiler_version__>=15009000
__attribute__( ramfunc ))
#endif
空 Port1_IRQHandler (空)
{
uint32_t status;
//调试
// P2->OUT |= BIT1;
STATUS = MAP_GPIO_getEnabledInterruptStatus (GPIO_PORT_P1);
MAP_GPIO_clearInterruptFlag (GPIO_PORT_P1、状态);
如果(STATUS = GPIO_PIN2)
{
MAP_GPIO_setOutputLowOnPin (GPIO_PORT_P1、GPIO_PIN2);
dataSet0Ready = true;
}
如果(状态= GPIO_PIN3)
{
MAP_GPIO_setOutputLowOnPin (GPIO_PORT_P1、GPIO_PIN3);
dataSet0Ready = false;
}
//调试
// P2->OUT &=~BIT1;
}
void mySPI_Init (void)
{
//////*在 SPI 模式下选择 P1.1 P1.2和 P1.3 */
// Map_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P1、GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7、GPIO_PRIMARY_MODULE_Function);
//
////////*初始化从器件到 MSB 优先、非活动高时钟极性和
//* 3线 SPI */
// Map_SPI_initSlave (EUSCI_B0_BASE、&spiSlaveConfig);
/*启用 SPI 模块*/
MAP_SPI_enableModule (EUSCI_B0_BASE);
///*启用接收中断*/
// Map_SPI_enableInterrupt (EUSCI_B0_BASE、EUSCI_B_SPI_Receive_interrupt);
//// Interrupt_enableSlepOnIsrExit();
// Map_Interrupt_enableInterrupt (INT_EUSCIB0);
//
// Map_Interrupt_enableMaster ();
//// PCM_gotoLPM0 ();
//
}
///
////
//////这是 EUSCI_B0中断矢量服务例程。
////
///
//#if __TI_Compiler_version__>=15009000
//__attribute__(( ramfunc ))
//#endif
//void EUSCIB0_IRQHandler (void)
//{
// uint32_t status;
//
// status = Map_SPI_getEncableInterruptStatus (EUSCI_B0_BASE);
// Map_SPI_clearInterruptFlag (EUSCI_B0_BASE、STATUS);
//
// if (status & EUSCI_B_SPI_Receive_interrupt)
//{
///* USCI_B0 TX 缓冲器准备好了吗? *
// while (!(Map_SPI_getInterruptStatus (EUSCI_B0_BASE、EUSCI_B_SPI_Transmit _interrupt)));
//
///*将数据发送到主设备*/
// Map_SPI_transmitData (eUSCI_B0_BASE、transmitData++);
//
/////从主设备接收数据
// receiveData = Map_SPI_receiveData (EUSCI_B0_BASE);
//}
//}