Motion_EC_Stm32_archived/README.md

2.6 KiB
Raw Permalink Blame History

NaviKit_stm32

PM1导航套件中电源控制板源码STM32F107VCT6开发环境STM32CubeIDE

特性

1.电池管理统计功能基于IIC协议的库仑计

2.负载的启动顺序编辑和软件改变/查询负载状态

3.电源监控功能(多轨电源电压监控)

  • 电池管理部分

Note

  • 官方的HAL中USB库已知问题 在使用usb的时候 文件stm32f1xx_hal_pcd.c 函数void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd) 代码段HAL_PCD_SuspendCallback(hpcd); 务必屏蔽,否则导致枚举失败,提示获取设备描述符失败。

  • FreeRTOS调试指南

    • 莫名进入HardFault错误
      • 一般是堆栈大小不足导致,可通过Static Stack Analyzer中的Call graph来分析每个任务所占用的栈大小(并且以大纲视图看出任务中占用栈较大的函数),从而修改每个任务的stack_size为合适大小
      • elog_output()该函数占用栈大小为400字节如果有任务调用了该日志输出接口那么freertos的默认128*4=512字节显然非常容易溢出

维护指南

  • 为提高可移植性、可维护性、可阅读性,开发(应用层)时尽量使用CMSIS_OS2的抽象接口特殊情况时再考虑使用RTOS的原生接口
  • freertos.c中的任务实体只保留默认任务, 其他线程任务实例、属性、句柄的声明及定义,独立存放在App文件夹
  • 线程、定时器、事件标志、互斥锁、信号量、消息队列等功能的初始化统一在freertos.c文件中进行初始化(内核启动前的预装载)

日志接口

  • 串口输出(日志)波特率为 56000bps 115200bps
  • 日志输出支持CSI颜色模式
  • 由于elog中使用了操作系统的信号量对临界资源(日志缓冲区)进行读写保护,所以只能在任务中调用日志接口,请勿在中断中调用日志接口。
  • 日志含义:
    • DEBUG: 等级/标签 [时间戳] (优先级) 线程 (文件路径 方法: 行数) 消息内容
    • RELEASE: 等级/ [时间戳] 消息内容

勘误

硬件的v1.0以前版本中SYS_RESET脚和MOD_SLEEP到单片机的实际连接与网络标号是相反的问题发生在TXB0108PWR芯片附近故代码中在GPIO处进行了相反的设置。 在硬件1.0以后的版本中原理图net名问题已经修复。 无论哪个硬件版本som的reset脚始终连接在PB5,som的sleep脚始终连接在PB4。