单片机源程序如下:
- void main(void)
- {
- u16 count;
- DisableInterrupts; //禁止总中断
- FTM_PWM_init(FTM1, CH0, 100, 50); //FTM模块产生PWM,用 FTM1_CH0 ,即 PTA8 ,频率为 100
- lptmr_counter_init(LPT0_ALT2, INT_COUNT, 2, LPT_Rising); //初始化脉冲计数器,用LPT0_ALT2,即PTC5输入,每隔INT_COUNT产生中断,延时2个时钟滤波,上升沿触发
- EnableInterrupts; //开总中断
- while(1)
- {
- if( LPT_INT_count > 0 )
- {
- count = LPTMR0_CNR; //保存脉冲计数器计算值
- lptmr_counter_clean(); //清空脉冲计数器计算值(马上清空,这样才能保证计数值准确)
- printf("LPT产生一次中断啦:%d\n", LPT_INT_count * INT_COUNT + count); //打印计数值
- LPT_INT_count = 0; //清空LPT中断次数
- }
- }
- }
- void LPT_Handler(void)
- {
- LPTMR0_CSR |= LPTMR_CSR_TCF_MASK; //清除LPTMR比较标志
- LPT_INT_count++; //中断溢出加1
- }
- void PIT0_IRQHandler()
- {
- pit_flag = 1; //标记进入PIT中断
- PIT_Flag_Clear(PIT0); //清中断标志位
- }
- #undef VECTOR_101
- #define VECTOR_101 LPT_Handler
- #undef VECTOR_084
- #define VECTOR_084 PIT0_IRQHandler //重新定义84号中断为PIT0_IRQHandler中断
- extern void LPT_Handler(void);
- extern void PIT0_IRQHandler(void); //PIT0 定时中断服务函数
复制代码
所有资料51hei提供下载:
K60 smartcar最终代码.rar
(1.72 MB, 下载次数: 10)
|