在线时间1 小时
UID421134
注册时间2012-11-12
NXP金币0
该用户从未签到
新手上路

- 积分
- 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功能都是正常的,急!!!!!!!!!!!!求解 |
|