我用的是非战舰的那个
因为RMT口连着PA1口,我看PA1口对应着TIM2 的CH2 所以编写了一下初始化代码(我对应着战舰办的那个写的)
void TIM2_init(u16 arr,u16 psc)
{
RCC->APB1ENR|=1<<0;
RCC->APB2ENR|=1<<2; //时钟设置
GPIOA->CRL&=0XFFFFFF0F; //PA 删除设置
GPIOA->CRL|=0X00000080; //把PA0弄成输入
GPIOA->ODR|=0<<1; //PA拉低
TIM2->ARR=arr;
TIM2->  SC=psc;
// TIM2->CCMR1|=1<<8; //因为是通道2 所以都去配置 CCMR1 的 8-15位 配置方式有两种 分别映射TL1 TL2
// TIM2->CCMR1&=~(1<<9);
TIM2->CCMR1|=1<<9;
TIM2->CCMR1&=~(1<<8);
TIM2->CCMR1|=0<<12; //不滤波器
// TIM2->CCMR1|=0<<2; //这句 网上代码有的 不明白什么意思
TIM2->CCER|=0<<1; //捕获上升沿
TIM2->CCER|=1<<0; //允许捕获寄存器
TIM2->DIER|=1<<1; //开启捕获中断
TIM2->DIER|=1<<0; //使用中断更新
TIM2->CR1|=0x01; //使能TIM2
MY_NVIC_Init(2,0,TIM2_IRQChannel,2);
}
中断内就一句
void TIM2_IRQHandler(void)
{
printf("a");
TIM2->SR=0;
}
结果是 串口不断的输入a;
也就是不停的进这个中断啊 !!请问是哪里出错了
main.c 中while是空的
TIM2_init 就初始化过一次 在main.c
|