在TIM2的定时中断里读取AD转换值,读不到,
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);
问题找到了,u16_adc1_value u16_adc2_value二个变量在中断程序的文件里定义。在主程序的文件里进行extern u16_adc1_value ;extern u16_adc2_value然后在主程序里读u16_adc1_value 和u16_adc2_value值就没问题了,如反过来在主程序里定义变量,在中断程序里用 extern 就是不行。不知是为什么? ybhuangfugui 发表于 2016-5-15 12:12
应该是你的程序中配置AD有问题,看中断入口,你使用的是STM8单片机吧
https://www.stmcu.org.cn/module/forum/t ...
是用STM8 中断是独立一个文件吗?
页:
[1]