本文来源电子发烧友社区,作者:yjp, 帖子地址:https://bbs.elecfans.com/jishu_2293870_1_1.html
ADC例子如下
首先配置ADC,对ADC进行初始化。
作 用:配置ADC**********************/void ADC_Init(void){ EALLOW; AdcRegs.ADCCTL1.bit.ADCREFSEL = 0; /NT脉冲产生在ADC结果锁定到其结果寄存器之前发生一个周期/ AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1; /中断选择3寄存器/ AdcRegs.INTSEL3N4.bit.INT3E = 1; /每当产生EOC脉冲时,都会产生附加脉冲,而不管是否清除了标记位/ AdcRegs.INTSEL3N4.bit.INT3CONT = 0; /EOC6是ADCINT3的触发器*/ AdcRegs.INTSEL3N4.bit.INT3SEL = 6;AdcRegs.ADCSAMPLEMODE.all = 1;
/*将SOC0设置为样本A0*/
AdcRegs.ADCSOC0CTL.bit.CHSEL = 0;
/*将SOC1设置为样本A1*/
AdcRegs.ADCSOC1CTL.bit.CHSEL = 1;
/*将SOC2设置为样本A2*/
AdcRegs.ADCSOC2CTL.bit.CHSEL = 2;
/*将SOC3设置为样本A3*/
AdcRegs.ADCSOC3CTL.bit.CHSEL = 3;
/*将SOC4设置为样本A4*/
AdcRegs.ADCSOC4CTL.bit.CHSEL = 4;
/*将SOC5设置为样本A6*/
AdcRegs.ADCSOC5CTL.bit.CHSEL = 6;
/*将SOC6设置为样本A7*/
AdcRegs.ADCSOC6CTL.bit.CHSEL = 7;
/*将SOC7设置为样本B1*/
AdcRegs.ADCSOC7CTL.bit.CHSEL = 9;
/*将SOC8设置为样本B2*/
AdcRegs.ADCSOC8CTL.bit.CHSEL = 10;
/*将SOC9设置为样本B3*/
AdcRegs.ADCSOC9CTL.bit.CHSEL = 11;
/*将SOC10设置为样本B4*/
AdcRegs.ADCSOC10CTL.bit.CHSEL = 12;
/*将SOC11设置为样本B6*/
AdcRegs.ADCSOC11CTL.bit.CHSEL = 14;
/*将SOC12设置为样本B7*/
AdcRegs.ADCSOC12CTL.bit.CHSEL = 15;
/*SOCx触发源选择:ADCTRIG5-ePWM1,ADCSOCA*/
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC3CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC4CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC5CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC6CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC7CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC8CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC9CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC10CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC11CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC12CTL.bit.TRIGSEL = 0x05;
/*采样窗口长达6个周期(2n+6个时钟周期)*/
AdcRegs.ADCSOC0CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC1CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC2CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC3CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC4CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC5CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC6CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC7CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC8CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC9CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC10CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC11CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC12CTL.bit.ACQPS = 0;
EDIS;
}
ADC的中断服务函数如下Uint32 adcVal[16];/***********************函数名:void INTERRUPT adc_isr() *参 数:无 *返回值:无 *作 用:adc中断服务函数**********************/void INTERRUPT adc_isr(){ while(AdcRegs.ADCCTL1.bit.ADCBSY == 1) { }adcVal[0] = AdcResult.ADCRESULT0;
adcVal[1] = AdcResult.ADCRESULT1;
adcVal[2] = AdcResult.ADCRESULT2;
adcVal[3] = AdcResult.ADCRESULT3;
adcVal[4] = AdcResult.ADCRESULT4;
adcVal[5] = AdcResult.ADCRESULT5;
adcVal[6] = AdcResult.ADCRESULT6;
adcVal[7] = AdcResult.ADCRESULT7;
adcVal[8] = AdcResult.ADCRESULT8;
adcVal[9] = AdcResult.ADCRESULT9;
adcVal[10] = AdcResult.ADCRESULT10;
adcVal[11] = AdcResult.ADCRESULT11;
adcVal[12] = AdcResult.ADCRESULT12;
EALLOW;
/*清除ADCINTFLG寄存器中各自的标志位*/
AdcRegs.ADCINTFLGCLR.bit.ADCINT3 = 0x1;
/* 清除ADCINTOVF寄存器中相应的溢出位*/
AdcRegs.ADCINTOVFCLR.bit.ADCINT3 = 0x1;
/* 中断应答*/
PieCtrlRegs.PIEACK.all = PIEACK_GROUP10;
EDIS;}
ADC例子如下
首先配置ADC,对ADC进行初始化。
作 用:配置ADC**********************/void ADC_Init(void){ EALLOW; AdcRegs.ADCCTL1.bit.ADCREFSEL = 0; /NT脉冲产生在ADC结果锁定到其结果寄存器之前发生一个周期/ AdcRegs.ADCCTL1.bit.INTPULSEPOS = 1; /中断选择3寄存器/ AdcRegs.INTSEL3N4.bit.INT3E = 1; /每当产生EOC脉冲时,都会产生附加脉冲,而不管是否清除了标记位/ AdcRegs.INTSEL3N4.bit.INT3CONT = 0; /EOC6是ADCINT3的触发器*/ AdcRegs.INTSEL3N4.bit.INT3SEL = 6;AdcRegs.ADCSAMPLEMODE.all = 1;
/*将SOC0设置为样本A0*/
AdcRegs.ADCSOC0CTL.bit.CHSEL = 0;
/*将SOC1设置为样本A1*/
AdcRegs.ADCSOC1CTL.bit.CHSEL = 1;
/*将SOC2设置为样本A2*/
AdcRegs.ADCSOC2CTL.bit.CHSEL = 2;
/*将SOC3设置为样本A3*/
AdcRegs.ADCSOC3CTL.bit.CHSEL = 3;
/*将SOC4设置为样本A4*/
AdcRegs.ADCSOC4CTL.bit.CHSEL = 4;
/*将SOC5设置为样本A6*/
AdcRegs.ADCSOC5CTL.bit.CHSEL = 6;
/*将SOC6设置为样本A7*/
AdcRegs.ADCSOC6CTL.bit.CHSEL = 7;
/*将SOC7设置为样本B1*/
AdcRegs.ADCSOC7CTL.bit.CHSEL = 9;
/*将SOC8设置为样本B2*/
AdcRegs.ADCSOC8CTL.bit.CHSEL = 10;
/*将SOC9设置为样本B3*/
AdcRegs.ADCSOC9CTL.bit.CHSEL = 11;
/*将SOC10设置为样本B4*/
AdcRegs.ADCSOC10CTL.bit.CHSEL = 12;
/*将SOC11设置为样本B6*/
AdcRegs.ADCSOC11CTL.bit.CHSEL = 14;
/*将SOC12设置为样本B7*/
AdcRegs.ADCSOC12CTL.bit.CHSEL = 15;
/*SOCx触发源选择:ADCTRIG5-ePWM1,ADCSOCA*/
AdcRegs.ADCSOC0CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC1CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC2CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC3CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC4CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC5CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC6CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC7CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC8CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC9CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC10CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC11CTL.bit.TRIGSEL = 0x05;
AdcRegs.ADCSOC12CTL.bit.TRIGSEL = 0x05;
/*采样窗口长达6个周期(2n+6个时钟周期)*/
AdcRegs.ADCSOC0CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC1CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC2CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC3CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC4CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC5CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC6CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC7CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC8CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC9CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC10CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC11CTL.bit.ACQPS = 0;
AdcRegs.ADCSOC12CTL.bit.ACQPS = 0;
EDIS;
}
ADC的中断服务函数如下Uint32 adcVal[16];/***********************函数名:void INTERRUPT adc_isr() *参 数:无 *返回值:无 *作 用:adc中断服务函数**********************/void INTERRUPT adc_isr(){ while(AdcRegs.ADCCTL1.bit.ADCBSY == 1) { }adcVal[0] = AdcResult.ADCRESULT0;
adcVal[1] = AdcResult.ADCRESULT1;
adcVal[2] = AdcResult.ADCRESULT2;
adcVal[3] = AdcResult.ADCRESULT3;
adcVal[4] = AdcResult.ADCRESULT4;
adcVal[5] = AdcResult.ADCRESULT5;
adcVal[6] = AdcResult.ADCRESULT6;
adcVal[7] = AdcResult.ADCRESULT7;
adcVal[8] = AdcResult.ADCRESULT8;
adcVal[9] = AdcResult.ADCRESULT9;
adcVal[10] = AdcResult.ADCRESULT10;
adcVal[11] = AdcResult.ADCRESULT11;
adcVal[12] = AdcResult.ADCRESULT12;
EALLOW;
/*清除ADCINTFLG寄存器中各自的标志位*/
AdcRegs.ADCINTFLGCLR.bit.ADCINT3 = 0x1;
/* 清除ADCINTOVF寄存器中相应的溢出位*/
AdcRegs.ADCINTOVFCLR.bit.ADCINT3 = 0x1;
/* 中断应答*/
PieCtrlRegs.PIEACK.all = PIEACK_GROUP10;
EDIS;}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
中科昊芯
+关注
关注
5文章
84浏览量
5894 -
开发板试用
+关注
关注
3文章
303浏览量
2645
发布评论请先 登录
相关推荐
热点推荐
【获奖名单】2025开发板评测大赛优秀开发者、最受欢迎开发板公布
试用测评后通过问卷调查投票,选出了各自心目中最受欢迎的开发板。现将名单一同予以公示。
大赛作品详情:【作品精选】2025电子发烧友开发板测评大赛作品合集!
优秀作品
发表于 11-21 09:31
【作品合集】飞凌嵌入式OK527N-C开发板测评
作品合集
第十三期合集 : 玄铁Banana Pi BPI-RV2开发板测评作品合集
第十四期合集 : 玄铁BPI-CanMV-K230D-Zero开发板测评作品合集
第十五期合集 : 中科昊
发表于 09-22 15:54
【作品精选】2025电子发烧友开发板测评大赛作品合集!
Milk-V Duo S 开发板免费试用
玄铁Banana Pi BPI-RV2开发板试用
玄铁Banana Pi BPI-CanMV-K230D-Zero17
发表于 09-03 15:24
【中科昊芯Core_DSC280025C开发板试用体验】+4. CAN外设调试(含源码)
前言
大家好,非常感谢电子发烧友与中科昊芯提供的DSC280025C开发板,这是一款DSP的
发表于 08-05 20:46
【中科昊芯Core_DSC280025C开发板试用体验】+SCI测试与代码解读
Core_DSC280025C核心板使用了昊芯HXS320F28025CRISC-V DSP芯片,该芯片集成了吴芯自主研发的H28x内核。核
发表于 07-17 10:42
【中科昊芯Core_DSC280025C开发板试用体验】+3.DSP基础外设调试(含源码)
前言
大家好,非常感谢电子发烧友与中科昊芯提供的DSC280025C开发板,这是一款DSP的
发表于 07-13 16:07
【中科昊芯Core_DSC280025C开发板试用体验】+2.RAM工程与FLASH工程对比
前言
大家好,非常感谢电子发烧友与中科昊芯提供的DSC280025C开发板,这是一款DSP的
发表于 07-04 10:37
【中科昊芯Core_DSC280025C开发板试用体验】+1.开箱之浮点计算对比
【中科昊芯Core_DSC280025C开发板试用体验】+1.开箱之浮点计算对比
前言
大家好,
发表于 06-29 10:01
中科昊芯DSP产品及公司信息
库和驱动库,帮助用户降低迁移成本,缩短开发周期。同时,公司还推出了多种开发板和核心板,如Core_DSC28027和Start_DSC28034
发表于 04-07 09:16

【中科昊芯Start_DSC28034PNT湖人开发板试用体验】--学写一个ADC
评论