嗨,我需要通过基于中断配置 adc 通道 0 和 adc 通道 12 的 2 个 adc 通道,但
我没有得到两个通道的输出
1)
#include "sdk_project_config.h"
#include <字符串.h>
#include
#include
#include “interrupt_manager.h”
#include "helper_func
tions.h"
易失性 int exit_code = 0;
volatile bool adcConvDone;
易失性 uint16_t adcRawValue,adcRawValue1;
/* 用户包括 */
#define ADC_INSTANCE 0UL
#define ADC_CHN ADC_INPUTCHAN_EXT12
#define ADC_VREFH 5.0f
#define ADC_VREFL 0.0f
#define PDB_INSTANCE 0UL
#define PDLY_TIMEOUT 1000000UL
/*!
\brief 项目的主要功能。
\details 启动初始化顺序如下:
* - 启动 asm 例程
* - 主要的()
*/
void clock_pins_init(void)
{
CLOCK_DRV_Init(&clockMan1_InitConfig0);
PINS_DRV_Init(NUM_OF_CONFIGURED_PINS0,g_pin_mux_InitConfigArr0);
}
void ADC_IRQHandler(void)
{
/* 从 ADC 通道获取通道结果 */
ADC_DRV_GetChanResult(ADC_INSTANCE, 0U, (uint16_t *)&adcRawValue);
ADC_DRV_GetChanResult(ADC_INSTANCE, 1U, (uint16_t *)&adcRawValue1);
/* 设置ADC转换完成标志 */
adcConvDone = 真;
PDB_DRV_SoftTriggerCmd(PDB_INSTANCE);
}
void adc_init(void)
{
ADC_DRV_ConfigConverter(0, &adc0_conveter);
ADC_DRV_AutoCalibration(0);
ADC_DRV_ConfigChan(0, 0, &adc_config_1_ChnConfig0);
ADC_DRV_ConfigChan(0, 1, &adc_config_1_ChnConfig1);
INT_SYS_InstallHandler(ADC0_IRQn, &ADC_IRQHandler, (isr_t*) 0);
}
void pdc_config(void)
{
uint32_t 延迟;
如果 (!calculateIntValue(&pdb_config_1_timerConfig0, PDLY_TIMEOUT, &delay))
{
/* 停止应用程序流 */
同时(1);
}
PDB_DRV_Init(0, &pdb_config_1_timerConfig0);
PDB_DRV_Enable(0);
PDB_DRV_ConfigAdcPreTrigger(0, 0, &pdb_config_1_adcTrigConfig0);
PDB_DRV_ConfigAdcPreTrigger(0, 0, &pdb_config_1_adcTrigConfig0);
PDB_DRV_SetTimerModulusValue(0,(uint32_t)延迟);
PDB_DRV_SetAdcPreTriggerDelayValue(0, 0, 0, 延迟);
PDB_DRV_SetAdcPreTriggerDelayValue(0, 1, 1, 延迟);
PDB_DRV_LoadValuesCmd(PDB_INSTANCE);
PDB_DRV_SoftTriggerCmd(PDB_INSTANCE);
/* 启用 ADC 1 中断 */
INT_SYS_EnableIRQ(ADC0_IRQn);
}
int 主要(无效)
{
/* 在这里写你的代码 */
clock_pins_init();
adc_init();
pdc_config();
同时(1);
}
/* 结束主要 */
/*!
** @}
*/
2)
#include "sdk_project_config.h"
#include <字符串.h>
#include
#include
#include “interrupt_manager.h”
#include "helper_functions.h"
易失性 int exit_code = 0;
volatile bool adcConvDone;
易失性 uint16_t adcRawValue,adcRawValue1;
/* 用户包括 */
#define ADC_INSTANCE 0UL
#define ADC_CHN ADC_INPUTCHAN_EXT12
#define ADC_VREFH 5.0f
#define ADC_VREFL 0.0f
#define PDB_INSTANCE 0UL
#define PDLY_TIMEOUT 1000000UL
/*!
\brief 项目的主要功能。
\details 启动初始化顺序如下:
* - 启动 asm 例程
* - 主要的()
*/
void clock_pins_init(void)
{
CLOCK_DRV_Init(&clockMan1_InitConfig0);
PINS_DRV_Init(NUM_OF_CONFIGURED_PINS0,g_pin_mux_InitConfigArr0);
}
void ADC_IRQHandler(void)
{
/* 从 ADC 通道获取通道结果 */
ADC_DRV_GetChanResult(ADC_INSTANCE, 0U, (uint16_t *)&adcRawValue);
ADC_DRV_GetChanResult(ADC_INSTANCE, 1U, (uint16_t *)&adcRawValue1);
/* 设置ADC转换完成标志 */
adcConvDone = 真;
}
void adc_init(void)
{
ADC_DRV_ConfigConverter(0, &adc0_conveter);
ADC_DRV_AutoCalibration(0);
ADC_DRV_ConfigChan(0, 0, &adc_config_1_ChnConfig0);
ADC_DRV_ConfigChan(0, 1, &adc_config_1_ChnConfig1);
INT_SYS_InstallHandler(ADC0_IRQn, &ADC_IRQHandler, (isr_t*) 0);
}
void pdc_config(void)
{
uint32_t 延迟=1;
如果 (!calculateIntValue(&pdb_config_1_timerConfig0, PDLY_TIMEOUT, &delay))
{
/* 停止应用程序流 */
同时(1);
}
PDB_DRV_Init(0, &pdb_config_1_timerConfig0);
PDB_DRV_Enable(0);
PDB_DRV_ConfigAdcPreTrigger(0, 0, &pdb_config_1_adcTrigConfig0);
PDB_DRV_ConfigAdcPreTrigger(0, 1, &pdb_config_1_adcTrigConfig1);
PDB_DRV_SetTimerModulusValue(0,(uint32_t)延迟);
PDB_DRV_SetAdcPreTriggerDelayValue(0, 0, 0, (uint32_t)delay);
PDB_DRV_LoadValuesCmd(PDB_INSTANCE);
PDB_DRV_SoftTriggerCmd(PDB_INSTANCE);
/* 启用 ADC 1 中断 */
INT_SYS_EnableIRQ(ADC0_IRQn);
}
int 主要(无效)
{
/* 在这里写你的代码 */
clock_pins_init();
adc_init();
pdc_config();
而(1)
{
如果(adcConvDone == 真)
{
adcConvDone = false;
PDB_DRV_SoftTriggerCmd(PDB_INSTANCE);
}
}
}
/* 结束主要 */
/*!
** @}
*/