金牌会员
- 积分
- 1462
- 威望
- 691
- 贡献
- 329
- 兑换币
- 391
- 注册时间
- 2016-11-2
- 在线时间
- 221 小时
- 毕业学校
- 山东蓝翔高级技工学校
|
使用LPTMR进行编码器测速,寄存器的计数值显示为零,测速函数是写在中断里的,到底是软件的问题还是硬件的问题?
- <div>void main(void)
- {
- DisableInterrupts;
- #define INT_COUNT 0xFFFF //LPT 产生中断的计数次数 即溢出值//写于主函数第一行
- lptmr_timing_ms(1000);
- set_vector_handler(LPTMR_VECTORn,LPTMR_IRQHandler);
- FTM_PWM_init(FTM2, FTM_CH1, 1000, 50); //FTM模块产生PWM,用 FTM0_CH4 ,即 PTB18 ,频率为 100,占空比 50%
- lptmr_pulse_init(LPT0_ALT1, INT_COUNT, LPT_Rising); //初始化脉冲计数器,用LPT0_ALT1,即PTA19输入,每隔INT_COUNT产生中断(需要开中断才能产生中断),上升沿
- EnableInterrupts;
- while(1)
- {
-
- }
- }
- void LPTMR_IRQHandler()
- {
- count1 = lptmr_pulse_get(LPT0_ALT1,LPT_Rising);</div><div>lptmr_pulse_clean(LPT0_ALT1,LPT_Rising); //清空脉冲计数器计算值
- LPTMR_Flag_Clear();
- }</div>
复制代码
|
|