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

在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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版