一、传感器
1.使用mpu6050 dmp库时,需要定期读取数据,太久没读取会造成读取不正确(不知道什么问题,使用过程中发现的bug?)
二、MCU
1.stm32
1)stm32g431通过cubemx生成的工程默认开启FPU
2)在配置dma时,一定要注意内存和外设长度,在配置stm32g431使用dma方式输出pwm时,参考的教程的tim是16位,忘记g431 tim2是32位,导致设置完成后不能正常输出波形
把外设程度改为word后,pwm输出正常
3)stm32高级定时器tim1中央对齐pwm,pwm频率为:定时器时钟频率/分频系数/pwm频率/2,不需要减一
如下图,定时器时钟频率为170MHz, 170000000/1/20000/2=4250
如果同时使能定时器更新中断,产生一个pwm波的同时会产生两次中断,所以将重复计数寄存器设为1,定时器每更新两次产生一个中断
4)使用stm32g431cbu6是,要将PB6映射为硬件IIC引脚,但是PB6默认为BOOT0引脚,将次引脚拉高将导致单片机不能正常启动,需要通过Option Bytes将该引脚设为普通IO功能。
具体操作(工具:STM32 ST-LINK Utility)
①Target->connect
②Target->Option Bytes
③取消勾选nSWBOOT0位
④Apply
重启单片机即可正常启动,同时PB8可作为普通IO使用