首先要看每个文件的功能和作用,这个工程较清晰,基本一个文件就是一个模块。源码地址:https://github.com/Crazepony/crazepony-firmware-none/archive/test_original_baro.zip;
梳理一下整体的模块功能:
startup文件夹下(底层):
core_cm3.c:arm系列的文件,CMSIS Cortex-M3核的串口接入源文件;
system_stm32f10x.c:看注释是初始化系统时钟的源文件;
startup_stm32f10x_md.s:系统堆栈的文件,看注释是起始程序要在哪开始执行;
HardWareDriver文件夹下(驱动层):
delay.c:延时功能模块;
led.c:控制所有led灯的驱动模块;
MPU6050.c:陀螺仪控制驱动模块;
iic.c:iic驱动模块;
Tim.c:定时器模块;
moto.c:pwm控制模块;
NRF24L01.c:控制无线收发芯片的模块;
SPI.c:SPI驱动模块;
stmflash.c:片上flash的驱动模块;
UART1.c:串口驱动功能模块;
Battery.c:电压检测驱动模块;
DMP.c:陀螺仪硬件结算功能模块;
BT.c:蓝牙驱动模块;
HMC5883.c:电子罗盘驱动模块;
MS5611.c:气压计驱动模块;
FT.c:没看懂,像似气压计相关模块,先这样写;
User_Src(应用层):
main.c:系统主函数文件;
stm32f10x_it.c:中断服务程序模块;
Sys_Fun.c:中断配置功能模块;
CommApp.c:与手机通信的功能模块;
CommPc.c:与PC机通信的功能模块;
imu.c:姿态解算与融合模块;
Altitude.c:高度逻辑控制模块;
filter.c:滤波模块;
ConfigTable.c:eeprom表配置模块;
IMUSO3.c:姿态解算模块;
FailSafe.c:失效保护模块;
Lib文件夹下(arm库函数模块):
不详细介绍了,都是用到的arm库函数;
Control文件夹下:
Control.c:PID控制算法;
ReceiveData.c:无线数据接收模块;
先梳理到这里。