STM32环境搭建/学习观点/自学方法 入门必看
文章转自armfly开发板V4软件开发手册,分享学习~
今天有幸看到armfly的开发板软件开发手册,开头的基础知识,真的很有用,还好有看到,一切都不迟,感悟很多,摘抄部分,学习分享~
关于开发环境的搭建
(个人认为,好用的工具,顺手的开发环境,对于编程是一种好的习惯,也是一种好的享受,所以,在环境搭建方面,我还是比较在意软件的互相联合使用,工程建立的规范化等等,这样可以尽量少的在后期更换不同的环境,变软会很浪费时间,一次到位,一路顺风顺水~)
个人偏好的环境搭建:
集成开发环境(IDE):Keil公司的RealView MDK
源文件编辑器:UltraEdit/SourceInsight/IDE自带的编辑器
串口工具:SecureCRT(一个专业的超级终端工具,支持很多接口(包括串口)和协议,推荐使用。)
RealView MDK 工程配置:
(这里很有必要去熟悉下)
1.“ Device”选项。选择正确的CPU型号。 选择STM32F103ZE。
2.“ Target”选项。勾选” Use MicroLIB” 。 如果不选,printf函数将无法输出信息到串口。
3.“ Output”选项。可修改可执行文件名。勾选“ Create HEX File” ,表示生成可单独烧写的Hex文件。
取消 “ Browse Information”选项可以大大加快每个文件的编译速度,但将丧失鼠标右键定位函数和宏的功能。 这个选项不影响最终的Hex。
在编译过程中,会生成大量的obj临时文件,你可以通过“ Select Folder for Objects”按钮指定Obj
文件的存放目录。这样将是工程文件目录变得非常简洁。
4.“ Listing”选项。在编译过程中,会生成大量的lst临时文件,你可以通过“ Select Folder for Listings”按钮指定lst文件的存放目录。这样将是工程文件目录变得非常简洁。
5.“ User”选项。可以指定编译之前和编译之后执行的用户程序。
为了将编译生成的Hex文件复制到指定目录并更名保存,我们可以在编译后执行一个bat批处理文件。
CopyHex_Flash.bat 文件是一个文本文件,内容如下:
copy Flash\Obj\output.hex ..\output(mdk).hex
6.“ C/C++”选项。此处“ USE_STDPERIPH_DRIVER”表示使用ST的固件库;如果有其他的预编译宏,可以用逗号分割。
Include Path 指定头文件的路搜索路径
添加 --diag_suppress=870 控制,可以避免中文字符串告警
7.“ Asm”选项。无需更改。
8.“ Linker”选项。无需更改。
9.“ Linker”选项。无需更改。
点击” Settings”按钮设置硬件仿真器,请选择对应的仿真器型号。我们的例程缺省都配置的是J-Link
仿真器。
勾选“ Run to main()”可以在启动Debug时,执行到main()函数暂停。
10.“ Utilities”选项。
击” Settings” 按钮设置硬件仿真器,请选择对应的仿真器型号。我们的例程缺省都配置的是J-Link
仿真器。点击” Add” 按钮,添加Flash编程算法。选择STM32F10x High-density Flash。
/*****以上的设置是编程的前提,一定要注意,否则到时候出现不知名的错误就摸不着头脑了。*****/
关于STM32学习的一些观点
(仁者见仁,智者见智)
坚定信念选择ST固件库
不要再思考固件库开发还是寄存器开发这种问题了。 99%的有实际产品开发经验的工程师都会告诉
你,使用ST的固件库开发STM32应用是最佳的选择。这套固件库写的非常规范,很严谨,没有一定的C语
言功底和程序架构设计功底是写不出来这种代码的。你如果觉得固件库过于复杂,太乱了,只能说明一个
问题:你没有参与过大型软件开发、你的C语言还没学习到位、你还没有程序架构设计的概念。
我们要做的是学会如何看懂固件库、学习如何使用固件库。 深入的话可以借鉴固件库的写法构建我们
自己的外设驱动。
可能有些人会反驳,不学习寄存器,感觉学习地不深入。我的观点是:寄存器是最没有学习价值的,
硬件功能复杂了必须通过一些寄存器的某些bit来配置和选择硬件功能。我们需要大量的时间来记忆、梳理
寄存器每个bit之间的关系。我认为是不值得的。你不如将这个时间花在学习ST固件库是如何梳理、归纳
这些硬件功能,也就是学习C程序设计方法。
我们也不是完全让你不去了解寄存器功能,在极个别时候,我们也会使用寄存器直接操作。不过我们
也就是将ST固件库的函数展开以提高代码执行效率。
选择性学习
(这个可能适合很多上进心很强的童鞋,总想把STM32搞精搞透,甚至不只是单片机,FPGA等等等等的技术,人生苦短,抓住精华,尽力而为!)
STM32的功能实在太多,和STM32相关的软件组件也多如牛毛。而人的精力是有限,你就算学习一辈子,也不可能学会所有的东西。人的一生,时间是最为宝贵的,我们一定要将时间用在刀刃上。别人做好的开源的第三方的代码,如果你测试应用过,没有问题,那他就属于你的了,你只要学会怎么移植和使用它就足够了。如果别人已经移植好了,那就更方便了,直接拿来使用即可。没有必要再花精力深入代码去研究别人的程序结构了。比如FatFS、 uIP、 ST固件库、 uCOS、 emWin。除非你是做基础研究或者查找BUG。
我们一定要将时间腾出来去学习和掌握更多的软件模块。这样,当项目来临时,你就可以从容应对。
构建自己的代码库
(根据自己的代码风格,以及常用的模块,建立自己的小代码库,这样以后用到的时候,直接拿来改一改,自己的东西自己心里清楚,用着明了,心里也踏实,也利于项目的快速启动和建立)
自己验证过的代码,要学会收集整理。变为自己代码库的一部分。日积月累。等到做产品和项目时,80%以上的代码来自于代码库。做产品很多时候就是搭积木。你的代码库越丰富,做起产品来也就越快越好。一些好的工程框架也要学会收集整理。我们在很多时候做项目,都是直接复制某个相近的工程。不可能每次都去重新新建一个工程。好比盖房子,你可以直接拿砖砌,而不用在花时间去造转。
/*****以上观点仅供参考,开发板的团队根据自己的开发经验和体会得出的建议,也是我比较同意的观点*****/
授之于鱼,不如授之于渔
查询下载资料请直接访问ST的官方网站:
http://www.st.com
另外一个非常好的中文网站是:
http://www.stmcu.org
参考手册(Reference Manual) 【内容很全面,软件工程师必须阅读】
数据手册(Data Sheet) 【硬件工程师必须阅读】
勘误手册(Errata Sheet)
描述了芯片某些功能的局限性,并给出解决办法。这个手册也比较重要,有时候我们
我们觉得有些地方调试老是出问题的时候,就需要查找一下了,看看是否给出了解决方案。
闪存编程手册(Flash Programming Manual)
对芯片片上闪存的操作指南、读写保护设置,选项字节信息
内核编程手册(Cortex-M Programming Manual)
对内核的系统控制块寄存器的描述。这个手册有的时候也要用到,比如我们需要了解 NVIC 和
SysTick 相关的寄存器,就需要使用这个手册,这个手册可以在 ARM 官方网站下载,也可以到
ST 官网下载,区别就是 ARM 方法的是通用的,ST 发的是针对自己的芯片做的,有时候在参考
手册上面找不到相关寄存器的信息时,就需要这个手册。
STM32环境搭建/学习观点/自学方法 入门必看的更多相关文章
- NET Core 环境搭建和命令行CLI入门
NET Core 环境搭建和命令行CLI入门 2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文 ...
- NET Core 环境搭建和命令行CLI入门[转]
NET Core 环境搭建和命令行CLI入门 时间:2016-07-06 01:48:19 阅读:258 评论:0 收藏:0 [点我收藏+] 标签: N ...
- React 环境搭建及页面调试方法
React 环境搭建及页面调试方法 |作者:RexFang |出处:http://www.cnblogs.com/rexfang/ |关于作者:Java 程序员一枚 |版权:本文版权归作者和博客园共有 ...
- Java编程学习知识点分享 入门必看
Java编程学习知识点分享 入门必看 阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软 ...
- Liunx新手入门必看
安装CentOS(Linux的一个常用发行版本,互联网公司经常使用这个发行版)用到的软件: VMware_workstation_full_12.5.2.exe 虚拟机软件,虚拟机由这个软件安装.管理 ...
- .NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门
2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...
- Android开发环境搭建及常见问题解决方法
转自: http://www.cnblogs.com/rwxwsblog/p/4769785.html 在移动互联网的时代,Android的份额早已超过了苹果.Android的出现无疑加速了移动互联网 ...
- hbase 单机+伪分布环境搭建学习-1
1.单机模式: (1)编辑hbase-env.sh user@EBJ1023.local:/usr/local/flume_kafka_stom/hbase_1.1.2> vim conf/hb ...
- stm32环境搭建
软件下载:https://pan.baidu.com/s/1rat9Vnm 第一部分:软件安装 1.点击安装mdk514.exe,一路next就可以了 2.使用管理员身份打开软件,点击File,进到l ...
随机推荐
- Excel—身份证生日提取
一.只有18位的身份证号码 如: 身份证号 330682199302264000 41120019890823729X 231081199002256839 131101198203154666 36 ...
- PHP计算两个时间段是否有交集(边界重叠不算)
优化前的版本: /** * PHP计算两个时间段是否有交集(边界重叠不算) * * @param string $beginTime1 开始时间1 * @param string $endTime1 ...
- 【PHP升级】CentOS6.3编译安装 PHP5.4.38
先前安装的PHP5.3.28(参考:CentOS6.3编译安装Nginx1.4.7 + MySQL5.5.25a + PHP5.3.28),现在准备升级PHP到5.4.38,有如下几个地方需要重新编译 ...
- table 相关
border-collapse: collapse; 合并多余边框
- 【学习笔记】ionic 学习之环境搭建
初学ionic ,后面会把学习的点滴和踩到坑全部记录下来 1.环境 安装node.js 官网地址:https://nodejs.org/en/ 下载安装包安装.自己记住自己的安装路径哦 安装完成后我们 ...
- 腾讯QQ形象18年变迁史,最早的QQ企鹅形象居然长这样!
1999年,腾讯创建之初,这是当时QQ的形象,现在看起来很滑稽,又高又瘦.当时公司并没有专职的设计师,所以这个形象就凑合着用了. 后来,腾讯也觉着上一个形象做的不是特别好,于是在2000年的时候,公司 ...
- cocoaPods 的使用
打开 终端 1. 移除系统自带的 因为该rub已经被和谐了 使用ruby.taobao.org MCJ:~ MCJ$ sudo gem sources -l *** CURRENT SOURCES * ...
- struts2学习记录
1.对于使用Struts2框架的应用而言,尽量不要让超级链接直接接到某个视图资源,因为这种方式增加了额外的风险.推荐将所有请求都发送给Struts框架,让该框架来处理用户请求,即使只是简单的超级链接. ...
- 如何解决自动加载与模板中(如Smarty)的自动加载冲突的问题
function aotuman($class){ include('./'.$class.'.class.php'); } spl_autoload_register('automan'); / ...
- 【Java EE 学习 29 下】【JDBC编程中操作Oracle数据库】【调用存储过程的方法】
疑问:怎样判断存储过程执行之后返回值是否为空. 一.连接oracle数据库 1.需要的jar包:在安装的oracle中就有,所以不需要到官网下载,我的oracle11g下:D:\app\kdyzm\p ...