你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

在TIM2的定时中断里读取AD转换值,读不到,

[复制链接]
dianji002 提问时间:2016-5-15 10:50 /
INTERRUPT_HANDLER(TIM2_UPD_OVF_BRK_IRQHandler, 13)
{

   
   TIM2_ClearFlag(TIM2_FLAG_UPDATE);
   GPIO_WriteReverse(GPIOD, GPIO_PIN_2);
    while((ADC1->CSR & 0x80)!=0x80); // 等待转换结束
    u16_adc1_value = ADC1_GetBufferValue(0x04);   //read ad4;
    u16_adc2_value = ADC1_GetBufferValue(0x05);   //read ad5  
}
中断程序如上,PD2有翻转,但是u16_adc1_value值和u16_adc2_value一直为0,实际PB4和PB5是1.65V电压的。
但如果把下面的三个语句放在主语序里,就可以读到,为什么?  
    while((ADC1->CSR & 0x80)!=0x80); // 等待转换结束
    u16_adc1_value = ADC1_GetBufferValue(0x04);   
    u16_adc2_value = ADC1_GetBufferValue(0x05);   
   

赞 收藏 评论3 发布时间:2016-5-15 10:50

举报

3个回答
dianji002 回答时间:2016-5-15 16:46:44
问题找到了,u16_adc1_value u16_adc2_value二个变量在中断程序的文件里定义。在主程序的文件里进行extern u16_adc1_value ;extern u16_adc2_value  然后在主程序里读u16_adc1_value 和u16_adc2_value值就没问题了,如反过来在主程序里定义变量,在中断程序里用 extern 就是不行。不知是为什么?
dianji002 回答时间:2016-5-15 16:47:22
ybhuangfugui 发表于 2016-5-15 12:12
应该是你的程序中配置AD有问题,看中断入口,你使用的是STM8单片机吧
https://www.stmcu.org.cn/module/forum/t ...

是用STM8
maxking 回答时间:2016-5-16 06:27:32
中断是独立一个文件吗?

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版