完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好,我想为我们的应用程序读取 24 个 ADC 通道,我尝试使用中断方法读取 2 个通道,即 pta0 和 ptc14,当我尝试配置超过 3 个通道时,它正在工作,我不知道如何确定可编程延迟 (pdb)
2 个通道工作正常,这意味着我收到了中断 PDB_DRV_SetAdcPreTriggerDelayValue(PDB_INSTANCE, 0UL, 0UL,(uint32_t) delayValue/2); PDB_DRV_SetAdcPreTriggerDelayValue(PDB_INSTANCE, 1UL, 0UL,(uint32_t) delayValue); 这是为 3 个通道配置的,我没有接收到中断 PDB_DRV_SettimerModulusValue(PDB_INSTANCE, (uint32_t) delayValue); PDB_DRV_SetAdcPreTriggerDelayValue(PDB_INSTANCE, 0UL, 0UL,(uint32_t) 0); PDB_DRV_SetAdcPreTriggerDelayValue(PDB_INSTANCE, 1UL, 0UL,(uint32_t) delayValue/3); 3通道的完整代码我没有收到中断 #include "sdk_project_config.h" #include “interrupt_manager.h” #include "helper_functions.h" volatile bool adcConvDone; 易失性 int exit_code = 0; /* 用户包括 */ #define PDB_INSTANCE 0 #define ADC_INSTANCE 0 #define PDLY_TIMEOUT 1000000UL IRQn_Type adcIRQ; /*! \brief 项目的主要功能。 \details 启动初始化顺序如下: * - 启动 asm 例程 * - 主要的() */ uint16_t adcRawValue,adcRawValue1,adcRawValue2; 静态标志 1、标志 2、标志 3、标志 4; void ADC_IRQHandler(void) { /* 从 ADC 通道获取通道结果 */ 如果 (ADC_DRV_GetConvCompleteFlag(0, 0)) { ADC_DRV_GetChanResult(ADC_INSTANCE, 0U, (uint16_t *)&adcRawValue); 标志 1=1; } 如果 (ADC_DRV_GetConvCompleteFlag(0, 1)) { ADC_DRV_GetChanResult(ADC_INSTANCE, 1U, (uint16_t *)&adcRawValue1); 标志2=1; } 如果(ADC_DRV_GetConvCompleteFlag(0、3)) { ADC_DRV_GetChanResult(ADC_INSTANCE, 1U, (uint16_t *)&adcRawValue2); 标志 4=1; } /* 设置ADC转换完成标志 */ 如果(标志 1 && 标志 2 && 标志 4) { 标志 1=0;标志 2=0;标志 3=1; PDB_DRV_SoftTriggerCmd(PDB_INSTANCE); } } void clock_pins(无效) { status_t 状态; status = CLOCK_DRV_Init(&clockMan1_InitConfig0); DEV_ASSERT(状态== STATUS_SUCCESS); /* 将引脚设置为 GPIO */ status = PINS_DRV_Init(NUM_OF_CONFIGURED_PINS0, g_pin_mux_InitConfigArr0); DEV_ASSERT(状态== STATUS_SUCCESS); } 无效 adc0(无效) { 开关(ADC_INSTANCE) { 案例 0UL: adcIRQ = ADC0_IRQn; 休息; 案例 1UL: adcIRQ = ADC1_IRQn; 休息; 默认: adcIRQ = ADC1_IRQn; 休息; } ADC_DRV_ConfigConverter(ADC_INSTANCE, &adc_config_1_ConvConfig0); ADC_DRV_AutoCalibration(ADC_INSTANCE); ADC_DRV_ConfigChan(ADC_INSTANCE, 0UL, &adc_config_1_ChnConfig1); ADC_DRV_ConfigChan(ADC_INSTANCE, 1UL, &adc_config_1_ChnConfig0); ADC_DRV_ConfigChan(ADC_INSTANCE, 2UL, &adc_config_1_ChnConfig2); INT_SYS_InstallHandler(adcIRQ, &ADC_IRQHandler, (isr_t*) 0); } 无效 pdb0(无效) { uint16_t 延迟值; 如果 (!calculateIntValue(&pdb_config_1_timerConfig0, PDLY_TIMEOUT, &delayValue)) { /* 停止应用程序流 */ 同时(1); } PDB_DRV_Init (PDB_INSTANCE, &pdb_config_1_timerConfig0); PDB_DRV_Enable(PDB_INSTANCE); PDB_DRV_ConfigAdcPreTrigger(PDB_INSTANCE, 0UL, &pdb_config_1_adcTrigConfig0); PDB_DRV_ConfigAdcPreTrigger(PDB_INSTANCE, 0UL, &pdb_config_1_adcTrigConfig1); PDB_DRV_ConfigAdcPreTrigger(PDB_INSTANCE, 0UL, &pdb_config_1_adcTrigConfig2); PDB_DRV_SetTimerModulusValue(PDB_INSTANCE, (uint32_t) delayValue); PDB_DRV_SetAdcPreTriggerDelayValue(PDB_INSTANCE, 0UL, 0UL,(uint32_t) 0); PDB_DRV_SetAdcPreTriggerDelayValue(PDB_INSTANCE, 1UL, 0UL,(uint32_t) delayValue/3); PDB_DRV_LoadValuesCmd(PDB_INSTANCE); PDB_DRV_SoftTriggerCmd(PDB_INSTANCE); /* 启用 ADC 1 中断 */ INT_SYS_EnableIRQ(adcIRQ); } int 主要(无效) { /* 在这里写你的代码 */ 时钟引脚(); adc0(); pdb0(); 而(1) { 如果(标志 3) { adcConvDone = false; PDB_DRV_SoftTriggerCmd(PDB_INSTANCE); } } 返回退出代码; } /* 结束主要 */ /*! ** @} */ |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
1944个成员聚集在这个小组
加入小组我的项目我做主,使用GN+Ninja来完成构建系统(VSCode开发RT106X)
36465 浏览 0 评论
NXP IMX8应用处理器快速入门必备:技巧、使用、设计指南
5332 浏览 1 评论
6140 浏览 1 评论
6839 浏览 0 评论
NXP i.MX6UL开发板(linux系统烧录+规格+硬件+模块移植)使用手册
4270 浏览 0 评论
666浏览 2评论
求助,S32G上Core M启动后如何让Core A在Flash指定位置加载uboot?
653浏览 2评论
ESP32-WROVER-IE + LAN8720以太网,GPIO0电压只有1.6v,无法正常进入spi flash boot模式如何解决?
659浏览 2评论
求分享适用于PN7160 Android的NFC工厂测试应用程序
750浏览 2评论
876浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-8 04:54 , Processed in 0.964881 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号