//红外遥控初始化
//设置IO以及定时器4的输入捕获
void Remote_Init(void)
{
RCC->APB1ENR|=1<<2; //TIM4 时钟使能
RCC->APB2ENR|=1<<3; //使能PORTB时钟
GPIOB->CRH&=0XFFFFFF0F; //PB9 输入
GPIOB->CRH|=0X00000080; //上拉输入
GPIOB->ODR|=1<<9; //PB9 上拉
TIM4->ARR=10000; //设定计数器自动重装值 最大10ms溢出
TIM4->  SC=71; //预分频器,1M的计数频率,1us加1.
TIM4->CCMR2|=1<<8; //CC4S=01 选择输入端 IC4映射到TI4上
TIM4->CCMR2|=3<<12; //IC4F=0011 配置输入滤波器 8个定时器时钟周期滤波
TIM4->CCMR2|=0<<10; //IC4PS=00 配置输入分频,不分频
TIM4->CCER|=0<<13; //CC4P=0 上升沿捕获
TIM4->CCER|=1<<12; //CC4E=1 允许捕获计数器的值到捕获寄存器中
TIM4->DIER|=1<<4; //允许CC4IE捕获中断
TIM4->DIER|=1<<0; //允许更新中断
TIM4->CR1|=0x01; //使能定时器4
MY_NVIC_Init(1,3,TIM4_IRQChannel,2);//抢占1,子优先级3,组2
}
在配置定时器时是不是不用配置到底是输入还是输出?上述程序貌似没有配置TIM寄存器是输出还是输入的语句?而只需配置io口输入输出就行?? |