查看: 5219|回复: 9

[已解决] 飞思卡尔KL25触摸按键功能TSI(已解决)

[复制链接]

该用户从未签到

2

主题

22

帖子

0

新手上路

Rank: 1

积分
44
最后登录
1970-1-1
发表于 2013-8-28 06:16:55 | 显示全部楼层 |阅读模式
我想问一下有KL25的触摸按键功能的例程吗?我看了一下官方例程里面没有。
我知道答案 目前已有8人回答
回复

使用道具 举报

该用户从未签到

10

主题

459

帖子

0

中级会员

Rank: 3Rank: 3

积分
303
最后登录
2024-10-24
发表于 2013-8-28 09:28:53 | 显示全部楼层

回复:飞思卡尔KL25触摸按键功能TSI(正解)

baremental的代码:\...\kl25_sc_rev6\klxx-sc-baremetal\build\iar\FRDM_KL25ZDemo是一个综合例程,里面有TSI的例程代码。
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

22

帖子

0

新手上路

Rank: 1

积分
44
最后登录
1970-1-1
 楼主| 发表于 2013-8-31 22:47:58 | 显示全部楼层

回复:飞思卡尔KL25触摸按键功能TSI(已解决)

还是不会用哦,有没有高手用使用过啊
回复 支持 反对

使用道具 举报

该用户从未签到

85

主题

790

帖子

0

金牌会员

Rank: 6Rank: 6

积分
2279
最后登录
1970-1-1
发表于 2013-9-2 11:19:14 | 显示全部楼层

RE:飞思卡尔KL25触摸按键功能TSI(已解决)

这个demo中就是例程,包含初始化和应用的部分。
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

22

帖子

0

新手上路

Rank: 1

积分
44
最后登录
1970-1-1
 楼主| 发表于 2013-9-3 22:29:35 | 显示全部楼层

回复:飞思卡尔KL25触摸按键功能TSI(已解决)

在demo上跑不起来啊
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

22

帖子

0

新手上路

Rank: 1

积分
44
最后登录
1970-1-1
 楼主| 发表于 2013-9-8 19:03:14 | 显示全部楼层

回复:飞思卡尔KL25触摸按键功能TSI(已解决)

我现在把TSI调通了但加上低功耗定时器中断就不能工作了
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

22

帖子

0

新手上路

Rank: 1

积分
44
最后登录
1970-1-1
 楼主| 发表于 2013-9-9 15:16:14 | 显示全部楼层

回复:飞思卡尔KL25触摸按键功能TSI(已解决)

void  lptmrInit (void)
{
    SIM_SCGC5 |= SIM_SCGC5_LPTMR_MASK;                                   // 打开lptmr时钟               
    LPTMR0_CSR |= LPTMR_CSR_TCF_MASK | LPTMR_CSR_TIE_MASK;               // 清除标志位 开启中断         
    LPTMR0_PSR |= LPTMR_PSR_PCS(3);                                      // 使用外部钟源              
    LPTMR0_CMR = 200;                                                    // 默认2分频 200即为0.1ms         
    LPTMR0_CSR |= LPTMR_CSR_TEN_MASK;                                    // 开启LPTMR        
    NVIC_EnableIRQ(LPTimer_IRQn);                                        // lptmr开启中断               
    NVIC_SetPriority(LPTimer_IRQn,3);                                    // lptmr设置优先级              
    __enable_irq();                                                           // 开启总中断
}
void  tsiInit (void)
{
   SIM_SCGC5  |= SIM_SCGC5_TSI_MASK;             // 打开TSI模块时钟            
   SIM_SCGC5  |= SIM_SCGC5_PORTB_MASK;           // 使能端口时钟               
   
   PORTB_PCR16 |= PORT_PCR_MUX(0);               // PB16设为模拟I/O,TSI0_CH9     
   PORTB_PCR17 |= PORT_PCR_MUX(0);               // PB17设为模拟I/O,TSI0_CH10   
   
   NVIC_DisableIRQ(TSI0_IRQn);                   // 使能内核中断               
   TSI0_GENCS  = 0;
       
   TSI0_GENCS |= (TSI_GENCS_ESOR_MASK            // 选择扫描结束中断            
                           | TSI_GENCS_MODE(0)               // 设置为TSI模式               
                           | TSI_GENCS_REFCHRG(4)            // 设置参考振荡器充电电流8uA   
                           | TSI_GENCS_DVOLT(0)              // 设置振荡器电压轨            
                           | TSI_GENCS_EXTCHRG(7)            // 设置电极振荡器充电电流64uA   
                           | TSI_GENCS_PS(4)                 // 设置电极振荡器输出预分频值/16
                           | TSI_GENCS_NSCN(20)              // 设置每个电极扫描次12,最大31
                           | TSI_GENCS_TSIIEN_MASK           // 使能TSI输入中断使能         
                           | TSI_GENCS_STPE_MASK             // 低功耗模式下使能TSI模块      
                           );
    TSI0_GENCS |= TSI_GENCS_TSIEN_MASK;          // 使能TSI输入模块              
    tsiSelfCalibration();                        // 触摸按键自检                 
        NVIC_EnableIRQ(TSI0_IRQn);                   // 使能TSI中断                              
        NVIC_SetPriority(TSI0_IRQn,5);               // 设置优先级
}
上面是2个中断的程序,我把2个中断都初始化后,TSI给你可以正常工作,LPTMR中断定时器就不工作了。分开调试的话,TSI和LPTMR功能都是正常的,急!!!!!!!!!!!!求解
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

