1、openmv 模块(星瞳)
参考使用手册,这里注意的是阈值的选取以及常见的标点符号等低级错误,占用一个串口。
2、舵机(三根线:信号线 电源线、地线)
- 供电问题,pwm(定时器)要初始化端口,初始化可以只进行一次,放在while(1)之前使用
- 舵机的周期要是20ms即50hz
- 占空比要改引脚(高电平、低电平持续时间)
- 每个舵机动作后面都要加延时,否则的话舵机会没有时间转过去
3、PWM
TIM_SetCompare1(TIM4,pwm); 这里的pwm改变的是占空比
4、OLED(IIC通信)
IIC通信,软件模拟IIC 定义两个端口,再将 OLED初始化即可
5、增加串口
要记得改引脚,如果想用printf()函数,记得把.h文件里的fputc文件改一下,且把其他的串口中的fputc()注释掉;
6、定时器
- TIM5_Int_Init(500,8400);定时器时钟84M,分频系数8400,所以时钟频率84M/8400=10KHZ,500代表计数500次,即500ms
- 注意中断服务函数中的清除中断标志位(如果不加此位,就会始终在中断服务程序中),可以把中断服务函数放前面
7、陀螺仪(MPU 6050)
- 如果读取的ID号有问题,则将端口设置为开漏输出
- 注意读取数据的时间要尽可能的短,否则则会有FIFO溢出问题
- 使用的是IIC通信
- 如果使用陀螺仪内部的终端的话,要占用一个32单片机的外部中断引脚
- 指针相当于全局变量,要先给他一个地址,即先定义,&p代表的是P的地址,*p 代表取得是P的地址里的数
8、最低级的错误
主函数while(1):如果不加则主函数会一直循环执行无数次;若加了while(1),主函数只运行一次,则是告诉单片机程序还未结束,则会每隔一段时间进入定时器中断服务函数
9、蓝牙(相当于一个串口)
利用TTL转USB 设置波特率,密码然后插到板子的串口上,即可读数据
10、 STM32 四线下载口
VCC和USB不能同时给芯片供电,VCC指的是下载芯片给STM32板供电
|