[技术问答] HK32F103CBT6 ADC采集影响外部中断

[复制链接]
 楼主| 小聂 发表于 2022-3-1 15:44 | 显示全部楼层 |阅读模式
麻烦问一下,  我用的是HK32F103芯片, 通过PA1进行电池电压采集, PA7作为按键外部中断输入,  当程序运行到ADC采集的时候,  会产生PA7的外部中断  这是什么原因啊?  同样的程序在STM32上就不会,  我需要修改什么地方吗
caigang13 发表于 2022-3-1 20:33 来自手机 | 显示全部楼层
同意的程序,从ST移植过来的?
chenjun89 发表于 2022-3-2 08:10 来自手机 | 显示全部楼层
航顺和ST的程序不能兼容的啊
 楼主| 小聂 发表于 2022-3-2 10:04 | 显示全部楼层
caigang13 发表于 2022-3-1 20:33
同意的程序,从ST移植过来的?

是的  同样的程序
 楼主| 小聂 发表于 2022-3-2 10:05 | 显示全部楼层
chenjun89 发表于 2022-3-2 08:10
航顺和ST的程序不能兼容的啊

但是ADC为什么会影响外部中断啊  我看这两个引脚也没有复用关系的  还有哪里需要注意吗
 楼主| 小聂 发表于 2022-3-2 14:56 | 显示全部楼层
有没有人遇到这种情况的啊,大佬帮忙
SDLin 发表于 2022-3-2 16:50 | 显示全部楼层
正常是不会影响到的。检查你ADC的初始化设置,看是否有跟PA7引脚误关联的?
 楼主| 小聂 发表于 2022-3-3 15:04 | 显示全部楼层
SDLin 发表于 2022-3-2 16:50
正常是不会影响到的。检查你ADC的初始化设置,看是否有跟PA7引脚误关联的? ...

void BSP_ADC_Init(void)
{
        ADC_InitTypeDef ADC_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;       

        RCC_APB2PeriphClockCmd(ADC_BAT_CLK,ENABLE);          
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
        GPIO_InitStructure.GPIO_Pin = ADC_BAT_PIN;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
        GPIO_Init(ADC_BAT_PORT,&GPIO_InitStructure);
        RCC_ADCCLKConfig(RCC_PCLK2_Div6);   
           ADC_DeInit(ADC1);  
        ADC_StructInit(&ADC_InitStructure);
        ADC_InitStructure.ADC_Mode                                         = ADC_Mode_Independent;                       
        ADC_InitStructure.ADC_ScanConvMode                         = DISABLE;                                               
        ADC_InitStructure.ADC_ContinuousConvMode         = DISABLE;                                               
        ADC_InitStructure.ADC_ExternalTrigConv                 = ADC_ExternalTrigConv_None;       
        ADC_InitStructure.ADC_DataAlign                         = ADC_DataAlign_Right;                       
        ADC_InitStructure.ADC_NbrOfChannel                         = 1;                                                       
        ADC_Init(ADC1, &ADC_InitStructure);               
        ADC_TempSensorVrefintCmd(ENABLE);
        ADC_Cmd(ADC1, ENABLE);       
        ADC_ResetCalibration(ADC1);       
        while(ADC_GetResetCalibrationStatus(ADC1));       
        ADC_StartCalibration(ADC1);         
        while(ADC_GetCalibrationStatus(ADC1));               
}


uint16_t get_adc_value(uint8_t ch)   
{
        ADC_ClearFlag(ADC1,ADC_FLAG_EOC);
        ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );                                              
        ADC_SoftwareStartConvCmd(ADC1, ENABLE);               
        while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));
        __NOP();
        __NOP();
        __NOP();
        return ADC_GetConversionValue(ADC1);       
}  


uint16_t get_adc_battery(void)
{
        uint16_t ADrefint,ADbat,voltage;
       
        get_adc_value(ADC_CH_VREFINT);
        SYS_Delay(10);
        ADrefint = get_adc_value(ADC_CH_VREFINT);
        SYS_Delay(10);
        get_adc_value(ADC_CH_BATTERY);
        SYS_Delay(10);
        ADbat = get_adc_value(ADC_CH_BATTERY);
        voltage = (1200 * ADbat / ADrefint) * 122 / 22;
        return voltage;
}       

我的ADC是这样操作的   麻烦看一下对吗?、
SDLin 发表于 2022-3-3 15:39 | 显示全部楼层
把你能复现现象的工程发一下看看,同时把外部中断电路、ADC采集的外部电路原理图发下。
 楼主| 小聂 发表于 2022-3-3 16:20 | 显示全部楼层
SDLin 发表于 2022-3-3 15:39
把你能复现现象的工程发一下看看,同时把外部中断电路、ADC采集的外部电路原理图发下。 ...

你好  版主  这是我的工程  麻烦你看一下  谢谢

hk32f103vbt6.zip

7.66 MB, 下载次数: 11

SDLin 发表于 2022-3-3 17:40 | 显示全部楼层
小聂 发表于 2022-3-3 16:20
你好  版主  这是我的工程  麻烦你看一下  谢谢

直接跑你的工程 没有进外部中断EXTI9_5_IRQHandler()哦。把EXT引脚电路和ADC原理图也发下看看吧
 楼主| 小聂 发表于 2022-3-3 18:02 | 显示全部楼层
SDLin 发表于 2022-3-3 17:40
直接跑你的工程 没有进外部中断EXTI9_5_IRQHandler()哦。把EXT引脚电路和ADC原理图也发下看看吧 ...

这是原理图  SWITCH2接的外部中断
1.png
2.png
SDLin 发表于 2022-3-4 16:55 | 显示全部楼层
小聂 发表于 2022-3-3 18:02
这是原理图  SWITCH2接的外部中断

你试试,所有调用SYS_Delay()函数的地方,都屏蔽掉,看是否就不会反复进EXTI中断。
SDLin 发表于 2022-3-7 16:13 | 显示全部楼层
小聂 发表于 2022-3-3 18:02
这是原理图  SWITCH2接的外部中断

可以了吗?你微信多少?加一下
 楼主| 小聂 发表于 2022-3-8 10:47 | 显示全部楼层
SDLin 发表于 2022-3-7 16:13
可以了吗?你微信多少?加一下

你好   我的微信是18380429315
 楼主| 小聂 发表于 2022-3-8 10:50 | 显示全部楼层
SDLin 发表于 2022-3-4 16:55
你试试,所有调用SYS_Delay()函数的地方,都屏蔽掉,看是否就不会反复进EXTI中断。 ...

你好  我全部屏蔽了还是一样的
liqingfeng123 发表于 2022-3-18 14:58 | 显示全部楼层
ADC 精度如何?与st对比呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

13

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部