摘要:
暂不讨论捕获功能,简化下面的描述方便阅读理解。 13.4.14 TIM1 比较寄存器 1(TIMx_CCR1) CCR1[15:0]: 比较通道1的值 (Compare 1 value) 若CC1 通道配置为输出:CCR1包含了装入比较1寄存器的值(预装载值)。 void TIM_SetCompar 阅读全文
摘要:
从这里,我们就可以看到AS4950有4种驱动状态: 1:IN1端口输入PWM,IN2端口输入低电平,芯片输出正电流,电机正转; 2:IN1端口输入低电平,IN2端口输入PWM,芯片输出负电流,电机反转; 3:IN1端口输入高电平,IN2端口输入PWM,芯片输出正电流,电机正传; 4;IN1端口输入P 阅读全文
摘要:
1、实际上,对于在STM32F103这类资源紧缺的单片机芯片中: 代码段保存在Flash上,直接在Flash上运行(当然也可以重定位到内存里) 数据段暂时先保存在Flash上,然后在使用前被复制到内存里(只读数据段(RO data)不复制) 函数入口地址、函数参数、临时变量、const修饰的局部常量 阅读全文
摘要:
这些步骤将源代码转换成可以在目标硬件上执行的机器代码。以下是这个过程的一般描述: 预处理(Preprocessing):源代码(如 .c、.cpp、.s 等)首先被预处理。预处理器处理源文件中的宏定义、条件编译指令、包含指令(如 #include)等。预处理器的输出通常是一个 .i 或 .ii 文件 阅读全文
摘要:
名词: LR = Load region上面只有1个,实际可以有多个。 ER = Execution region1个LR中可以有多个ER。 ER = Execution region1个LR中可以有多个ER。 input section1个ER中可以有多个Input section。 首先,LR_ 阅读全文
摘要:
1,全局变量和全局静态变量 a、全局变量:全局变量存放在静态存储区,作用域是全局(对比下面添加static),整个声明周期都可以使用,其他文件如需要使用,需要添加extern b、全局静态变量 (static):分配的内存与全局变量一样,也是在静态存储内存上,其生命周期也是与整个程序同在的,从程序开 阅读全文
摘要:
对RAM分区的了解 在一个STM32程序代码中,从内存高地址到内存低地址,依次分布着栈区、堆区、全局区(静态区)、常量区、代码区,其中全局区中高地址分布着.bss段,低地址分布着.data段,其分布图如下: 各区特点一、栈区(stack) 临时创建的局部变量存放在栈区。函数调用时,其入口参数存放在栈 阅读全文
摘要:
在使用keil开发STM32应用程序时,点击Build后在Build Output窗口中经常会有如下信息: 以前一直好奇这几个参数和实际使用的STM32芯片中Flash和SRAM的对应关系,于是上网搜了一圈,做如下总结: 这些参数的单位是Byte 图中几个参数分别代表 Code:代码的大小 RO:常 阅读全文
摘要:
编译一个程序,出现下面的信息: 明明程序没有什么内容,为什么变量大小就有RW+ZI=52+1836=1888字节大小了呢,就已经使用了1888字节的SRAM空间。让我们打开map文件: 可以看到每个文件所使用的SRAM大小,比如delay文件使用了4个字节,地址从0x20000014到0x20000 阅读全文
摘要:
代码下载:https://gitee.com/jhembedded/flmparse 写这篇博客的目的是因为最近在做一个STM32的离线编程器,离线下载需要用到FLM文件的下载算法,所以实现了一下提取FLM文件中下载算法的C程序。 有关ELF格式的详细说明可查看这个文件:http://flint.c 阅读全文