打印
[技术问答]

HK32F103CBT6 ADC采集影响外部中断

[复制链接]
1391|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小聂|  楼主 | 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移植过来的?

是的  同样的程序

使用特权

评论回复
5
小聂|  楼主 | 2022-3-2 10:05 | 只看该作者
chenjun89 发表于 2022-3-2 08:10
航顺和ST的程序不能兼容的啊

但是ADC为什么会影响外部中断啊  我看这两个引脚也没有复用关系的  还有哪里需要注意吗

使用特权

评论回复
6
小聂|  楼主 | 2022-3-2 14:56 | 只看该作者
有没有人遇到这种情况的啊,大佬帮忙

使用特权

评论回复
7
SDLin| | 2022-3-2 16:50 | 只看该作者
正常是不会影响到的。检查你ADC的初始化设置,看是否有跟PA7引脚误关联的?

使用特权

评论回复
8
小聂|  楼主 | 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是这样操作的   麻烦看一下对吗?、

使用特权

评论回复
9
SDLin| | 2022-3-3 15:39 | 只看该作者
把你能复现现象的工程发一下看看,同时把外部中断电路、ADC采集的外部电路原理图发下。

使用特权

评论回复
10
小聂|  楼主 | 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原理图也发下看看吧

使用特权

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

这是原理图  SWITCH2接的外部中断

2.png (17.92 KB )

2.png

1.png (31.08 KB )

1.png

使用特权

评论回复
13
SDLin| | 2022-3-4 16:55 | 只看该作者
小聂 发表于 2022-3-3 18:02
这是原理图  SWITCH2接的外部中断

你试试,所有调用SYS_Delay()函数的地方,都屏蔽掉,看是否就不会反复进EXTI中断。

使用特权

评论回复
14
SDLin| | 2022-3-7 16:13 | 只看该作者
小聂 发表于 2022-3-3 18:02
这是原理图  SWITCH2接的外部中断

可以了吗?你微信多少?加一下

使用特权

评论回复
15
小聂|  楼主 | 2022-3-8 10:47 | 只看该作者
SDLin 发表于 2022-3-7 16:13
可以了吗?你微信多少?加一下

你好   我的微信是18380429315

使用特权

评论回复
16
小聂|  楼主 | 2022-3-8 10:50 | 只看该作者
SDLin 发表于 2022-3-4 16:55
你试试,所有调用SYS_Delay()函数的地方,都屏蔽掉,看是否就不会反复进EXTI中断。 ...

你好  我全部屏蔽了还是一样的

使用特权

评论回复
17
liqingfeng123| | 2022-3-18 14:58 | 只看该作者
ADC 精度如何?与st对比呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

13

帖子

0

粉丝