STM32芯片选型
来源:互联网 发布:oracle大数据查询优化 编辑:程序博客网 时间:2024/05/16 05:21
很多初学者使用的的是现成的开发板,芯片型号已经选好!但是实际工程项目时,可能需要涉及到选型的问题了,比如是否低功耗,是否支持视频流等等,然后是选用多少PIn引脚,最后多少FLASH和ROM等;
首先根据特殊功能要求选择不同芯片厂商和不同芯片,比如想用ST的芯片设计智能穿戴设备和纽扣电池供电的设备,一般推荐STM8L系列和STM32L系列了,同时价格和技术支持力度当然也要考虑;
其次根据项目具体功能和器件,细化逐一罗列出需要的GPIO数量和特殊资源,比如产品中使用了电机同时又有速度和方向反馈需求,那么至少需要两路PWM用于驱动电机,两路TIM检测编码器,这样一个这样的电机需要4个GPIO,同时至少4个TIM通道,依此汇总所有的资源,同时考虑到扩展性(后期产品经理可能会修改需求,添加功能)预留一定的资源;
最后就是FLASH和ROM的选择,这个过程一般是根据软件工程师根据经验预测,这个预测的经验是怎么来的呢?下面重点介绍这部分;
本人采用的是即keil的MDK编译器,当所有的程序编写完成后编译时会出现以下提示:
Program Size: Code=43812 RO-data=1608 RW-data=1280 ZI-data=72172
Code是代码占用的空间,RO-data是 Read Only 只读常量的大小,如const型,RW-data是(Read Write) 初始化了的可读写变量的大小,ZI-data是(Zero Initialize)
没有初始化的可读写变量的大小。ZI-data不会被算做代码里因为不会被初始化。
简单的说就是在烧写的时候是FLASH中的被占用的空间为:Code+RO Data+RW Data;
程序运行的时候,芯片内部RAM使用的空间为: RW Data + ZI Data;
那么根据计算:FLASH = 43812 +1608+1280 =46700, 以上单位为B,除以1024换算45.6kB;
ROM = 1280 + 72172 = 73452,换算为71kB;
那么选择FLASH大于45.6kb,ROM大于71kb的芯片即可!
补充知识:
1. C中的指令以及常量被编译后是RO类型数据。
2. C中的未被初始化或初始化为0的变量编译后是ZI类型数据。
3. C中的已被初始化成非0值的变量编译后市RW类型数据。
参考文献:
http://blog.sina.com.cn/s/blog_618b45a00101g3il.html
- STM32芯片选型
- STM32芯片选型
- 嵌入式控制芯片选型(STM32)
- stm32系列MCU芯片选型表
- 芯片选型
- stm32选型
- STM32芯片
- ARM芯片选型原则
- CAN芯片选型
- USB芯片选型
- 蓝牙4.0芯片选型
- 电源芯片选型
- 开关电源芯片选型
- 语音芯片选型
- USB芯片选型
- USB芯片选型
- STM32的选型参考
- STM32系列选型指南
- 数据库开发技术 数据库层次设计之层次结构
- javaweb学生管理系统 第一次总结
- windows下cmd使用redis
- Hello, TensorFlow!
- SmoothTabLayout--支持tab字体渐变的TabLayout
- STM32芯片选型
- C++项目中的extern "C" {}
- FDDB数据集-人脸检测-ROC曲线绘制
- 【Angular】select标签,ng-options标签中,下拉列表动态查询,默认值为空;
- Qt学习: 如何在Qt中使用全局变量!出现无法解析的命令的问题看过来!!
- Java 练习之使用循环输出等腰三角形
- Javascript面向对象编程(二):构造函数的继承
- OpenCV算子笔记一:Canny(...)
- 在HTML页面上点击按钮按钮携带参数flag,触发一个JS函数,经过判断是否flag==1,分别跳到两个指定的方法(或者页面)