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 发的是针对自己的芯片做的,有时候在参考
手册上面找不到相关寄存器的信息时,就需要这个手册。

时间: 2024-12-26 16:38:01

STM32环境搭建/学习观点/自学方法 入门必看的相关文章

NET Core 环境搭建和命令行CLI入门

NET Core 环境搭建和命令行CLI入门 2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高,很有必要写个深入浅出的系列文章,本节内容帮助你入门.我将可能用Windows做开发环境,也可能用Linux/Mac,但是所有的dotnet CLI命令都是跨平台的,我们在windows/Linux/mac平台上开发跨平台的应用. 安装.NET Core .NET

NET Core 环境搭建和命令行CLI入门[转]

NET Core 环境搭建和命令行CLI入门 时间:2016-07-06 01:48:19      阅读:258      评论:0      收藏:0      [点我收藏+] NET Core 环境搭建和命令行CLI入门 2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高,很有必要写个深入浅出的系列文章,本节内容帮助你入门.我将可能用Windows做开

Cocos2d-x 3.1.1 安装和创建项目---(入门必看)

1.安装python2.7.8,安装cocos2dx 3.1.1,并将python2.7.8安装路径加入系统环境变量中; 2.python2.7.8很简单,基本就是默认就可以了. 3.cocos2dx 3.1.1下载完之后,就解压.然后F:\cocos2d-x-3.1.1\build(我的解压之后是放在f盘的),然后在build这里可以找到cocos2d-win32.vc2012.sln,用vs2012打开它,然后生成解决方案(生成的这个过程比较慢,大概10分钟吧),然后在F:\cocos2d-

.NET Core系列 : 1、.NET Core 环境搭建和命令行CLI入门

2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高,很有必要写个深入浅出的系列文章,本节内容帮助你入门.我将可能用Windows做开发环境,也可能用Linux/Mac,但是所有的dotnet CLI命令都是跨平台的,我们在windows/Linux/mac平台上开发跨平台的应用. 安装.NET Core .NET Core 包括.NET Core Runti

python+selenium环境搭建以及逐步调试方法

1.下载 环境搭建: Pycharm: https://www.jetbrains.com/pycharm/download/#section=windows Python3: https://www.python.org/downloads/windows/ 下载浏览器的驱动包:webdriver,放置在python的安装目录下面 2.环境搭建步骤: (1)Python3的安装 检测Python是否安装成功,在cmd命令窗口中,输入Python,点回车即可.这样就安装成功啦!注意:先配置pyt

Android开发环境搭建及常见问题解决方法

在移动互联网的时代,Android的份额早已超过了苹果.Android的出现无疑加速了移动互联网的普及,手机操作系统已经是IOS和Android的天下了,什么winphone之类的可以说没它们什么事了.记得三年前做过一个简单的基于Android2.2的一个小应用.当时只是为了好玩,因而也没有相应的文档记录:后来由于工作原因也就没有继续讲Android开发进行下去.趁有时间再来折腾折腾Android的开发吧.想要开发Android的应用,首先需要安装Android的开发环境,下面记录了Androi

java 运行机制和环境搭建--学习 java 归纳(1)

俗话说,工欲善其事必先利其器.想学习自动化必先学编程. 两个月前接触appium自动化框架,一个月前开始懂得这个道理,现在终于忙完了,有时间开始系统的学习,因为有学过java,所以接下来一段时间就开始 java的学习吧.希望有想学java的跟我一起学习讨论,希望大神路过指导批评,文笔水平真心有限,请见谅. 首先略过java的历史背景介绍.直接开始正题. 看一下java的程序的运行机制 .java文件是java程序的后缀的文件,就像word文档的后缀名是.doc一样.java程序人能读得懂,但是机

开发环境搭建及常见问题解决方法

http://blog.sina.com.cn/s/blog_1556e73ba0102w62k.htmlhttp://blog.sina.com.cn/s/blog_1556e73ba0102w62j.htmlhttp://blog.sina.com.cn/s/blog_1556e73ba0102w62i.htmlhttp://blog.sina.com.cn/s/blog_1556e73ba0102w62f.htmlhttp://blog.sina.com.cn/s/blog_1556e73

Java编程学习知识点分享 入门必看

阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软件包或"工具箱"的接口说明.API包含了工具箱中所有类或子程序及其使用说明. Applet:与可以单独运行的应用程序不同,Applet是一种在Web浏览器中运行在Web页面上的Java程序. 动画(animation):由一组静态图片快速显示展示出动态效果.每一幅静态图片叫做帧.在Java中,动画通常由 Timer 对象驱动.