PWM信号只是控制信号,想要控制电机驱动,还需要驱动电路,比如H桥、驱动芯片等等。
正装是一个输出控制PWM信号,另一个输出低电平。
反转是一个输出低电平,另一个输出控制PWM。
设置成复用就把它当成普通的IO口,输出低电平。
要控制直流电机正反转,一般都是要接H桥电路的,用STM32控制H桥的始能端。如果电机转得慢,那么可能是接入的电压太低,或电源输出的电流太小。控制H桥的时候,一定要注意不要同时始能正反转端口,不然电机不转,就算转动,也是因为H桥不平衡的原因,转速也很慢。
主程序调用汇编定义函数如下,B指令实现无条件跳转至toggle标签
speed_test PROC
EXPORT speed_test
LDR R0,=0x40010800
LDR R1,=0x8000
toggle
STR R1,[R0,#0x10]
STR R1,[R0,#0x14]
B toggle
BX LR
ENDP
登录后复制

这次IO翻转速度又是多少,示波器(衰减10倍)测量如下:
示波器显示18M,达到了目标的IO口翻转速度
直接这么写肯定不行,STM32不支持
你可以每来一个中断,一个计数变量x加一,用这个变量x%2,
if (x==0) PB5SetBit
if(x!=0) PB5ResetBit
大概就是这种思路,C语言灵活性很强,多想想还有很多办法的
本文标签:stm32h7io反翻转