22

帖子

0

新手上路

Rank: 1

积分
44
最后登录
1970-1-1
 楼主| 发表于 2013-9-9 15:16:45 | 显示全部楼层

回复:飞思卡尔KL25触摸按键功能TSI(已解决)

void  lptmrInit (void)
{
    SIM_SCGC5 |= SIM_SCGC5_LPTMR_MASK;                                   // 打开lptmr时钟               
    LPTMR0_CSR |= LPTMR_CSR_TCF_MASK | LPTMR_CSR_TIE_MASK;               // 清除标志位 开启中断         
    LPTMR0_PSR |= LPTMR_PSR_PCS(3);                                      // 使用外部钟源              
    LPTMR0_CMR = 200;                                                    // 默认2分频 200即为0.1ms         
    LPTMR0_CSR |= LPTMR_CSR_TEN_MASK;                                    // 开启LPTMR        
    NVIC_EnableIRQ(LPTimer_IRQn);                                        // lptmr开启中断               
    NVIC_SetPriority(LPTimer_IRQn,3);                                    // lptmr设置优先级              
    __enable_irq();                                                           // 开启总中断
}
void  tsiInit (void)
{
   SIM_SCGC5  |= SIM_SCGC5_TSI_MASK;             // 打开TSI模块时钟            
   SIM_SCGC5  |= SIM_SCGC5_PORTB_MASK;           // 使能端口时钟               
   
   PORTB_PCR16 |= PORT_PCR_MUX(0);               // PB16设为模拟I/O,TSI0_CH9     
   PORTB_PCR17 |= PORT_PCR_MUX(0);               // PB17设为模拟I/O,TSI0_CH10   
   
   NVIC_DisableIRQ(TSI0_IRQn);                   // 使能内核中断               
   TSI0_GENCS  = 0;
       
   TSI0_GENCS |= (TSI_GENCS_ESOR_MASK            // 选择扫描结束中断            
                           | TSI_GENCS_MODE(0)               // 设置为TSI模式               
                           | TSI_GENCS_REFCHRG(4)            // 设置参考振荡器充电电流8uA   
                           | TSI_GENCS_DVOLT(0)              // 设置振荡器电压轨            
                           | TSI_GENCS_EXTCHRG(7)            // 设置电极振荡器充电电流64uA   
                           | TSI_GENCS_PS(4)                 // 设置电极振荡器输出预分频值/16
                           | TSI_GENCS_NSCN(20)              // 设置每个电极扫描次12,最大31
                           | TSI_GENCS_TSIIEN_MASK           // 使能TSI输入中断使能         
                           | TSI_GENCS_STPE_MASK             // 低功耗模式下使能TSI模块      
                           );
    TSI0_GENCS |= TSI_GENCS_TSIEN_MASK;          // 使能TSI输入模块              
    tsiSelfCalibration();                        // 触摸按键自检                 
        NVIC_EnableIRQ(TSI0_IRQn);                   // 使能TSI中断                              
        NVIC_SetPriority(TSI0_IRQn,5);               // 设置优先级
}
上面是2个中断的程序,我把2个中断都初始化后,TSI给你可以正常工作,LPTMR中断定时器就不工作了。分开调试的话,TSI和LPTMR功能都是正常的,急!!!!!!!!!!!!求解
回复 支持 反对

使用道具 举报

该用户从未签到

85

主题

790

帖子

0

金牌会员

Rank: 6Rank: 6

积分
2279
最后登录
1970-1-1
发表于 2013-9-10 10:56:21 | 显示全部楼层

RE:飞思卡尔KL25触摸按键功能TSI(已解决)

你的意思是加入LPTMR中断以后TSI的中断就进不去了,是吧?LPTMR的周期是多大呢?
回复 支持 反对

使用道具 举报

该用户从未签到

2

主题

22

帖子

0

新手上路

Rank: 1

积分
44
最后登录
1970-1-1
 楼主| 发表于 2013-9-10 21:56:06 | 显示全部楼层

回复:飞思卡尔KL25触摸按键功能TSI(已解决)

这个问题已经解决了谢谢,是多个按键读取的时候有点问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-8-5 19:03 , Processed in 0.107634 second(s), 30 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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