stm32输出比较PWM
OC 输出比较
IC 输入捕获

CNT:时机单元 的计数器

有效电平:高电平 冻结:暂停pwm
无效电平:低电平


产生1个1khz 占空比为50,分辨率为1%的pwm波形

1Mhz=1000000hz
ARR=100 CCR=50 PSC=720;


20ms=50hz

TB661驱动电路的硬件图
AIN1给 高 AIN2给 低 pwm为高电平时 反转,pwm为低电平时 正转 当频率足够大时 就能进行反转
正转同理
pwmled呼吸灯
使能GPIO 配置时机单元 配置比较单元 配置复用GPIO

配置比较单元:

设置pwm比较的值:

初始化定时器:

初始化GPIO:

输出模式改为复用的推挽输出
要实现PWM值的不断的变换 就需要不断的改变rcc的值
需要用到配置比较单元的函数:

在主函数中不断更改rcc的值

AFIO 重映射功能:
看引脚的定义:
开启AFIO的重映射时钟

设置复用端口: 复用端口刚好为调试端口 写第三句 关闭JTAG的调试端口
这里是将PA0的io口重映射到了PA15
PWM驱动舵机:

输出这个波形 就ok了
同时使用两个通道输出PWM,频率必须是一样的,rcc占空比可以设置的不一样

频率是20ms 就是50hz ,ARR给20k 对应的就是20ms
CCR给500对应的就是0.5ms
输出的CCR在配置结构体的时候给0
然后调用pwm中的设置函数设置占空比就可以了
可以将角度的调整封装成函数

数学关系进行角度的缩放

利用先前的按键读取来进行角度的变换

直流电机驱动的接线方法:
VM接5v vcc接3.3v AO1和AO2接直流电机的两个引脚
PWMA 接stm32的PWM输出口,AN1和AN2再任意接stm32的两个任意IO口 这个是控制方向

初始化 控制方向的两个脚,pwm初始化
设置高频率 降低预分频 就不会有蜂鸣器的声音了
更多推荐
所有评论(0)