基本原理是将Timer2的比较输出设置到PB11上,然后配置Timer2并从该引脚输出方波。 代码如下,但是引脚PB11上什么都没有,一直保持低电平,哪位能帮我看看怎么回事。
RCC->APB1ENR |= 0x01; //Enable timer2 clock. TIM2->CR2 = 0x00; TIM2->CCMR2 = 0x3000; //CH4, 发生比较匹配时切换状态(方波) TIM2->CCR4 = 1000; //比较值是1000 TIM2->CCER = 0x1000; //允许CH4
temp = GPIOB->CRH; //引脚PB11的配置 temp &= 0xFFFF0FFF; temp |= 0x0000B000; GPIOB->CRH = temp; //PB11 是高速输出引脚,与外设相连
temp = AFIO->MAPR; //启用引脚映射,采用PB11作为Timer2的CH4输出。 temp &= 0xFFFFFCFF; temp |= 0x00000200; AFIO->MAPR = temp;
TIM2->CR1 |= 0x01; //启动Timer2的计数
通过调试可以看到代码执行过程中Timter2的状态寄存器中的CH4位已经被置位。 |