Kaynağa Gözat

1、移植main,arm数学库的接口换成hpm_dsp数学库的接口

zhuts 1 hafta önce
ebeveyn
işleme
946eeeb5b5

+ 2 - 2
controller_yy_app/controlware/my_math.c

@@ -1,7 +1,7 @@
 #include "my_math.h"
 #include "my_math.h"
 #include "hpm_math.h"
 #include "hpm_math.h"
 #include <float.h>
 #include <float.h>
-
+#include <math.h>
 /*
 /*
 关于 DSP库的使用
 关于 DSP库的使用
 
 
@@ -338,7 +338,7 @@ float sq(float v) { return v * v; }
 float get_norm(float a, float b)
 float get_norm(float a, float b)
 {
 {
     float norm;
     float norm;
-    arm_sqrt_f32(sq(a) + sq(b), &norm);
+    norm = hpm_dsp_sqrt_f32(sq(a) + sq(b));
 
 
     return norm;
     return norm;
 }
 }

+ 1 - 1
controller_yy_app/controlware/pilot_init.c

@@ -26,7 +26,7 @@
 #define GCS_UART_Baudrate 115200 // 与地面站通信波特率
 #define GCS_UART_Baudrate 115200 // 与地面站通信波特率
 #define UART3_Baudrate 460800    // 与IMU通信波特率
 #define UART3_Baudrate 460800    // 与IMU通信波特率
 #define UART4_Baudrate 115200    // 外接设备通信波特率
 #define UART4_Baudrate 115200    // 外接设备通信波特率
-
+// 有关于程序的执行地址 要修改链接文件
 void auto_pilot_init(void)
 void auto_pilot_init(void)
 {
 {
     /*****************************************************系统初始化**************************************************/
     /*****************************************************系统初始化**************************************************/

+ 2 - 2
controller_yy_app/controlware/pilot_navigation.c

@@ -60,7 +60,7 @@ int point_to_point_distance(int lon1, int lat1, int lon2, int lat2)
     cmLat = wrap_double((double)(lat2) - (double)(lat1), -180 * 1e7, 180 * 1e7);
     cmLat = wrap_double((double)(lat2) - (double)(lat1), -180 * 1e7, 180 * 1e7);
     cmLon = wrap_double((double)(lon2) - (double)(lon1), -180 * 1e7, 180 * 1e7) * earth_longitude_scale(lat2);
     cmLon = wrap_double((double)(lon2) - (double)(lon1), -180 * 1e7, 180 * 1e7) * earth_longitude_scale(lat2);
 
 
-    arm_sqrt_f32(sq(cmLat) + sq(cmLon), &dist);
+    dist= hpm_dsp_sqrt_f32(sq(cmLat) + sq(cmLon));
     dist *= LONLAT_TO_CM;
     dist *= LONLAT_TO_CM;
 
 
     return dist;
     return dist;
@@ -162,7 +162,7 @@ int cal_tar_vel_xy_unac(int h_dist, int r_dist, int min_vel, int max_vel)
 
 
     if (r_dist > 500)
     if (r_dist > 500)
     {
     {
-        arm_sqrt_f32(2 * 0.8f * WP_ACC * (r_dist - 500), &stop_vel);
+        stop_vel = hpm_dsp_sqrt_f32(2 * 0.8f * WP_ACC * (r_dist - 500));
         stop_vel = constrain_int32(stop_vel, min_vel, max_vel);
         stop_vel = constrain_int32(stop_vel, min_vel, max_vel);
     }
     }
     else
     else

+ 0 - 1
controller_yy_app/matrix/quaternion.c

@@ -3,7 +3,6 @@
 #include "float.h"
 #include "float.h"
 #include "math.h"
 #include "math.h"
 #include "helpler_funtions.h"
 #include "helpler_funtions.h"
-
 ///\ @brief 四元数的简单构造
 ///\ @brief 四元数的简单构造
 void Quaternion(float q[4])
 void Quaternion(float q[4])
 {
 {

+ 57 - 1
controller_yy_app/user_src/main.c

@@ -4,7 +4,7 @@
  * SPDX-License-Identifier: BSD-3-Clause
  * SPDX-License-Identifier: BSD-3-Clause
  *
  *
  */
  */
-
+#if 0
 #include <stdio.h>
 #include <stdio.h>
 #include "board.h"
 #include "board.h"
 
 
@@ -107,3 +107,59 @@ int main(void)
 }
 }
 // DMA 最大4k
 // DMA 最大4k
 
 
