文章转自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环境搭建/学习观点/自学方法 入门必看的更多相关文章

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

    NET Core 环境搭建和命令行CLI入门 2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文 ...

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

      NET Core 环境搭建和命令行CLI入门 时间:2016-07-06 01:48:19      阅读:258      评论:0      收藏:0      [点我收藏+]   标签: N ...

  3. React 环境搭建及页面调试方法

    React 环境搭建及页面调试方法 |作者:RexFang |出处:http://www.cnblogs.com/rexfang/ |关于作者:Java 程序员一枚 |版权:本文版权归作者和博客园共有 ...

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

    Java编程学习知识点分享 入门必看 阿尔法颜色组成(alpha color component):颜色组成用来描述颜色的透明度或不透明度.阿尔法组成越高,颜色越不透明. API:应用编程接口.针对软 ...

  5. Liunx新手入门必看

    安装CentOS(Linux的一个常用发行版本,互联网公司经常使用这个发行版)用到的软件: VMware_workstation_full_12.5.2.exe 虚拟机软件,虚拟机由这个软件安装.管理 ...

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

    2016年6月27日.NET Core & ASP.NET Core 1.0在Redhat峰会上正式发布,社区里涌现了很多文章,我也计划写个系列文章,原因是.NET Core的入门门槛相当高, ...

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

    转自: http://www.cnblogs.com/rwxwsblog/p/4769785.html 在移动互联网的时代,Android的份额早已超过了苹果.Android的出现无疑加速了移动互联网 ...

  8. hbase 单机+伪分布环境搭建学习-1

    1.单机模式: (1)编辑hbase-env.sh user@EBJ1023.local:/usr/local/flume_kafka_stom/hbase_1.1.2> vim conf/hb ...

  9. stm32环境搭建

    软件下载:https://pan.baidu.com/s/1rat9Vnm 第一部分:软件安装 1.点击安装mdk514.exe,一路next就可以了 2.使用管理员身份打开软件,点击File,进到l ...

随机推荐

  1. tyvj1172 自然数拆分Lunatic版

    背景 话说小小鱼看了P1171(自然数拆分)之后感觉异常不爽,于是异常邪恶地将题目加强. 描述 输入自然数n,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复. 输入格式 输入只有一个整数n ...

  2. MVVM开发模式简单实例MVVM Demo【续】

    本文将接着上篇文章,介绍一下三点:(Universal App) 1.将添加Product集合,绑定到列表 2.给点击ListBox的添加选项改变时的事件(要附加依赖属性,和Button点击事件不同) ...

  3. PHP HTML代码反转义

    后端为了防止xss的攻击,会过滤前端用户的输入的数据,这样虽然有效的避免xss攻击,但是会带来一个问题,要么全部过滤html留下不非法的数据,要么把HTML代码转义,但是转义之后又会直接在浏览器内显示 ...

  4. hadoop 2.6 centos 7.1 下的一些操作

    开启hdfs: start-dfs.sh 开启yarn: start-yarn.sh 查看hdfs:http://ip:50070/ 查看RM:http://ip:8088/

  5. 学习OpenStack之(6):Neutron 深入学习之 OVS + GRE 之 Compute node 篇

    0.环境 硬件环境见上一篇博客:学习OpenStack之(5):在Mac上部署Juno版本OpenStack 四节点环境 OpenStack网络配置:一个tenant, 2个虚机 Type drive ...

  6. java 深入技术一

    1. myeclipse和debug调试 1)myeclipse重命名 包和类,方法,字段的重命名 重构,refactor-rename 方法,右键refactor-rename,按回车就重命名 Al ...

  7. Python之模块,迭代器与生成器

    本节涉及内容: 1. 迭代器和生成器 2. 递归 3. 字符串格式化 4. 模块 内置模块 自定义模块 第三方模块 5. 序列化的模块 json pickle (一). 迭代器和生成器: 迭代器:  ...

  8. PHP文件可限速下载代码

    <?php include("DBDA.class.php"); $db = new DBDA(); $bs = $_SERVER["QUERY_STRING&qu ...

  9. hdu 3746 Cyclic Nacklace

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3746 思路:KMP中Next数组的应用,求出最小的循环节,题目的意思是只能在字符串的后面上添加新的字符 ...

  10. Delphi:与VCL同步(Synchronize()、用消息来同步)

    看本文时,可以同时参考:Delphi中线程类 TThread实现多线程编程(事件.临界区.Synchronize.WaitFor……) 先说一下RTL和VCL RTL(Run-Time library ...