基于STM32F407的五路PWM输出控制舵机----学习笔记

五路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文件查到

中断函数如下:

第一次写博客,欢迎指正。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值