摘要: MDK编译默认生成.hex文件,而升级程序需要生成.bin文件。MDK自带的格式转换工具fromelf.exe,来实现.axf文件到.bin文件的转换。该工具在MDK的安装目录\ARM\BIN40文件夹下。通过下一步设置,可以在MDK编译成功之后,调用fromelf.exe。./对应工程所在文件夹fromelf.exe 使用命令如下:fromelf [options] input_file其中op... 阅读全文
posted @ 2019-10-17 16:42 朽木生 阅读(3034) 评论(0) 推荐(0) 编辑
摘要: 死机过程基本概念:连接寄存器LR:调动子程序时,自动存储下一次返回的地址,其实就是最近调用的那一次函数的地址。死机的过程:这里我们最需要关注的是第一步入栈:其中8个寄存器的顺序是其中出现异常时LR里面的值是固定的最后更新堆栈指针,我们根据最后使用的堆栈里面的内容,就可以知道出问题时的最后现场。死机定位思路简单来讲就是:找到死机时候的lr寄存器,然后根据lr寄存器的值,找到此时压入的是psp堆栈,还... 阅读全文
posted @ 2019-09-24 10:15 朽木生 阅读(660) 评论(0) 推荐(0) 编辑
摘要: 修改使用 heap_size 增大其实就是堆栈的不足。好好分析下程序堆栈,如下:函数的局部变量,都是存放在"栈"里面,栈的英文是:STACK.STACK的大小,我们可以在stm32的启动文件里面设置,以战舰stm32开发板为例,在startup_stm32f10x_hd.s里面,开头就有:Stack_Size EQU 0x00000800表示栈大小是0X800,也就是2048字节.这样,CP... 阅读全文
posted @ 2019-09-24 10:12 朽木生 阅读(2402) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2019-08-09 14:34 朽木生 阅读(2) 评论(0) 推荐(0) 编辑
摘要: STM32在使用中,因为一般没有其他异常抛出,所以抛出异常一般都是HardFault_Handler.导致产生该现象的原因有一下几点:(1)数组越界操作;(2)内存溢出,访问越界;(3)堆栈溢出,程序跑飞;(4)中断处理错误;一,数组越界 毋庸置疑,程序中使用了静态数组,而在动态传参时数组赋值溢出。或者动态分配内存太小,导致程序异常。二,内存溢出重点检查RAM区域,程序编译后执行的RAM数据量大小... 阅读全文
posted @ 2019-05-30 12:37 朽木生 阅读(3708) 评论(0) 推荐(1) 编辑
摘要: 转载请注明出处。STM32的全系列MCU中均有一个96位的唯一设备标识符。在ST的相关资料中,对其功能的描述有3各方面:用作序列号(例如 USB 字符串序列号或其它终端应用程序)在对内部 Flash 进行编程前将唯一 ID 与软件加密原语和协议结合使用时用作安全密钥以提高 Flash 中代码的安全性激活安全自举过程等在资料中对其特性的描述是:96 位的唯一设备标识符提供了一个对于任何设备和任何上下... 阅读全文
posted @ 2019-05-15 16:07 朽木生 阅读(3355) 评论(1) 推荐(0) 编辑
摘要: 任务可以以下列状态之一存在:运行当任务实际执行时,它被称为处于运行状态。它目前正在使用处理器。如果运行RTOS的处理器只有一个内核,那么在任何给定时间只能有一个处于运行状态的任务。准备就绪任务是那些能够执行的任务(它们不处于“阻塞”或“挂起”状态),但当前未执行,因为具有相同或更高优先级的不同任务已处于“正在运行”状态。阻止如果任务目前正在等待时间或外部事件,则说该任务处于阻塞状态。例如,如果任务... 阅读全文
posted @ 2019-04-28 16:14 朽木生 阅读(1659) 评论(0) 推荐(0) 编辑
摘要: 初始化设置:GPIO_InitTypeDef GPIO_InitStructure;NVIC_InitTypeDef NVIC_InitStructure; USART_InitTypeDef USART_InitStructure;USART_ClockInitTypeDef USART_CLK_InitStructure;RCC_AHBPeriphClockCmd( RCC_AHBPeriph... 阅读全文
posted @ 2019-04-28 15:53 朽木生 阅读(501) 评论(0) 推荐(0) 编辑
摘要: 现象:1,RTOS 使用时 系统卡启动文件 B .处。原因分析:该种情况是由于定义开启了中断,但是未开启中断处理服务。程序执行到中断响应式无对应的程序响应 解决办法:分析启动头文件,未针对RTOS特别定义中断分析成分徐程序中开启动了 串口1中断但未能查找到对应的USART1_IRQHandler中断服务程序。但在RTOS的串口使用中,定义了 vUARTIn... 阅读全文
posted @ 2019-04-28 14:49 朽木生 阅读(5362) 评论(1) 推荐(0) 编辑
摘要: 时基单元可编程高级控制定时器的主要部分是一个16位计数器和与其相关的自动装载寄存器。这个计数器可以向上计数、向下计数或者向上向下双向计数。此计数器时钟由预分频器分频得到。 计数器、自动装载寄存器和预分频器寄存器可以由软件读写,即使计数器还在运行读写仍然有效。 时基单元包含: ● 计数器寄存器(TIMx_CNT) ● 预分频器寄存器 (TIMx_PSC) ● 自动装载寄存器 (TIMx_ARR) ●... 阅读全文
posted @ 2019-04-03 16:50 朽木生 阅读(23658) 评论(0) 推荐(0) 编辑