完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
初始化All_Init();
函数在BSP_Init.c中 看下源程序 u8 All_Init() { NVIC_PriorityGroupConfig(NVIC_GROUP); //中断优先级组别设置 SysTick_Configuration(); //滴答时钟 Delay_ms(100); //延时 Drv_LED_Init(); //LED功能初始化 Flash_Init(); //板载FLASH芯片驱动初始化 Para_Data_Init(); //参数数据初始化 Remote_Control_Init(); PWM_Out_Init(); //初始化电调输出功能 Delay_ms(100); //延时 Drv_SPI2_init(); //spi_2初始化,用于读取飞控板上所有传感器,都用SPI读取 Drv_Icm20602CSPin_Init(); //spi片选初始化 Drv_AK8975CSPin_Init(); //spi片选初始化 Drv_SPL06CSPin_Init(); //spi片选初始化 sens_hd_check.gyro_ok = sens_hd_check.acc_ok = Drv_Icm20602Reg_Init(); //icm陀螺仪加速度计初始化,若初始化成功,则将陀螺仪和加速度的初始化成功标志位赋值 sens_hd_check.mag_ok = 1; //标记罗盘OK sens_hd_check.baro_ok = Drv_Spl0601_Init(); //气压计初始化 U***_Hid_Init(); //飞控u***接口的hid初始化 Delay_ms(100); //延时 Usart2_Init(115200); //串口2初始化,函数参数为波特率 Delay_ms(10); //延时 // Uart4_Init(115200); //首先判断是否连接的是激光模块 // if(!Drv_Laser_Init()) //激光没有有效连接,则配置为光流模式 // Uart4_Init(500000); // Delay_ms(10); //延时 // Usart3_Init(500000); //连接UWB // Delay_ms(10); //延时 // Uart4_Init(19200); //接优像光流 Uart5_Init(115200);//接大功率激光 // MyDelayMs(200); //优像光流初始化 of_init_type = (Drv_OFInit()==0)?0:2; if(of_init_type==2)//优像光流初始化成功 { //大功率激光初始化 Drv_Laser_Init(); } else if(of_init_type==0)//优像光流初始化失败 { Uart4_Init(500000); //接匿名光流 } // Drv_AdcInit(); Delay_ms(100); //延时 All_PID_Init(); //PID初始化 Drv_GpsPin_Init(); //GPS初始化 串口1 Delay_ms(50); //延时 Drv_HeatingInit(); // Drv_HeatingSet(5); // Sensor_Basic_Init(); // ANO_DT_SendString(“SYS init OK!”); return (1); } 其中 中断优先级组别设置,滴答时钟,LED功能初始化,板载FLASH芯片驱动初始化是Stm32自带库函数,不需要细看 1.Para_Data_Init()参数初始化 函数在Ano_FcData.c文件中, 最终执行的是Ano_Parame_Read()函数 void Ano_Parame_Read(void){ Flash_SectorsRead ( 0x000000, &Ano_Parame.byte[0], 1 ); //读取第一扇区内的参数 if(Ano_Parame.set.frist_init != SOFT_VER) //内容没有被初始化,则进行参数初始化工作 { Parame_Reset(); PID_Rest(); Ano_Parame_Write(); } Parame_Copy_Para2fc(); } Parame_Reset(), PID_Rest()参数初始化,重置成写死在程序里的默认参数,也就是地面站点击默认参数上看到那些参数 Ano_Parame_Write(void) 将参数写入第一扇区,这个函数作用是将寄存器中值的写进闪存 { All_PID_Init(); //存储PID参数后,重新初始化PID Ano_Parame.set.frist_init = SOFT_VER; Parame_Copy_Fc2para(); Flash_SectorErase ( 0x000000, 1 ); //擦除第一扇区 Flash_SectorsWrite ( 0x000000, &Ano_Parame.byte[0], 1 ); //将参数写入第一扇区 } 2.Remote_Control_Init();遥控器输入类型 函数在Ano_RC.c文件 void Remote_Control_Init() { // RC_IN_MODE = Ano_Parame.set.pwmInMode; // if(RC_IN_MODE == SBUS) { Drv_SbusInit(); } else { PWM_IN_Init(RC_IN_MODE); } } 就是 根据参数RC_IN_MODE,地面站上可以设置,subs或ppm或pwm,判断是执行那种驱动,但是我用的版本***us一直没有信号输入进来,用示波器监控硬件也是有观测到芯片管脚的输入,但是软件中断抓不到信号,最后也是懒得换就用pwm用了,但按匿名那边的说法他们这个***us是可以是使用的,接着往下看 这个if和else程序读起来怪怪的,判断的是RC_IN_MODE在subs执行的Drv_SbusInit()函数在Drv_***us.c文件中,执行的任务是SBUS驱动,else语句中PWM_IN_Init()函数又进行了一个if判断RC_IN_MODE,然后subs是前面执行过所以是空的,else if判断是pwm还是ppm,最后执行初始化驱动,底层能跑通的话就不用细究了。 3.PWM_Out_Init ()电调输出的初始化 在Drv_pwm_out.c文件中。这里注意文件的上方的宏定义 //21分频到 84000000/21 = 4M 0.25us /*初始化高电平时间1000us(4000份)*/ //#define INIT_DUTY 4000 //u16(1000/0.25) #define INIT_DUTY 4000 //u16(1000/0.25) /*频率400hz*/ #define HZ 400 /*精度10000,每份0.25us*/ #define ACCURACY 10000 //u16(2500/0.25) //accuracy /*设置飞控控制信号转换比例为4*/ #define PWM_RADIO 4//(8000 - 4000)/1000.0 这里的意思是输出的信号除以4才是实际的输出,比如实际中需要脉宽1500的信号,在这里必须是1500*4 = 6000才行 4.spi_2初始化,用于读取飞控板上所有传感器,都用SPI读取 底层无误,暂时忽略 5.传感器初始化 Drv_Icm20602Reg_Init(); Drv_Spl0601_Init(); 6.接口初始化 u***和串口,飞控板上这些接口的功能在程序中已经默认定义好了 U***_Hid_Init(); //飞控u***接口的hid初始化 Delay_ms(100); //延时 Usart2_Init(115200); //串口2初始化,函数参数为波特率 Delay_ms(10); //延时 // Uart4_Init(115200); //首先判断是否连接的是激光模块 // if(!Drv_Laser_Init()) //激光没有有效连接,则配置为光流模式 // Uart4_Init(500000); // Delay_ms(10); //延时 // Usart3_Init(500000); //连接UWB // Delay_ms(10); //延时 // Uart4_Init(19200); //接优像光流 Uart5_Init(115200);//接大功率激光 // MyDelayMs(200); |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1548 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1493 浏览 1 评论
915 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
656 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1544 浏览 2 评论
1845浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
598浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
499浏览 3评论
502浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
483浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-6 07:23 , Processed in 1.782443 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号