五路PWM输出分别是TIM4的四个通道和TIM3的通道三
通过原理图分别对应引脚PD12 PD13 PD14 PD15 和PC8
部分代码如下:
有几个点我觉得是我要注意的地方:
首先是时钟使能,在F1里面是使能AFIO时钟,F4是SYSCFG时钟,用于复用,引脚一定要对应上,并且配置成推挽复用。
然后注意自动重装载值arr和预分频psc的值
arr是计数,从0到设定值,然后返回至0重新开始计数(也可以看成pwm的机械周期:将一个pwm周期分为多少份)
psc是预分频系数,决定一次计数的时间。
决定舵机转动角度的是crr(比较寄存器),它决定了PWM的占空比(高电平持续时间和低电平持续时间之间的比例)和脉冲宽度(高电平持续时间)。
具体可以参考:
(5条消息) STM32定时器的预装载值和预分频系数如何确立_违章的王的博客-CSDN博客
但是一定要注意时钟的频率是多少,比如我这里就是84MHz
还有就是PWM的通道问题,一个PWM有四个通道,图中代码配置的是引脚C8,对应的时钟通道是TIM3的通道三,于是初始化TIM3的时候配置的是OC3,就是图中的TIM_OC3Init()这个函数,代表我配置的是通道三,注意一定要和引脚对上
然后还写了两个按键的外部中断
部分代码如下:
首先配置NVIC 这里要注意比如按键三是PE6 所以对应的中断向量是EXTI9_5_IRQn
而按键四对应的引脚是PC13 对应中断向量是 EXTI15_10_IRQn
然后初始化按键引脚的GPIO 这里注意这个中断线EXTI_Line和中断向量和引脚要对应上,和后面的中断函数要对应上,中断函数的名字是固定的,可以在Startup里面的.s文件查到
中断函数如下:
第一次写博客,欢迎指正。