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

在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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版