PA8口是用的TIM1高级定时器,如果直接用其他通用定时器的设置是无法直接输出PWM的,要加上TIM1->BDTR=0x8000这一句代码才可以使用。
那我猜TIM1和TIM8对应的所有IO口想输出PWM都要配置一下这个寄存器,TIM8所有通道想输出的话应该加上TIM8->BDTR=0x8000,但是为啥要配置这个寄存器不知道,也是看了别人的评论才知道配这个寄存器的,可能是我调用了串口1,在对串口1进行配置的时候影响了PA8口?
2023.06.20追加
看到这个文章帮助到了别人我很高兴,现在回答一下自己先前提的问题,即为何要有TIM8->BDTR=0x8000这句话才能输出PWM。
在进行PWM输出时,我们对TIM1 和TIM8 捕获/比较使能寄存器(TIMx_CCER)进行了操作,使能了OC1的输出,在我程序中有这么一句TIM1->CCER|=1<<0; 通过看芯片手册中TIMx_CCER的说法:
要开启OC1的输出,其输出电平依赖于MOE……的值,而我们看TIM1 和TIM8 刹车和死区寄存器(TIMx_BDTR)的说法:
要开启OC和OCN输出则要打开MOE使能,所以我们代码中要有TIM1->BDTR=0x8000这一句,并且这句代码一定要放在TIM1->CCER|=1<<0即输出使能OC1之前。