# | Link | Category | Reference | Description |
---|---|---|---|---|
1 | en.stsw-stm32068.zip | template codes | ST official template codes | |
2 | STM32F4开发指南-库函数版本_V1.1.pdf | tutorial | openedv tutorial handbook for STM32F4 programming | |
3 | MPU6050 driver codes | template codes | ||
4 | STM32F401xB_STM32F401xC.pdf | datasheets | STM32F401RBT6 MCU datasheets | |
5 | STM32F4DISCOVERY board User Manual.pdf | Usermanuals | STM32F4DIS usermanual (schematic included) | |
6 | STM32F4DIS-BB REV1.0.pdf | Schematic | STM32F4DIS-BB schematic | |
7 | MPU6050_spec.pdf | Datasheet | MPU6050 datasheet | |
8 | MPU6050-Register-Map.pdf | Develop Note | MPU6050 register map | |
9 | MPU9250_spec.pdf | Datasheet | MPU9250 datasheet | |
10 | MPU9250-Register-Map.pdf | Develop Note | MPU9250 register map | |
11 | MPU9250 STM32 drive codes | template codes | init codes in github | |
12 | AK8963.pdf | Datasheet | datasheet of magnetometer in mpu9250 | |
13 | kriswiner - Affordable-9-DoF-Sensor-Fusion | Tutorial | Invensense 6 dof fusion DMP vs opensource 9 dof fusion | |
14 | MPU-6050 Redux: DMP Data Fusion vs. Complementary Filter | Tutorial | DMP data filtering | |
15 | SparkFun_MPU-9250-DMP_Arduino_Library | template code | together with #16 | |
16 | Invensense DMP official core codes | template code | ver 6.12, work together with #15 | |
17 | Data flow | instruction | a diagram demonstrate how data flows in DMP | |
18 | Tilt Compensated Compass | tutorial | calibrate megnetometer | |
19 | Kalman filter code for IMU | template code | github | |
20 | Adafruit AHRS | template code | github, opensource data fusion from Madgwick besides DMP | |
21 | test data of Madgwick AHRS | tutorial | ||
22 | Madgwick AHRS | template code | github, official code | |
23 | Simple-and-Effective-Magnetometer-Calibration | tutorial | kriswiner's magnetometer calibration | |
24 | calibrate-magnetometer | tutorial | a more general tutorial | |
25 | UART DMA | codes | DMA tutorial | |
26 | printf DMA | codes | STM32 printf DMA | |
27 | another printf DMA | codes | STM32 printf DMA using queueing | |
28 | solve va start end problem in #26 | tutorial | ||
29 | printf with HAL_UART_Transmit_IT? | tutorial | important discussion to implement dma printf | |
30 | Open source IMU and AHRS algorithms | tutorial | madgwick AHRS including matlab code and others |
# | Troubles | Solutions |
---|---|---|
1 | 程序跑飞复位 | 重新上电,按住重启,用st_utility在connect after reset设置下连接,松开重启 |
2 | L6406E RAM空间溢出 | configTOTAL_HEAP_SIZE ( ( size_t ) ( 62 * 1024 ) ) |
3 | freertos进不去task |
FREERTOS_CONFIG_H
#define vPortSVCHandler SVC_Handler #define xPortPendSVHandler PendSV_Handler stm32f4xx_it.c/h 注释掉SVC_Handler和PendSV_Handler |
4 | HAL和FreeRTOS的延迟函数不工作 |
在it.c文件中新建systick_handler函数
加入 HAL_IncTick(); HAL_SYSTICK_IRQHandler(); |
5 | HAL和FreeRTOS的延迟中断函数冲突 |
CUBE生成工程时不用systick做timebase source
在it.c文件中的TIM1_UP_TIM10_IRQHandler函数中加入 HAL_IncTick(); HAL_SYSTICK_IRQHandler(); |
6 | 使用HSE跑飞 |
1.改良晶振电路,采用更好的晶振或有源晶振;
2.降频使用 |
7 | DMA不工作 | |
8 | MPU6050连接不上 | 试解决方法:用pb6,pb9,加测试接口(含pb7),使用有源晶振 |
# | issues |
---|---|
1 | MAG3110->HMC5883L/MPU9250 |
2 | remove photocoupler |
3 | 圆圈开口 |
4 | reserve CH340 |
5 | SMT 10uF capacitor |
6 | package optimization |
7 | tighten 3d printed parts, add tightening screwer |
8 | reduce the size of motor connector |
9 | nylon screwer |
10 | tester via |
11 | change usb connector |
12 | modify crystal circuit, or use active crystal,gnd ring, shell gnd |
13 | tester via for I2C |
#include <stdio.h>
#include <stdarg.h>
...
void DMA_printf(const char *format,...)
{
uint32_t length;
va_list args;
uint8_t buffer[256];
va_start(args, format);
length = vsnprintf((char*)buffer, sizeof(buffer), (char*)format, args);
va_end(args);
if(HAL_UART_Transmit_DMA(&huart1, (uint8_t *)&buffer, length)!= HAL_OK)
{
Error_Handler();
}
}
T1: 乱码