半年前我在淘宝买了一块SMT32F103ZET6开发板,原理图依托狗屎,直到现在我都没有动它,大家一定要谨慎挑选。
近日笔者正在做一套六轴机械臂,同时仔细研究单片机的启动过程,于是尝试使用libopencm3开发舵机驱动程序。
众所周知,STM32F103拥有七组GPIO,每组GPIO有16个IO口,总计112个IO口,这Cortex-M3 144个引脚的封装中占了很大一部分。
GPIO有八种工作模式,其中有四种输出模式,开漏输出,推挽输出和两种复用工作模式,复用开漏输出和复用推挽输出。
(关于复用,为了确定读者真的明白复用的含义,还是要再说明一下,复用是指:在同一个物理信道上,同时传输多个信号,从而提高信道的利用率和传输效率。复用的方式有很多,例如频分复用,时分复用,码分复用,空分复用等。也就是说!如果要使用复用功能,不止要配置寄存器,还要在软件中进行相应的初始化!)
开漏输出可以输出强低点平,高电平需要外接上拉电阻。输出端相当于三级管的集电极。适用于做电流型的驱动,其吸收电流的能力相对强。
推挽输出可以输出强高强低电平,连接数字器件。输出端由P-MOS管和N-MOS管组成的单元电路控制。推挽输出既提高电路的负载能力,又提高开关速度。
(不懂P-MOS和N-MOS的去看阎石数电中的3.3 CMOS电路)
同时,PWM需要依靠定时器来实现。
Cortex-M3架构中的定时器分为三类,
关于MG-90S
关于中断