MAP_ADC14_configureConversionMemory
时间: 2023-12-09 08:05:04 浏览: 33
MAP_ADC14_configureConversionMemory函数用于配置ADC14的转换存储器。它的原型如下:
```c
void MAP_ADC14_configureConversionMemory(uint32_t memoryIndex, uint32_t refSelect, uint32_t channelSelect, bool differntialMode);
```
参数解释如下:
- `memoryIndex`:转换存储器的索引,取值范围为0到31。
- `refSelect`:参考电压选择,可以是以下值之一:`ADC_VREFPOS_AVCC_VREFNEG_VSS`、`ADC_VREFPOS_EXTPOS_VREFNEG_EXTNEG`、`ADC_VREFPOS_EXTPOS_VREFNEG_AVSS`、`ADC_VREFPOS_EXTBUF_VREFNEG_EXTNEG`。
- `channelSelect`:通道选择,可以是以下值之一:`ADC_MEM0`、`ADC_MEM1`、`ADC_MEM2`、...、`ADC_MEM31`。
- `differentialMode`:差分模式选择,可以是true或false。
该函数用于配置ADC14的转换存储器,以便进行后续的模数转换操作。根据给定的参数,它可以配置参考电压、选择转换通道,并选择是否使用差分模式进行转换。
注意:以上是我基于C语言的理解,具体实现可能与上述描述有所不同。请参考相关文档或API参考手册以获取更准确的信息。
相关问题
void light_init(void) { MAP_WDT_A_holdTimer();//关闭看门狗 curADCResult = 0;//参数初始化 //配置Flash MAP_FlashCtl_setWaitState(FLASH_BANK0, 2); MAP_FlashCtl_setWaitState(FLASH_BANK1, 2); //设置DCO 为48MHz MAP_PCM_setPowerState(PCM_AM_LDO_VCORE1); //MAP_CS_setDCOCenteredFrequency(CS_DCO_FREQUENCY_48); //使能FPU,进行小数点运算 MAP_FPU_enableModule(); MAP_FPU_enableLazyStacking(); //从这里开始配置ADC MAP_ADC14_enableModule(); //时钟配置 MAP_ADC14_initModule(ADC_CLOCKSOURCE_MCLK, ADC_PREDIVIDER_1, ADC_DIVIDER_4, 0); //MAP_ADC14_initModule(ADC_CLOCKSOURCE_ACLK,0,0,0); //GPIO配置,将P5.5配置为ADC输入 MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5 , GPIO_PIN5, GPIO_TERTIARY_MODULE_FUNCTION); //配置ADC存储器、通道、采样方式 MAP_ADC14_configureSingleSampleMode(ADC_MEM0, true); MAP_ADC14_configureConversionMemory(ADC_MEM0, ADC_VREFPOS_AVCC_VREFNEG_VSS, ADC_INPUT_A0, false); //配置采样定时器 MAP_ADC14_enableSampleTimer(ADC_MANUAL_ITERATION); //使能转换 MAP_ADC14_enableConversion(); MAP_ADC14_toggleConversionTrigger(); //中断配置 MAP_ADC14_enableInterrupt(ADC_INT0); MAP_Interrupt_enableInterrupt(INT_ADC14); MAP_Interrupt_enableMaster(); } void ADC14_IRQHandler(void) { uint64_t status = MAP_ADC14_getEnabledInterruptStatus(); MAP_ADC14_clearInterruptFlag(status);//清除中断标志 if (ADC_INT0 & status) { curADCResult = MAP_ADC14_getResult(ADC_MEM0);//得到ADC转结果 normalizedADCRes = (curADCResult * 3.3) / 16384;//结果转换为电压 //printf("%d\n", normalizedADCRes); //printf("%f\n", normalizedADCRes); //printf("%f\n", 3.3); //printf("%d.%d\n", ???); MAP_ADC14_toggleConversionTrigger();//手动开启ADC转换 } } 请将它改为DCO为6MHz的msp432的代码
void light_init(void)
{
MAP_WDT_A_holdTimer(); //关闭看门狗
curADCResult = 0; //参数初始化
//配置Flash
MAP_FlashCtl_setWaitState(FLASH_BANK0, 2);
MAP_FlashCtl_setWaitState(FLASH_BANK1, 2);
//设置DCO为6MHz
MAP_CS_setDCOCenteredFrequency(CS_DCO_FREQUENCY_6);
//使能FPU,进行小数点运算
MAP_FPU_enableModule();
MAP_FPU_enableLazyStacking();
//从这里开始配置ADC
MAP_ADC14_enableModule();
//时钟配置
MAP_ADC14_initModule(ADC_CLOCKSOURCE_MCLK, ADC_PREDIVIDER_1, ADC_DIVIDER_4, 0);
//GPIO配置,将P5.5配置为ADC输入
MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5, GPIO_PIN5, GPIO_TERTIARY_MODULE_FUNCTION);
//配置ADC存储器、通道、采样方式
MAP_ADC14_configureSingleSampleMode(ADC_MEM0, true);
MAP_ADC14_configureConversionMemory(ADC_MEM0, ADC_VREFPOS_AVCC_VREFNEG_VSS, ADC_INPUT_A0, false);
//配置采样定时器
MAP_ADC14_enableSampleTimer(ADC_MANUAL_ITERATION);
//使能转换
MAP_ADC14_enableConversion();
MAP_ADC14_toggleConversionTrigger();
//中断配置
MAP_ADC14_enableInterrupt(ADC_INT0);
MAP_Interrupt_enableInterrupt(INT_ADC14);
MAP_Interrupt_enableMaster();
}
void ADC14_IRQHandler(void)
{
uint64_t status = MAP_ADC14_getEnabledInterruptStatus();
MAP_ADC14_clearInterruptFlag(status); //清除中断标志
if (ADC_INT0 & status)
{
curADCResult = MAP_ADC14_getResult(ADC_MEM0); //得到ADC转结果
normalizedADCRes = (curADCResult * 3.3) / 16384; //结果转换为电压
//printf("%d\n", normalizedADCRes);
//printf("%f\n", normalizedADCRes);
//printf("%f\n", 3.3);
//printf("%d.%d\n", ???);
MAP_ADC14_toggleConversionTrigger(); //手动开启ADC转换
}
}
MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5, GPIO_PIN5 | GPIO_PIN4, GPIO_TERTIARY_MODULE_FUNCTION); MAP_ADC14_configureMultiSequenceMode(ADC_MEM0, ADC_MEM1, true); //多通道配置 多次转化true MAP_ADC14_configureConversionMemory(ADC_MEM0, ADC_VREFPOS_INTBUF_VREFNEG_VSS, ADC_INPUT_A0, false); MAP_ADC14_configureConversionMemory(ADC_MEM1, ADC_VREFPOS_INTBUF_VREFNEG_VSS, ADC_INPUT_A1, false); MAP_ADC14_enableInterrupt(ADC_INT1);
这段代码是在使用 MSP432 微控制器的驱动库进行配置和初始化 ADC14 模块。让我逐行解释给您听:
1. `MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5, GPIO_PIN5 | GPIO_PIN4, GPIO_TERTIARY_MODULE_FUNCTION);`
这行代码将 P5.5 和 P5.4 引脚配置为 ADC14 输入模式,并将其设置为第三功能模块。
2. `MAP_ADC14_configureMultiSequenceMode(ADC_MEM0, ADC_MEM1, true);`
这行代码配置 ADC14 为多通道模式,可以进行多次转换。`ADC_MEM0` 和 `ADC_MEM1` 表示两个转换存储器,`true` 表示启用多通道模式。
3. `MAP_ADC14_configureConversionMemory(ADC_MEM0, ADC_VREFPOS_INTBUF_VREFNEG_VSS, ADC_INPUT_A0, false);`
这行代码配置 ADC14 的转换存储器 `ADC_MEM0`。`ADC_VREFPOS_INTBUF_VREFNEG_VSS` 表示使用内部缓冲器作为参考电压和地,`ADC_INPUT_A0` 表示选择 A0 引脚作为输入通道,`false` 表示禁用差分模式。
4. `MAP_ADC14_configureConversionMemory(ADC_MEM1, ADC_VREFPOS_INTBUF_VREFNEG_VSS, ADC_INPUT_A1, false);`
这行代码配置 ADC14 的转换存储器 `ADC_MEM1`。与上一行类似,这里选择的是 A1 引脚作为输入通道。
5. `MAP_ADC14_enableInterrupt(ADC_INT1);`
这行代码启用 ADC14 的中断功能,当转换完成时会触发 ADC_INT1 中断。
希望这能帮助您理解这段代码的作用。如果您有任何进一步的问题,请随时提问。