+#endif
+#if 1
+#include "main.h"
+#include "auto_pilot.h"
+#include "data_save.h"
+#include "params.h"
+#include "pilot_init.h"
+#include "soft_can.h"
+#include "soft_flash.h"
+#include "soft_gs.h"
+#include "soft_imu.h"
+#include "soft_port_uart4.h"
+#include "soft_rc_input.h"
+#include "soft_time.h"
+#include "soft_timer.h"
+#include "ver_config.h"
+
+// while 正常循环不带写FLASH需要
+int main(void)
+{
+    // 自驾仪初始化,耗时2.8s
+    auto_pilot_init();
+
+    while (1)
+    {
+        // 解析导航数据
+        get_right_ins_data();
+
+        // 主要控制循环
+        pilot_main_loop();
+
+        // 控制参数写入flash
+        write_par_to_flash();
+
+        // 数据传向地面站
+        gs_receive_msg_poll(&gcs_link);
+        // 解析地面站的消息
+        gs_send_msg_poll(&gcs_link);
+
+        // 解析can总线的消息
+        CanTxRxServicePoll();
+
+        // 解析载荷串口的消息数据
+
+        // 发送数据给IMU
+        send_msg_to_imu();
+
+#ifdef REC_DATA_POS
+        data_record_service();
+#endif
+        // 串口 4 服务函数
+        Port4_Service();
+    } // while
+} // main
+#endif
+//------------------End of File----------------------------

+ 7 - 7
controller_yy_app/v8/v8m/bsp_V8M_flash.c

