|
使用STM8S003F3P6的定时器2的捕获功能,只有复位的时候才能进入中断,是什么问题?
- void capture_init(u8 psc,u16 arr)
- {
- CLK_PCKENR1|=1<<5; //开启TIM2时钟
-
- PD_DDR&=~(1<<3);//设置为输入模式
- PD_CR1|=1<<3;//设置为上拉输入
- PD_CR2&=~(1<<3);//不使用中断
-
- TIM2_PSCR=psc; //2^psc次方分频
- TIM2_ARRH=arr>>8; //必须先设置ARR的高字节
- TIM2_ARRL=arr&0XFF;//再设置低字节
-
- TIM2_CCMR2|=1<<0; //CC2映射在TI2FP2上
- TIM2_CCMR2|=0<<2; //无预分频,每个事件一次捕获
- TIM2_CCMR2|=0<<4; //无滤波,Fmaster采样.
-
-
- TIM2_CCER1|=1<<5;//IC2下降沿触发
- TIM2_CCER1|=1<<4;//IC2输入捕获使能,允许捕获计数器的值到捕获寄存器中
-
-
- TIM2_CR1|=1<<7; //预装载使能
- TIM2_IER|=1<<2; //通道2,捕获中断使能
- TIM2_CR1|=1<<0; //使能TIM2
- }
- //中断服务函数
- #pragma vector=0x10
- __interrupt void TIM2_CAP_COM_IRQHandler(void)
- {
-
- uint16_t data;
- if(TIM2_SR1&0x04)//捕获2发生捕获事件
- {
- data=(TIM2_CCR2H<<8)+TIM2_CCR2L;
- printf("通道2发送捕获中断\r\n");
- TIM2_SR1&=~(1<<2);//清除捕获中断标志位
- }
-
- }
复制代码 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
如果天空是黑暗的,那就摸黑生存;
如果发出声音是危险的,那就保持沉默;
如果自觉无力发光,那就蜷伏于牆角。
但是,不要习惯了黑暗就为黑暗辩护;
也不要为自己的苟且而得意;
不要嘲讽那些比自己更勇敢的人。
我们可以卑微如尘土,但不可扭曲如蛆虫。
|