STM32F7 使用 FAL 配置片上FLASH
[toc] 使用STM32F767芯片 加载RTT 3.15完整版,采用ENV工具,用KEIL加载工程,使用FAL配置片上FLASH,采用ARMV6编译器 优化等级-0 工程BSP目录下运行env 输入menuconfig进入菜单USER DRIVer CONFIG 是我自己编写的,没有用 从截图所示进入 使能 on-chip FLASH 从截图所示进入 按空格使能,按回车进入配置。如截图所示进行配置 进行保存 使用SCONS命令 无修改进行编译运行,有三个错误 fal_flash.c 47行修改如下 123log_d("Flash device | %*.*s | addr: 0x%08lx | len: 0x%08x | blk_size: 0x%08x |initialized finish.", FAL_DEV_NAME_MAX, FAL_DEV_NAME_MAX, device_table[i]->name, (unsigned long)device_table[i]->add...
Vscode ESP-ID 添加自定义组件解决办法
@[toc] 添加方法ESP-IDF 在搜索所有待构建的组件时,会按照 COMPONENT_DIRS 指定的顺序依次进行,这意味着在默认情况下,首先搜索 ESP-IDF 内部组件(IDF_PATH/components),然后是 EXTRA_COMPONENT_DIRS 中的组件,最后是项目组件(PROJECT_DIR/components)。如果这些目录中的两个或者多个包含具有相同名字的组件,则使用搜索到的最后一个位置的组件。这就允许将组件复制到项目目录中再修改以覆盖 ESP-IDF 组件,如果使用这种方式,ESP-IDF 目录本身可以保持不变。 我提供一种正确设置后还是无法编译通过的方法 https://docs.espressif.com/projects/esp-idf/zh_CN/v4.4.1/esp32/api-guides/build-system.html#id18可以尝试先清除工程编译再编译一次既可
KEIL5 编译器AC6 使用RT-THREAD操作系统 使用组件CmBacktrace方法+addr2line使用
@[toc] 最新解决方案:复制里面代码到对应源文件并编译既可 https://github.com/armink/CmBacktrace/pull/62https://github.com/armink/CmBacktrace/edit/master/cm_backtrace/cm_backtrace.chttps://github.com/armink/CmBacktrace/edit/master/cm_backtrace/cmb_def.h 编译目录下打开ENV工具 输入scons --pyconfig 点击Jump to List ites搜索CmBacktrace双击 配置如下,不要使用GB18030编码,AC6不支持显示,会有警告 点击SAVE CMD中显示 Loaded configuration ‘.config’Configuration saved to ‘.config’Configuration saved to ‘.config’ ENV中输入 pkgs –update 1.输入 scons --target=...
RTT各种错误排查(个人方法)
[toc] 试图切入ARM状态造成的用法Fault 问题:1.可能是内存泄漏 程序中有野指针,导致堆栈破坏; 个人工程中 排查发现为数组拷贝溢出数组大小,野指针导致堆栈破坏。 相应报错可能有: 1.RT_ASSERT 断言死机 2.rt_object_get_type((rt_object_t)thread) == RT_Object_Class_Thread) has assert failed at 都是内存泄漏,导致其他变量被改写。导致错误。 3.使用memchec命令 打印Memory block wrong: 怀疑到内存管理算法问题,改变内存管理算法。报错会不一样哦。 sr: 0x00000000r00: 0x20001268r01: 0x10000000r02: 0xf0000000r03: 0x00000000r04: 0x0801a130r05: 0x0801a130r06: 0x00000000r07: 0x0000008cr08: ...
ART-PI在KEIL的使用教程(个人笔记)
[TOC] ART-PI在KEIL的使用教程(个人笔记) 个人笔记,仅作为个人记录 第一步 下载源码 git clone https://gitclone.com/github.com/RT-Thread-Studio/sdk-bsp-stm32h750-realthread-artpi.git 网站 https://github.com/RT-Thread-Studio/sdk-bsp-stm32h750-realthread-artpi 第二步 查看源码手册说明 路径: sdk-bsp-stm32h750-realthread-artpi\documents 原理图与扩展IO说明 sdk-bsp-stm32h750-realthread-artpi\documents\board 查看UM5001-RT-Thread ART-Pi 快速上手.md 确保开发板功能正常 第三步 连接MSH串口使用控制台 xshell7 连接串口 第四步 编译keil工程 按照链接步骤执行,编译 https://art-pi.gitee.io/website/docs/#...
CUBEMXV6
[toc] CUBEMXV6.70版本 使用STM32H750 之前时钟配置报错的修改办法评论遇到的问题解决办法上述问题,版本重新选择一下 如下图所示修改既可 虽然配置变了,但是实际工程去查看对应代码没有任何修改 没有选项的按下
FREERTOS开启TICKLESS后最大只能349tick休眠的原因分析
@[toc] 空闲线程的运行时间分析原因 开启TICKLESS模式后,在PreSleepProcessing和PostSleepProcessing中打印ulExpectedIdleTime变量,即空闲时间.输出如下 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-56thy2v3-1684831702598)(TICKLESS.assets/image-20230523161450180.png)] 代码如下 123456789void PreSleepProcessing(uint32_t *ulExpectedIdleTime){ log_i("ulExpectedIdleTime %lu", *ulExpectedIdleTime);}void PostSleepProcessing(uint32_t *ulExpectedIdleTime){} 分析 为什么是349tick进入一次空闲线程? 分析FREERTOS源码,在portTASK_FUNCTIO...
stop2模式低功耗无法进入的问题分析
@[toc] 低功耗无法进入的问题分析现象 低功耗进入与退出前后加入打印函数.发现进入低功耗后立刻退出低功耗 打印代码如下 1234log_i("in\r\n");UTIL_PowerDriver.EnterStopMode( );UTIL_PowerDriver.ExitStopMode( );log_i("out\r\n"); 原因 中断标志位挂起未清除导致低功耗进入失败 分析挂起的中断标志位查找 完整的进退低功耗函数如下 123456789101112131415161718192021222324252627282930313233343536373839404142434445#define UTIL_LPM_ENTER_CRITICAL_SECTION_ELP() 扩展到:uint32_t primask_bit= __get_PRIMASK(); __disable_irq() #define UTIL_LPM_EXIT_CRITICAL_SECTION_ELP() 扩展到:__set_PRIMASK(primas...
关于RTC的玄学bug分析与解决
关于RTC的玄学bug分析与解决现象:按键长按或者连续按压导致RTC起振异常;RTC经过的时间读取出来没有变化,或者变化异常 发现:经过一下午复现排查后,按键背面为晶振区域;我摁下按键的手法会按压到晶振区域导致晶振异常;人按下按键时未按压到晶振区域.无法复现;如图 另外该现象体现在如下方面: 使用LSE为时钟源,可能导致初始化失败;看图,BootLoader成功跳转,app初始化错误; 这是错误发生位置,APP的时钟初始化; 对比APP和BL的时钟初始化以及RTC导致失败的原因分析发现. bl中仅初始化了HSE,app中还初始化了LSE,使用了RTC硬件资源导致初始化失败 检测使用RTC的时间去处理的函数,例如延时等操作,会一并异常.现象为无法继续运行下去 不在按压RTC器件后,可能现象还会出现,形变还没消失;还会出现上述情况. 得等待结束 总结: 不要接触挤压精密器件部分 硬件布线应考虑布局,按键背面不应该放精密器件
Grubbs’检验 双尾和单尾
Grubbs’检验用于检测遵循近似正态分布的单变量数据集中的单个异常值。该检验可以定义为单尾和双尾。单尾Grubbs’检验:此检验检查数据集一端的异常值。它可以定义为以下单侧检验之一: 检验最小值是否为异常值:G=sYˉ−Ymin 检验最大值是否为异常值:G=sYmax−Yˉ 其中,Yˉ是样本均值,s是样本标准差,Ymin是最小值,Ymax是最大值。 双尾Grubbs’检验:此检验检查数据集两端的异常值。双尾检验的Grubbs’检验统计量为:G=smax∣Yi−Yˉ∣其中,Yi是数据集中的一个值。在这两种情况下,如果计算出的G值大于临界值,那么就拒绝零假设(数据集中没有异常值),并认为最大值或最小值是异常值。请注意,只有当你怀疑有一个异常值时,才推荐使用Grubbs’检验。如果你怀疑有多个异常值,建议使用Tietjen-Moore检验或广义极端学生化偏差检验。