@@ -186,7 +186,7 @@ int hpm_flash_read_nbytes(uint32_t read_addr, uint8_t *read_buf, int32_t read_nu
 /**
 /**
  * @brief 清除升级标志
  * @brief 清除升级标志
  */
  */
-void hpm_clear_iap_flag(void)
+void V8M_clear_iap_flag(void)
 {
 {
     
     
     disable_global_irq(CSR_MSTATUS_MIE_MASK);
     disable_global_irq(CSR_MSTATUS_MIE_MASK);
@@ -200,7 +200,7 @@ void hpm_clear_iap_flag(void)
 /**
 /**
  * @brief 记录升级标志
  * @brief 记录升级标志
  */
  */
-void hpm_record_iap_flag(void)
+void V8M_record_iap_flag(void)
 {
 {
     disable_global_irq(CSR_MSTATUS_MIE_MASK);
     disable_global_irq(CSR_MSTATUS_MIE_MASK);
     
     
@@ -212,7 +212,7 @@ void hpm_record_iap_flag(void)
 /**
 /**
  * @brief 检查升级标志位
  * @brief 检查升级标志位
  */
  */
-void hpm_check_iap_flag(void)
+void V8M_check_iap_flag(void)
 {
 {
     uint16_t iap_flag;
     uint16_t iap_flag;
     
     
@@ -221,7 +221,7 @@ void hpm_check_iap_flag(void)
     
     
     // 如果需要升级,清除标志
     // 如果需要升级,清除标志
     if (iap_flag == IAP_FLAG_NEED_UPDATE) {
     if (iap_flag == IAP_FLAG_NEED_UPDATE) {
-        hpm_clear_iap_flag();
+        V8M_clear_iap_flag();
        
        
     }
     }
 }
 }
@@ -277,7 +277,7 @@ int test_iap_flag(void)
     
     
     // 1. 清除标志
     // 1. 清除标志
     printf("1. Clearing flag...\n");
     printf("1. Clearing flag...\n");
-    hpm_clear_iap_flag();
+    V8M_clear_iap_flag();
     board_delay_ms(10);
     board_delay_ms(10);
     
     
     // 2. 检查标志(应该没有升级标志)
     // 2. 检查标志(应该没有升级标志)
@@ -294,7 +294,7 @@ int test_iap_flag(void)
     
     
     // 3. 记录升级标志
     // 3. 记录升级标志
     printf("3. Setting update flag...\n");
     printf("3. Setting update flag...\n");
-    hpm_record_iap_flag();
+    V8M_record_iap_flag();
     board_delay_ms(10);
     board_delay_ms(10);
     
     
     // 4. 检查标志(应该为 0xABCD)
     // 4. 检查标志(应该为 0xABCD)
@@ -310,7 +310,7 @@ int test_iap_flag(void)
     
     
     // 5. 检查并清除标志
     // 5. 检查并清除标志
     printf("5. Checking and clearing flag...\n");
     printf("5. Checking and clearing flag...\n");
-    hpm_check_iap_flag();
+    V8M_check_iap_flag();
     board_delay_ms(10);
     board_delay_ms(10);
     
     
     // 6. 验证已清除
     // 6. 验证已清除

+ 5 - 26
controller_yy_app_controller_yy_board_flash_sdram_xip_debug/segger_embedded_studio/controlware_yy_app.emSession

@@ -22,22 +22,12 @@
   <ProjectSessionItem path="controlware_yy_app"/>
   <ProjectSessionItem path="controlware_yy_app"/>
   <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board"/>
   <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board"/>
   <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;application"/>
   <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;application"/>
-  <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;application;controlware"/>
-  <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;application;hardware"/>
-  <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;application;middleware"/>
-  <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;application;middleware;fatfs"/>
-  <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;application;middleware;fatfs;src"/>
-  <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;application;middleware;fatfs;src;portable"/>
-  <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;application;middleware;fatfs;src;portable;sdxc"/>
-  <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;application;middleware;hpm_sdmmc"/>
-  <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;application;middleware;hpm_sdmmc;lib"/>
-  <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;application;payload"/>
-  <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;application;remote_controller"/>
-  <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;application;software"/>
   <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;application;user_src"/>
   <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;application;user_src"/>
+  <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;application;vklink"/>
   <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;boards"/>
   <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;boards"/>
-  <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;drivers"/>
-  <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;utils"/>
+  <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;boards;controller_yy_board"/>
+  <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;soc"/>
+  <ProjectSessionItem path="controlware_yy_app;controlware_yy_app - controller_yy_board;soc;HPM6700"/>
  </Project>
  </Project>
  <Register1>
  <Register1>
   <RegisterWindow invisibleNodes="" visibleNodes="ABI, RV32I/pc;ABI, RV32I/ra;ABI, RV32I/sp;ABI, RV32I/gp;ABI, RV32I/tp;ABI, RV32I/a0;ABI, RV32I/a1;ABI, RV32I/a2;ABI, RV32I/a3;ABI, RV32I/a4;ABI, RV32I/a5;ABI, RV32I/a6;ABI, RV32I/a7;ABI, RV32I/t0;ABI, RV32I/t1;ABI, RV32I/t2;ABI, RV32I/t3;ABI, RV32I/t4;ABI, RV32I/t5;ABI, RV32I/t6;ABI, RV32I/s0;ABI, RV32I/s1;ABI, RV32I/s2;ABI, RV32I/s3;ABI, RV32I/s4;ABI, RV32I/s5;ABI, RV32I/s6;ABI, RV32I/s7;ABI, RV32I/s8;ABI, RV32I/s9;ABI, RV32I/s10;ABI, RV32I/s11;CPU, RV32I/pc;CPU, RV32I/x1;CPU, RV32I/x2;CPU, RV32I/x3;CPU, RV32I/x4;CPU, RV32I/x5;CPU, RV32I/x6;CPU, RV32I/x7;CPU, RV32I/x8;CPU, RV32I/x9;CPU, RV32I/x10;CPU, RV32I/x11;CPU, RV32I/x12;CPU, RV32I/x13;CPU, RV32I/x14;CPU, RV32I/x15;CPU, RV32I/x16;CPU, RV32I/x17;CPU, RV32I/x18;CPU, RV32I/x19;CPU, RV32I/x20;CPU, RV32I/x21;CPU, RV32I/x22;CPU, RV32I/x23;CPU, RV32I/x24;CPU, RV32I/x25;CPU, RV32I/x26;CPU, RV32I/x27;CPU, RV32I/x28;CPU, RV32I/x29;CPU, RV32I/x30;CPU, RV32I/x31" binaryNodes="" asciiNodes="" openNodes="ABI, RV32I;CPU, RV32I" name="controlware_yy_app - controller_yy_board_Debug" decimalNodes="" octalNodes="" unsignedNodes=""/>
   <RegisterWindow invisibleNodes="" visibleNodes="ABI, RV32I/pc;ABI, RV32I/ra;ABI, RV32I/sp;ABI, RV32I/gp;ABI, RV32I/tp;ABI, RV32I/a0;ABI, RV32I/a1;ABI, RV32I/a2;ABI, RV32I/a3;ABI, RV32I/a4;ABI, RV32I/a5;ABI, RV32I/a6;ABI, RV32I/a7;ABI, RV32I/t0;ABI, RV32I/t1;ABI, RV32I/t2;ABI, RV32I/t3;ABI, RV32I/t4;ABI, RV32I/t5;ABI, RV32I/t6;ABI, RV32I/s0;ABI, RV32I/s1;ABI, RV32I/s2;ABI, RV32I/s3;ABI, RV32I/s4;ABI, RV32I/s5;ABI, RV32I/s6;ABI, RV32I/s7;ABI, RV32I/s8;ABI, RV32I/s9;ABI, RV32I/s10;ABI, RV32I/s11;CPU, RV32I/pc;CPU, RV32I/x1;CPU, RV32I/x2;CPU, RV32I/x3;CPU, RV32I/x4;CPU, RV32I/x5;CPU, RV32I/x6;CPU, RV32I/x7;CPU, RV32I/x8;CPU, RV32I/x9;CPU, RV32I/x10;CPU, RV32I/x11;CPU, RV32I/x12;CPU, RV32I/x13;CPU, RV32I/x14;CPU, RV32I/x15;CPU, RV32I/x16;CPU, RV32I/x17;CPU, RV32I/x18;CPU, RV32I/x19;CPU, RV32I/x20;CPU, RV32I/x21;CPU, RV32I/x22;CPU, RV32I/x23;CPU, RV32I/x24;CPU, RV32I/x25;CPU, RV32I/x26;CPU, RV32I/x27;CPU, RV32I/x28;CPU, RV32I/x29;CPU, RV32I/x30;CPU, RV32I/x31" binaryNodes="" asciiNodes="" openNodes="ABI, RV32I;CPU, RV32I" name="controlware_yy_app - controller_yy_board_Debug" decimalNodes="" octalNodes="" unsignedNodes=""/>
@@ -76,18 +66,7 @@
   <Watches active="0" update="Never"/>
   <Watches active="0" update="Never"/>
  </Watch4>
  </Watch4>
  <Files>
  <Files>
-  <SessionOpenFile windowGroup="DockEditLeft" x="0" y="93" useTextEdit="1" path="../../controller_yy_app/user_src/main.c" left="0" top="77" codecName="Default"/>
-  <SessionOpenFile windowGroup="DockEditLeft" x="14" y="9" useTextEdit="1" path="../../controller_yy_app/hardware/hard_sdio_sd.c" left="0" top="0" codecName="Default"/>
-  <SessionOpenFile windowGroup="DockEditLeft" x="0" y="727" useTextEdit="1" path="../../controller_yy_app/software/soft_sdcard.c" left="0" top="717" codecName="Default"/>
-  <SessionOpenFile windowGroup="DockEditLeft" x="14" y="6" useTextEdit="1" path="../../controller_yy_board/board.c" left="0" top="0" codecName="Default"/>
-  <SessionOpenFile windowGroup="DockEditLeft" x="0" y="0" useTextEdit="1" path="../../controller_yy_board/board.h" left="0" top="510" codecName="Default"/>
-  <SessionOpenFile windowGroup="DockEditLeft" x="0" y="0" useTextEdit="1" path="../../controller_yy_app/middleware/fatfs/src/portable/diskio.c" left="0" top="243" codecName="Default"/>
-  <SessionOpenFile windowGroup="DockEditLeft" x="69" y="141" useTextEdit="1" path="../../controller_yy_app/middleware/fatfs/src/portable/sdxc/hpm_sdmmc_disk.c" left="0" top="126" codecName="Default"/>
-  <SessionOpenFile windowGroup="DockEditLeft" x="18" y="638" useTextEdit="1" path="../../controller_yy_app/middleware/hpm_sdmmc/lib/hpm_sdmmc_host.c" left="0" top="630" codecName="Default"/>
-  <SessionOpenFile windowGroup="DockEditLeft" x="23" y="50" useTextEdit="1" path="D:/sdk_env/sdk_env-v1.8.0/hpm_sdk/soc/HPM6700/HPM6750/hpm_misc.h" left="0" top="36" codecName="Default"/>
-  <SessionOpenFile windowGroup="DockEditLeft" x="27" y="144" useTextEdit="1" path="../../controller_yy_app/hardware/hard_imu_uart3.c" left="0" top="130" codecName="Default"/>
-  <SessionOpenFile windowGroup="DockEditLeft" x="5" y="103" useTextEdit="1" path="../../controller_yy_app/hardware/hard_can.c" left="0" top="65" codecName="Default"/>
-  <SessionOpenFile windowGroup="DockEditLeft" x="16" y="9" useTextEdit="1" path="../../controller_yy_app/software/soft_can.c" left="0" selected="1" top="152" codecName="Default"/>
+  <SessionOpenFile windowGroup="DockEditLeft" x="23" y="117" useTextEdit="1" path="../../controller_yy_app/user_src/main.c" left="0" selected="1" top="149" codecName="Default"/>
  </Files>
  </Files>
  <EMStudioWindow activeProject="controlware_yy_app - controller_yy_board" fileDialogDefaultFilter="*.c" autoConnectTarget="GDB Server" buildConfiguration="Debug" sessionSettings="" debugSearchFileMap="" fileDialogInitialDirectory="" debugSearchPath="" autoConnectCapabilities="1343"/>
  <EMStudioWindow activeProject="controlware_yy_app - controller_yy_board" fileDialogDefaultFilter="*.c" autoConnectTarget="GDB Server" buildConfiguration="Debug" sessionSettings="" debugSearchFileMap="" fileDialogInitialDirectory="" debugSearchPath="" autoConnectCapabilities="1343"/>
 </session>
 </session>