搭建主体框架
- 配置主时钟,RCC,一般是外部晶振
- 选定系统时钟
- 开启串口1,
这个可以说是必须的,因为要通过它看调试信息,print重定义的位置
- 操作系统的配置
这个也许以后还真会用上,后续看吧
-
系统时钟选择
使用RTOS时不改会有这个警报
- 生成
print的重定义
- 在main.c但是main函数外进行重定义
- 另外,需要 #include “stdio.h”
/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */
/* USER CODE BEGIN 0 */
int fputc(int ch, FILE *fp)
{
while(!(USART1->SR * (1<<7)));
USART1->DR = ch;
return ch;
}
// 用printf /r/n才能换行
/* USER CODE END 0 */
\r\n可以换行,其它都无效,用空格替代
这边是对 fputc 进行的重定义
“如果用户有定义,则用用户定义的函数。如果没有定义,则用这边这个”
总览
配置的几个进程会在 freertos.c内部
#include "stdio.h"基本每个都需要
下载
按复位才能下载的问题
改代码
msp.c中改为NOJTAG
改配置
环境采集总览
- 环境的采集必须优先实现且频率最高
MPU6050
- 传感器的驱动,以及eMLP库的使用
- mpu_dmp_get_data() 这个是在调用库
- acc_x,acc_y,acc_z 加速度
- gyro_x,gyro_y,gyro_z 角速度
- pitch 俯仰角
- roll 翻滚角
- yaw 偏航角
- 驱动,
- IIC接口
其实应该各种协议都可以传数据,你的代码尚且还是用的 UART 传的呢
这个不对不对,ST-LINK上是clk和dio,不是rx和tx
ST-LINK和 USB转TTL不一样
芯片管脚
- IIC的两根管脚,SCL和SDA
- 时钟线和数据线
- 一种思路是把STM上的两根管脚的功能配置为IIC
- 这边利用的另外一种常用的demo,只需要把他们配置为普通的GPIO
- 然后对GPIO采用IIC时序模拟的方法来进行驱动
- 这样子的好处就是要移植吧
- 把一个GPIO弄为GPIO_Output,并且可以进行一个重命名
- MPU6050(主要看地址)
- 悬空或接地 0x68(104)
- 接VCC 0x69(105)
不同的芯片,GPIO寄存器的格式不同,MODER与CRH/CRL
CRH,CRL。16端口下的,0~7GPIO寄存器用的CRL,其它用的CRH
不同的芯片,引入delay.c时注意要修改主频。否则容易照成时序的混乱
不同的芯片,sys.h下寄存器的地址偏移也要修改,不一样的
调用eMPL库计算欧拉角
- 添加全局的宏,修改函数
关于这个移植,应该修改平台,调用其中mpu的库函数
- 读取速度要相对快一些,读取是200Hz,放到FIFO中
- 读取太慢FIFO会溢出
- 数据读错时的一些操作