新手入门
- 积分
- 7
- 金钱
- 7
- 注册时间
- 2017-7-26
- 在线时间
- 2 小时
|
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?
|
|