你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【MCU实战经验】STM32F051电容按键其实不用触摸库

[复制链接]
832-368169 发布时间:2014-4-16 09:06
阅读主题, 点击返回1楼
收藏 2 评论19 发布时间:2014-4-16 09:06
19个回答
liudashuang 回答时间:2015-2-23 23:10:08
简单的外设可以,比如IO
liudashuang 回答时间:2015-2-23 23:24:15
简单的外设可以,比如IO
vonkun 回答时间:2015-3-24 15:50:14
您好!可否提供一下STM32F051 TSC的完整项目例程文件, 寄存器版的和 触摸库版的;可参考资料实在是太少了,我的邮箱是: vonkun@163.com ; 感谢楼主的无私奉献和大力支持,谢谢!
zhangdaijin 回答时间:2015-3-24 22:06:14
学习了  
lhjbjbj 回答时间:2016-9-18 20:16:29
大侠能否提供一份stm32f051的电容触摸按键的事例。在北感谢楼主提出的建议,我的邮箱是:502358698@qq.com
zbber 回答时间:2016-9-19 07:32:11
可以发一下你的工程吗?弄了一个星期了
sssdd 回答时间:2016-10-27 08:54:24
来来来,看看这个这么玩行不行?
//电容测量型按键检测支持 定义和函数
//-----------------------------------------------------------------------------
#define KEY1_R     (GPIOD->IDR & 0x04)//PD2
//#define KEY2_R     (GPIOC->IDR &  0x80)//PC7
//#define KEY3_R     (GPIOD->IDR &  0x20)//PD5
//#define KEY4_R     (GPIOD->IDR &  0x40)//PD6
#define KEY_SH     (GPIOD->ODR |=0x08)//PD3
#define KEY_SL     (GPIOD->ODR &=0xf7)//PD3
//-----------------------------------------------------------------------------
#define KEY1_O_1   {GPIOD->ODR|=0x04;GPIOD->DDR|=0x04;GPIOD->CR1|=0x04;}//PD2
#define KEY1_O_0   {GPIOD->ODR&=0xFb;GPIOD->DDR|=0x04;GPIOD->CR1|=0x04;}//PD2
#define KEY1_I     {GPIOD->CR1&=0xfb;GPIOD->DDR&=0xfb;}//PD2

//#define KEY2_R     (GPIOC->IDR &  0x80)//PC7
//#define KEY3_R     (GPIOD->IDR &  0x20)//PD5
//#define KEY4_R     (GPIOD->IDR &  0x40)//PD6
//-----------------------------------------------------------------------------
#define GT_GATE 5
//-----------------------------------------------------------------------------
unsigned char key_time_sta1;//充电开始时间
unsigned char key_time1;//动态时间
unsigned char key_CH1;//按键充放电时间基准
unsigned char key_delay1;//按键保持存在的时间倒计时
unsigned char key_filter1;//按键滤波 毛刺消除

unsigned char key_count;//按键计数count 用于长按设置
unsigned char key_value;//按键数据
#define SET_K1 (key_value|=0x01)
#define SET_K2 (key_value|=0x02)
#define SET_K3 (key_value|=0x04)
#define SET_K4 (key_value|=0x08)

#define Key_on    (key_value&0x01)
#define Key_set   (key_value&0x02)
#define Key_add   (key_value&0x04)
#define Key_pause (key_value&0x08)
unsigned char key_shadow;//按键影子数据
#define lkey_add  (key_shadow&0x04)
unsigned char key_buf[64];
unsigned char key_i;
//-----------------------------------------------------------------------------
void CM_filter()
{//按键滤波调用
    if(key_filter1<10)
    {
    }
}
//-----------------------------------------------------------------------------
void CM_Key_scan()
{//1ms 调用一次 刷新键值
    unsigned char temp;
    key_value=0;//键值清0
    //key_time_sta1=TIM2->CNTRH;
    //key_time_sta1<<=8;
    key_time_sta1=TIM2->CNTRL;
    KEY1_O_0;//准备充电 先放光
    KEY_SH;
    KEY1_I;//高阻
    while(!KEY1_R);

    KEY1_O_1;//准备放电 先充满
    KEY1_I;//高阻
    KEY_SL;
    while(KEY1_R);

    //temp=TIM2->CNTRH;
    //temp<<=8;
    temp=TIM2->CNTRL;

    key_time1=temp-key_time_sta1;//单位是us

    if(key_time1>(key_CH1+GT_GATE))
    {//溢出阀值
        if(key_filter1<8)key_filter1++;
        else
        {//连续8次才有效
            key_delay1=200;//0.2s
            //if(key_delay1==0)key_CH1-=GT_GATE;
            key_CH1-=(key_CH1>>4);// 15/16
            key_CH1+=(key_time1>>4);
        }
    }
    else
    {//未溢出情况下累计基准
        key_filter1=0;

        key_CH1-=(key_CH1>>4);// 15/16
        key_CH1+=(key_time1>>4);
    }

    if(key_delay1)
    {//在key_delay1不为0期间 K1保持按下状态
        key_delay1--;
        SET_K1;
    }

    key_i++;
    if(key_i>=64)key_i=0;
    key_buf[key_i]=key_time1;

    //key_CH1-=(key_CH1>>4);// 15/16
    //key_CH1+=(key_time>>4);

    temp=key_value;
    key_value=key_value&(key_value^key_shadow);
    key_shadow=temp;
}

phiyun 回答时间:2018-7-10 18:45:17

我也想要啊,跪求feiyun_zhu@163.com  谢谢!
txf2018 回答时间:2018-9-18 20:00:08
楼主能给我发一份吗?cpqc_315@163.com     谢谢
荒芜的岁月 回答时间:2019-4-23 13:52:42
发个代码给我吧,邮箱605074415@qq.com
12

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版