STM32开发设计
文章平均质量分 68
产品人卫朋
左手产品,右手技术。《硬件产品经理》作者,“人人都是产品经理”专栏作家,“阿里云”开发者社区专家博主
展开
-
【IoT】STM32Cube 工具说明和安装浅析
1、STM32CubeMX 简介说明STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用。STM32CubeMX几乎覆盖了STM32 全系列芯片。它具有如下特性:1)直观的选择MCU 型号,可指定系列、封装、外设数量等条件;2)微控制器图形化配置;3)自动处理...转载 2019-03-07 14:39:27 · 1029 阅读 · 0 评论 -
【IoT】STM32 启动代码分析详解
1、堆栈存储器堆栈存储区是在片上存储器中的SRAM(或RAM)中由用户自行开辟的一片数据存储区域,并且堆栈区的大小可根据用户的需要任意指定(只要不超过SRAM或RAM的大小),而堆栈区的位置由编译器指定分配。Cortex-M3/M4处理器的堆栈指针SP是“满递减,空递增”,呈现向下逆生长的特点。堆栈区数据的存储特点是“先进后出,后进先出”。这种特点是由堆栈指针的移动方式决定的,...原创 2019-03-28 08:53:52 · 1558 阅读 · 0 评论 -
【IoT】STM32 编译指令 #pragma pack 的配对使用
#pragma pack 可以用来指定数据结构的成员变量的内存对齐数值。可选值为:1、2、4、8、16。使用 pack 指令要配对使用,以避免意外影响项目中其他源文件的结构成员的内存对齐。如果影响了其他源文件的结构成员内存对齐,那么在你按照默认对齐来计算那些结构成员占用内存大小或者使用指针移动计算结构成员偏移位置的时候,就可能会出现意料之外的异常。主要可能的异常是内存定位错误...原创 2019-04-01 09:42:07 · 1106 阅读 · 0 评论 -
【IoT】STM32 结构体对齐规则
1、对齐算法在相同的对齐方式下,结构体内部数据定义的顺序不同,结构体整体占据内存空间也不同。如下结构体定义:struct A {// a 的自身对齐值为 4,偏移地址为 0x00~0x03,a 的起始地址 0x00 满足 0x00%4=0int a;// b 的自身对齐值为 1,由于紧跟 a 之后的地址,即 0x04 满足 0x04%1=0,所以 b 存放在 0x04 地址空...原创 2019-04-01 09:18:40 · 2754 阅读 · 0 评论 -
【IoT】STM32 启动代码汇编指令详解
● EQU伪指令EQU用来为一个数字常量或一个和内核寄存器相关的数值或一个和程序计数器相关的数值定义的一个符号名称,类似于C语言中的"#define"。语法格式:name EQU expr{ , type}注意:语法格式中的{ }不属于语法格式的部分,并且{ }中的内容是可选的;name:数值(expr)的符号名称;expr:一个与内核寄存器相关的地址,或一个绝对地址,或...原创 2019-03-27 09:24:25 · 2368 阅读 · 1 评论 -
【IoT】STM32 启动代码 __main 与用户主程序 main() 的区别
1、__main 作用__main函数是C/C++运行时库的一个函数,嵌入式系统在进入应用主程序之前必须有一个初始化的过程,使用__main标号引导系统时必须将应用程序的入口定义为main()。 在初始化的过程中,__main函数的作用主要有两点:1) 完成对映像文件的初始化操作a、映像文件链接器把多个目标文件链接成一个映像文件。b、加载地址和执行地址映像文件可以...转载 2019-03-27 09:06:37 · 4903 阅读 · 0 评论 -
【IoT】STM32 Flash 均衡保存算法
在实际应用中,经常需要在程序运行过程中保存或读取一些数据,这些数据在工作中经常会变化,而且掉电后也不能丢失,所以需要及时地进行存储,存储这些数据常用的存储器是 EEPROM。STM32 虽然本身不带 EEPROM,但是它支持自编程技术,可以利用内部 FLASH 来模拟 EEPROM,这样不仅简化了设计,而且降低了成本。FLASH 的擦写次数是有限的,一般是 10W 次, FLASH 单个存...原创 2019-03-23 12:36:04 · 4491 阅读 · 1 评论 -
【IoT】STM32 字节对齐 #pragma pack
1、对齐原则min(sizeof(word ), 4) = 2,因此是 2 字节对齐,而不是我们认为的 4 字节对齐。1)每个成员分别按自己的方式对齐,并能最小化长度;2)复杂类型(如结构)的默认对齐方式是它最长的成员的对齐方式,这样在成员是复杂类型时,可以最小化长度;3)对齐后的结构体整体长度必须是成员中最大的对齐参数的整数倍,这样在处理数组时可以保证每一项都边界对齐。对于数...原创 2019-03-29 19:14:51 · 1604 阅读 · 0 评论 -
【IoT】STM32Fxxx 上移植 Huawei LiteOS
1、LiteOS 简介华为的 LiteOS 以轻量级(内核小于10k)、低功耗(1节5号电池最多可以工作5年),快速启动,互联互通,安全等关键能力,为开发者提供 "一站式" 完整软件平台,有效降低开发门槛、缩短开发周期。华为提出 1+2+1战略,即一个物联网操作系统,两种接入方式,一个平台,从而实现其使能万物智能的目标。示意图如下:操作系统特点及框架如下图所示:2、建立...原创 2019-03-26 09:49:03 · 2733 阅读 · 1 评论 -
【IoT】STM32 结构体位域操作 (int a:4)
1、什么是位域有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如:在存放一个开关量时,只有 0 和 1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。...转载 2019-03-25 19:24:48 · 4592 阅读 · 0 评论 -
【Tool】ELF 和 AXF 文件分析详解
ELF(Executable and Linking Format)是一个定义了目标文件内部信息如何组成和组织的文件格式。内核会根据这些信息加载可执行文件,内核根据这些信息可以知道从文件哪里获取代码,从哪里获取初始化数据,在哪里应该加载共享库等信息。栈的地址是向下生长,堆的地址是向上生长:1、ELF 文件类型ELF 文件有下面三种类型:1)目标文件$ gcc -c ...原创 2019-03-13 09:37:09 · 5691 阅读 · 0 评论 -
【Tool】readelf 命令读取 STM32 编译生成的 ELF 和 AXF 文件
1、概述readelf 命令,一般用于查看 ELF 格式的文件信息,常见的文件如在Linux上的可执行文件,动态库(*.so)或者静态库(*.a)等包含ELF格式的文件。可以在 windows 命令行或 Git bash 上查看。2、readelf 常用命令语法:readelf (选项)(参数:文件),除了-v和-H之外,其它的选项必须有一个被指定参数。Usage: rea...原创 2019-03-13 08:53:53 · 1840 阅读 · 0 评论 -
【IoT】STM32 查看 FLASH 和 RAM 使用情况(RO-data、RW-data、ZI-data)
1、KEIL MDK 编译后的信息Code=86496 RO-data=9064 RW-data=1452 ZI-data=161161)Code 是代码占用的空间;2)RO-data 是 Read Only 只读常量的大小,如const型;3)RW-data 是(Read Write)初始化了的可读写变量的大小;4)ZI-data 是(Zero Initialize) 没有...原创 2019-03-20 09:24:41 · 4319 阅读 · 0 评论 -
【IoT】STM32 编译结果 map 之 code、RO-data、RW-data、ZI-data 字段解析
1、Code即代码域,它指的是编译器生成的机器指令,这些内容被存储到ROM区。2、RO-dataRead Only data,即只读数据域,它指程序中用到的只读数据,这些数据被存储在ROM区,因而程序不能修改其内容。例如:C语言中const关键字定义的变量就是典型的RO-data。3、RW-dataRead Write data,即可读写数据域,它指初始化为“非0值”的...原创 2019-03-19 19:06:22 · 1647 阅读 · 0 评论 -
【IoT】STM32 IIC 详解 之 stm32 IIC 从机模式(中断方式收发数据)
1、IIC简介第二节代码会用到该部分内容,对于IIC来说,从机是不能主动发送数据的,开始条件都是由主机生成。1.1、主机发送数据流程 1) 主机在检测到总线为“空闲状态”(即 SDA、SCL 线均为高电平)时,发送一个启动信号“S”,开始一次通信的开始 2) 主机接着发送一个命令字节。该字节由 7 位的外围器件地址和 1 位读写控制位 R/W组成(此时 R/W=0) 3...原创 2017-07-17 17:42:52 · 39094 阅读 · 3 评论 -
【IoT】STM32 系统级开发之 ucosIII 或 freeRTOS 事件标志组详解
1、轻型操作系统同步的方案详解1)信号量假设有两个任务 Task1 和 Task2,第一个任务进行按键的扫描,第二个任务进行LED灯的点亮需求:扫描到按键按下后点亮 LED 灯,也就是说第二个任务永远在等待第一个任务按键的扫描实现:首先 Task1 一直检测按键是否按下,如果按键按下以后,使用一个全局变量 flag 并设置 flag=1而在 Task2 当中,不停检测 flag ...原创 2017-09-01 17:40:43 · 2810 阅读 · 1 评论 -
【IoT】LiteOS 实时操作系统事件标志组 event 操作解析
信号量同步只能与单个的事件或任务进行同步,事件标志组与多个事件或任务进行同步事件位用来表明某个事件是否发生,事件组是一组事件位。1、基本概念事件是一种实现任务间通信的机制,可用于实现任务间的同步,但事件通信只能是事件类型的通信,无数据传输。一个任务可以等待多个事件的发生:1)可以是任意一个事件发生时唤醒任务进行事件处理;2)也可以是几个事件都发生后才唤醒任务进行事件处理。...原创 2019-04-03 18:28:51 · 1655 阅读 · 0 评论