智能车制作
标题:
lmptr脉冲计数,怎么上线是100啊,怎么改啊?求大神讲解啊~
[打印本页]
作者:
阿乾
时间:
2014-4-19 20:02
标题:
lmptr脉冲计数,怎么上线是100啊,怎么改啊?求大神讲解啊~
void lptmr_counter_init(LPT0_ALTn altn, u16 count, u8 PrescaleValue, LPT_CFG cfg)
{
if(PrescaleValue > 0x0f)PrescaleValue = 0x0f;
//设置输入管脚
if(altn == LPT0_ALT1)
{
SIM_SCGC5 |= SIM_SCGC5_PORTA_MASK; //打开 PORTA 时钟
PORTA_PCR19 = PORT_PCR_MUX(0x6); //在PTA19上使用 ALT6
}
else if(altn == LPT0_ALT2)
{
SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK; //使能 PORTC 时钟
PORTC_PCR5 = PORT_PCR_MUX(0x4); //在PTC5上使用 ALT4
}
else //不可能发生事件
{
assert_failed(__FILE__, __LINE__); //设置管脚有误?
}
/* 开启模块时钟 */
SIM_SCGC5 |= SIM_SCGC5_LPTIMER_MASK; //使能LPT模块时钟
/* 清状态寄存器 */
LPTMR0_CSR = 0x00; //先关了LPT,这样才能设置时钟分频等
/* 设置累加计数值 */
LPTMR_CMR_REG(LPTMR0_BASE_PTR) = LPTMR_CMR_COMPARE(count); //设置比较值
/* 时钟选择 */
LPTMR_PSR_REG(LPTMR0_BASE_PTR) = LPTMR_PSR_PCS(0x1) | LPTMR_PSR_PBYP_MASK | LPTMR_PSR_PRESCALE(PrescaleValue); //使用 LPO clock 且 bypass glitch filter
// 开启和配置脉冲滤波器:2^n个时钟上升沿才识别
/* 管脚设置、使能中断 */
LPTMR_CSR_REG(LPTMR0_BASE_PTR) = LPTMR_CSR_TPS(altn) | LPTMR_CSR_TMS_MASK | ( cfg == LPT_Falling ? LPTMR_CSR_TPP_MASK : 0 ) | LPTMR_CSR_TEN_MASK | LPTMR_CSR_TIE_MASK ;
// 选择输入管脚 选择脉冲计数 下降沿 上升沿 使能LPT
// TFC = 0,即计数值等于比较值时,计数值复位
enable_irq(LPTMR_irq); //开引脚的IRQ中断
}
作者:
黯伤人
时间:
2014-4-20 02:57
调用的时候count位置改成别的数,lptmr_counter_init(LPT0_ALT1,1000,2,LPT_Rising); 这个上限1000
作者:
1412972384
时间:
2014-4-20 08:27
。。。
作者:
abacrya、军
时间:
2014-4-29 21:04
黯伤人 发表于 2014-4-20 02:57
调用的时候count位置改成别的数,lptmr_counter_init(LPT0_ALT1,1000,2,LPT_Rising); 这个上限1000
请教一下 怎么读取 技术器里的值呢? 谢谢啦
作者:
黯伤人
时间:
2014-4-29 23:22
直接将LPTMR0_CNR赋给变量,然后清零
作者:
liming77
时间:
2016-3-1 13:13
把你的countde值改掉就可以了
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2