OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4405|回复: 1

关于电容式按键充放电计算时间的问题

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2017-7-26
在线时间
2 小时
发表于 2017-7-26 20:01:27 | 显示全部楼层 |阅读模式
1金钱
我用的是F429HAL库的,今天做电容按键实验,然后看到在初始化活的空载时触摸按键的取值时出现了问题,在放电时,原子给的代码是这样的
void TPAD_Reset(void)
{
    GPIO_InitTypeDef GPIO_Initure;
       
    GPIO_Initure.Pin=GPIO_PIN_5;            //PA5
    GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;  //推挽输出
    GPIO_Initure.Pull=GPIO_PULLDOWN;        //下拉
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;     //高速
        //   GPIO_Initure.Alternate=GPIO_AF1_TIM2;   //PA5复用为TIM2通道1
    HAL_GPIO_Init(GPIOA,&GPIO_Initure);

    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5,GPIO_PIN_RESET);        //PA5输出0,放电
    delay_ms(5);
    __HAL_TIM_CLEAR_FLAG(&TIM2_Handler,TIM_FLAG_CC1|TIM_FLAG_UPDATE);   //清除标志位
    __HAL_TIM_SET_COUNTER(&TIM2_Handler,0); //计数器值归0

    GPIO_Initure.Mode=GPIO_MODE_AF_PP;      //推挽复用
    GPIO_Initure.Pull=GPIO_NOPULL;          //不带上下拉
    GPIO_Initure.Alternate=GPIO_AF1_TIM2;   //PA5复用为TIM2通道1
    HAL_GPIO_Init(GPIOA,&GPIO_Initure);         
}

可以看到在放电时IO口被配成了推挽输出加下拉模式,这个时候串口给出的tpad_default_val(就是这个空载时的按键取值)值大约是150左右,然后,如果我把这一句   GPIO_Initure.Pull=GPIO_PULLDOWN;        //下拉  改成上拉的形式的话,然后在进行实验,发现整体的电容按键效果还是一样,但是串口给出的tpad_default_val值变成了120左右,也就是说计算的充电时间变短了,这就很迷,我仅仅在放电过程把下拉电阻变成了上拉电阻,如果仅仅是从这个结果分析的话我觉得应该是变成上拉电阻后电容的放电没有放完全,也就是电容的电压没有降到0,然后充电的时候并不是从0V开始充电,这样就会导致充电时间变短,这是我根据结果自己进行的猜测,但是又很迷的是,如果我就算是加上拉电阻的话,我将IO口软件置0,但是电容的那个点的电压应该还是0,那么为啥不能降压降到0?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165452
金钱
165452
注册时间
2010-12-1
在线时间
2113 小时
发表于 2017-7-27 01:01:01 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-4-18 08:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表