各位大侠:这两天我一直在做一个捕获输入的实验 因为在参考手册上看到了这个模式 所以就想写一段代码验证一下。废话不多说直接上代码 想要实验的功能:TI1输入的上升沿时捕获计数器的值到TIMXCCRI寄存器中 若捕获到了 则产生中断 :LED1亮。 现在的现象ED1 一直不亮啊!我是按照手册上的说明来进行配置的 想问问大家 这样做到底对不对?哪里出错了? 代码: 主函数 #include <stm32f10x_lib.h> #include "delay.h" #include "sys.h" #include "usart.h" #include "led.h" #include "timer.h" int main(void) { Stm32_Clock_Init(9); //ϵͳʱÖÓÉèÕâ uart_init(72,9600); //´®¿Ú³õʼ»¯ delay_init(72); LED_Init(); TIMER2_Init(5000,7199); while(1) { LED0=!LED0; delay_ms(200); } timer.c #include "timer.h" #include "led.h" void TIM2_IRQHandler(void) { if(TIM2->SR&0x0002) { LED1=!LED1; } TIM2->SR&=~(1<<1); } void TIMER2_Init(u16 arr,u16 psc) { RCC->APB1ENR=1<<0; TIM2->ARR=arr; TIM2->SC=psc; TIM2->CCMR1=0X0001; TIM2->CCER=0X0001; TIM2->SMCR=0X057; TIM2->CR1=0X0080; TIM2->DIER=0X0002; TIM2->CR1|=1<<0; MY_NVIC_Init(1,3,TIM2_IRQChannel,2); } } |
你是捕捉TI1,对的引脚上的上升沿的信号。
用TI2作为timer,所以void TIMER2_Init(u16 arr,u16 psc)是配置一个定时器。
所以你还需要把ti1配置成一个输入信号端口呀,现在你没这个函数呢。。。。