野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10542|回复: 1

关于ADC软件触发问题

[复制链接]
发表于 2019-7-22 10:08:54 | 显示全部楼层 |阅读模式
问题1:简单的试了一下ADC的中断转换和标志位转换,即IT 和 FLAG  ,发现软件使能ADC转换的时候,如果此时是中断转换,不需要反复调用 ADC_SoftwareStartConvCmd(ADC2, ENABLE);而当时用FLAG时,需要反复调用 ADC_SoftwareStartConvCmd(ADC2, ENABLE);是不是中断服务函数,或是中断的其他寄存器,自动使能了软件触发,即自动调用或执行和ADC_SoftwareStartConvCmd(ADC2, ENABLE)相同功能的操作?


问题2:可不可以用中断标志位IT来代替FLAG,就是,循环检测IT是否为1,如果为1,表示ADC采集结束?用以下代码来表示

while(1){
    while(ADC_GetITStatus(ADC2,ADC_IT_EOC)==SET)
    {
     printf("DATA Send Successfully\n");
     printf("value : %.2f\n",(double)( ADC_GetConversionValue(ADC2)/4096 )* 3.3);
     ADC_ClearFlag(ADC2,ADC_IT_EOC);
    }

}

上面代码不在中断服务函数中,而是在主函数中



回复

使用道具 举报

发表于 2019-7-22 22:10:54 | 显示全部楼层
2。 你说的中断位标志IT和FLAG一样的,都是状态寄存器的某个状态位,使能了某个中断就是意思使能了那个状态位置位时同时产生中断,用ADC_GetITStatus或ADC_GetFlagStatus来轮询都可以,两个函数的源代码里面最终也是一操作ADC状态寄存器(ADC_SR)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-6-18 12:00 , Processed in 0.028711 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表