自学stm32的一些个人经验_weixin_30809173的博客-程序员秘密

技术标签: 人工智能  嵌入式  

  1.首先我们先看看与STM32相关的文档

  我们假定大家已经对STM32的书籍或者文档有一定的理解。如不理解,请立即阅读STM32的文档,以获取最基本的知识点。

  如果你手上拥有ST官方主推的STM32神舟系列的板子,那么光盘都会配好这些文档,STM32的学习与ARM9的学习有一个很大的区别。ARM9的学习

  一般是需要购买书籍的。比如三星的S3C2440,官方的文档都是英文的,大部分工程师只能去看国内出版的书籍。英文好的同学,请不要以为

  你很牛,可以只看英文文档。毕竟你是中国人,你最熟悉的,理解最好的还是中文。看英文的速度还是比看中文慢一些,我们要的是最短的时

  间,而不是追求短时间内记住所有细节。当然,如果是一篇论文,建议看英文原版还是有好处的。

  STM32处理器进入国内市场时候,ST官方(或者第三方)的推广工作做的非常好。翻译了大量的英文文档,迎合了国内的

  很多工程师的思维。神舟系列的开发板就是迎合这种中国化,本土化,方便学习和使用;所以现在大部分STM32F103xxx的用户datasheet都有

  中文版,例子也很齐全,因此可以不用去购买书籍,看电子档即可。

  学习的时候,关注两个比较重要的文档:《STM32F103xxx参考手册》,《STM32固件库使用手册》。

  该网址,是针对有充足的时间、精力的同学,建议去下载需要查阅的文档,以获取更多信息。

  阅读《STM32F103xxx参考手册》,一定要注意,不需要全部阅读——没有时间的。建议选读,但是前几章必读。存储器

  和总线架构、电源控制、备份寄存器、复位和时钟控制,通用和复用功能I/O,中断和时间等等前几章一定要花时间阅读。

  后面章节,讲述的是具体的功能模块设计。如果我们用到哪个模块,就可以去阅读哪个模块。比如在使用AD的时候,就

  需要去阅读第10章ADC。其他不举例。相信每个初学者都有自己的研究方向和判断。

  阅读《STM32固件库使用手册》,主要是为了简化编程。STM32给我们提供了一个非常好的固件函数库,我们只要去调用

  即可。当然,我们也可以不去碰这些固件库——传说使用它会使得代码效率变低,是有道理的。网络上也出现了很多网友自己写的代码,没有

  使用带固件库函数。如何取舍,在于您的选择。

  这里我主要强调的是,阅读《STM32固件库使用手册》的时候,前面几章也是必须阅读的。比如第一章文档和库规范中

  的命名规则,编码规则,这些都是需要注意的。第二章是最关键的,希望大家熟读。第二章描述了固件库的架构,我们如何去使用固件库的步

  骤等。有了第二章的基础,我们就可以借助固件库写出自己的代码了。第四章开始之后,就可以根据大家的需要来阅读。实际上,后续的章节

  ,都是描述某个模块有什么什么函数,每个函数如何使用等。

  关于后面的章节,建议对GPIO库函数、中断部分库函数、复位和时钟设置的库函数要比较熟悉,因为平时经常会用到

  。

  以上提到的这两个文档,已经足够您看的了,呵呵。希望您能从中获取大量的STM32基础知识。

  2.设定一个不错的两周入门计划

  (1)这里所谓的“入门”,指的是能理解并掌握一些常用的STM32外设,真正想掌握一款处理器,两周根本说明不了什么问题。只能说,你已

  经有所了解了。但是,这对我们初学者来说已经足够了。

  (2)这里所谓的“两周”,根据每个人的时间安排不同而不同。

  如果您每天有充足的时间学习,那么可以规定自己尽快地能独立地进行简单的STM32开发。

  如果您每天只有业余时间来学习STM32,建议根据您的具体情况安排时间。毕竟计划时间如果安排太紧,反而收不到良好的效果

  ,只能进入恶性循环,这是我们要避免的。

  但是建议,不管您有无充足的时间,都必须给自己做一个计划!!

  我这里列出一个思路,仅供参考。

  步骤一,安装完STM32学习的软件,比如J-Link、Keil for ARM(MDK)、ISP(如果需要从串口下载的话)。这些软件安装的详细步骤,可以

  参考我们推出的相应教程进行。

  步骤二,挑选部分例程的HEX,比如LED灯的例程HEX文件,下载到芯达STM32开发板中,观察两个LED灯的闪烁情况。这部分的操作,可以参考

  我们推出的相应的教程进行。

  实际上,以上两个步骤,是为了熟悉要使用的工具软件而已。属于找感觉的阶段。其实我们还没开始STM32的学习呢!

  步骤三,准备几个常用的文档,比如《STM32的用户手册》,《STM32固件库使用手册》等文档。用于平时查阅。这些文档,在光盘中的芯片手

  册目录中均可找到。

  步骤四,开始查看例程的编写,看看例程是如何写的,自己可否修改下例程,达到自己想要的效果呢?芯达STM32开发板的光盘中为大家提供

  了丰富的例程代码,可以参考。您一定可以修改出更精彩的例程!

  步骤五,Ucos-II的移植,是否需要试一下?

  恭喜你,至此,你已经可以自如进行独立的开发了。最后一步,给自己一个目标(项目),把它实现出来!

  再次强调,以上只是一个学习STM32的思路,供大家参考。下面列出了前面关键的步骤,希望大家能尽快入门。后续的每个模块

  的编程,请参考神舟I号(103RBT),神舟II号(103vct),神舟III号(103zet),神舟IV号(103vct)中任何一款的入门手册,官方网址

  armjishu.com上有下载的,大家可以参考参考。

  第1步:熟悉调试软件

  对初学者来说,我们至少需要安装两个软件:J-Link驱动软件、MDK(就是原来的Keil)软件。这两个软件在安装软件的过程可以查

  看神舟开发板用户手册,这里不再重复,大家可以参考我们推出的教程《如何安装J-Link驱动软件》以及《如何安装MDK(Keil)软件》。如何

  验证自己已经熟悉调试软件的操作了呢?很简单,神舟STM32开发板光盘里附带了很多HEX格式的文件,可以选择一些HEX文件,来观察运行结

  果。比如LED灯的例程HEX文件,下载到神舟STM32开发板中,观察两个LED灯的闪烁情况。灯在闪烁,就说明你刚才的操作已经把HEX文件烧写

  到闪存中了。

  该步骤要达到的目标:熟悉调试软件,如烧写HEX出现问题,可简单判别问题所在,并独立解决。

  第2步:GPIO编程

  这是第一次接触固件库的编程,一定要硬着头皮去了解固件库。建议大家尽量去用固件库。而不是避开固件库自己写代码—

  —这样只能在学习中才会发生。实际的项目中,代码成百上千个,如何一个一个自己写?调用固件库中的函数来完成,才是王者之道。

  GPIO本身的编程实际上很简单:

  1、设置GPIO口的引脚为输入或者输出模式。我们在进行点灯代码的时候,一般设置为推挽输出模式。

  2、操作寄存器,往寄存器里置1或者清零操作——这个步骤,固件库已经提供了专门的GPIO_SetBits函数和GPIO_ResetBits函数,我们只要去

  调用即可实现对IO口的置1和清零。

  3、实现多种花样的LED闪动,使得自己熟悉GPIO的编程过程。

  该步骤要达到的目标:熟悉调试软件,如烧写HEX出现问题,可简单判别问题所在,并独立解决。

  第3步:开始全新的STM32深入研究

  经过以上调试软件的熟悉和GPIO口的编程调试后,相信您已经对STM32有一定的了解。至少知道如何利用STM32的固件库去写一

  个代码。OK,下面我们将开始全新的STM32深入研究。在这个阶段,将要接触到串口编程、TFT液晶屏驱动编程、定时器编程、串行外设接口

  SPI编程、存储器编程、SD卡与文件系统移植、USB读写、UCOS移植等,有精力还可以研究其他外设。

  ​如果有需要欢迎加我拿自己需要的资料:1792731008

  (stm32串口应用)

  http://www.makeru.com.cn/live/detail/1290.html?s=45051

  (stm32电机驱动)

  http://www.makeru.com.cn/live/1392_1218.html?s=45051

  (定时器)

  http://www.makeru.com.cn/live/1392_1199.html?s=45051

转载于:https://www.cnblogs.com/QianD/p/10384727.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30809173/article/details/95655088

智能推荐

jsBOM_DOM编程_羊咩咩a284811的博客-程序员秘密

BOM编程BOM,Browser Object Model 浏览器对象模型。BOM编程一句话概括:使用js代码控制浏览器。BOM编程原理:浏览器被封装了不同对象,可以通过浏览器对象控制浏览器。js提供了四个浏览器对象(window对象,history对象,location对象,screen对象),可以使用这些浏览器对象来控制浏览器。window对象:控制;浏览器窗口方法:alert() confirm() prompt() close() open() setInterval() clearI

JavaScript学习笔记(DOM编程案例)_少不入川。的博客-程序员秘密

文章目录1.前言2.实例2.1 获取文本框的value2.2 通过innerText和innerHTML来操作div和span2.3 关于正则表达式2.4 使用正则表达式验证邮箱地址2.5 使用正则表达式去除字符串前后的空白2.6 表单验证2.7 复选框的全选和取消全选2.8 获取下拉列表选中项的value2.9 显示系统时间2.10 内置支持类:Array1.前言1、JavaScript包括三大块:ECMAScript:JS的核心语法(ES规范 / ECMA-262标准)DOM:Document

JAVA-25.2-js提高篇、BOM编程、事件编程、DOM编程、js正则表达式、表单验证案例_元_帅的博客-程序员秘密

一、BOM编程  什么是BOM编程?BOM是(Broswer Object Model) 浏览器对象模型编程 1.window对象   open(): 在一个窗口中打开页面     参数一: 打开的页面     参数二:打开的方式。 _self: 本窗口 _blank: 新窗口(默认)     参数三: 设置窗口参数。比如窗口大小   setInterval(): 设置定时器(执行n次

JS DOM编程_Y__J___的博客-程序员秘密

获取文本框<!DOCTYPE html><html> <head> <meta charset="utf-8"> <title>DOM编程-获取文本框的value</title> </head> <body> <script type="text/javascript"&gt...

Web APls_让我再睡会儿呗的博客-程序员秘密

2022.3.26 学习笔记目录四、正则表达式4.1 概述4.2 创建正则表达式的对象4.3 检验是否符合正则表达式4.4 使用字面量创建正则表达式4.4.1 语法: var 变量 = /正则表达式/匹配模式4.4.2 创建一个正则表达式,检查一个字符串中是否含有‘a’或‘b’4.5 字符串和正则表达式相关的方法4.5.1 split( ) 可以将一个字符串拆分成一个数组4.5.2 search( ) 可以搜索字符串中是否含有指定内容4.5.3 match(

JavaScript(二)--BOM编程/事件编程/DOM编程/正则表达式_yangruxi的博客-程序员秘密

BOM编程1.BOM编程图解: 2.window对象: open():在一个窗口中打开页面 参数一: 打开的页面 参数二:打开的方式。 _self: 本窗口 _blank: 新窗口(默认) 参数三: 设置窗口参数。比如窗口大小setInterval():设置定时器(执行n次) setTimeout():设置定时器(只执行1次) 定时器: 每隔n毫秒调用指定的任务(函数) 参数一:指

随便推点

API工具--apifox、apipost、yapi的区别(对比)_IT利刃出鞘的博客-程序员秘密_apifox apipost

现在的Java Web项目大都是前后端分离的,需要的人员有:后端、前端、测试。这时,接口文档就特别重要。 本文介绍apifox、apipost、yapi这三款接口文档工具的区别。

免费的api网站_IT技术学习的博客-程序员秘密_免费网站api

来源网络API导航网站https://api.iyk0.com/ 优客apihttps://res.abeim.cn/api/ abeim apihttps://api.vvhan.com/ 韩小韩apihttps://api.uomg.com/ uomg api视频解析(等号后面跟视频链接!)https://jx.mw0.cc/?url=https://www.33tn.cn/?url=https://vip.bljiex.com/?v=...

Segmentation fault` is detected by the operating system_陆地起飞全靠浪的博客-程序员秘密

原因为模型需要输入多个参数,而输入仅有一个参数,或者输入的参数shape不一致def run(predictor, input_arg):# 准备输入input_names = predictor.get_input_names()for i, name in enumerate(input_names):input_tensor = predictor.get_input_handle(name)# input_tensor.reshape(img[i].shape)input_tensor

去中心化的API网关是否就是ServiceMesh?_程序猿不脱发2的博客-程序员秘密

去中心化的API网关是否就是ServiceMesh?今天谈下去中心化的API网关。对于API网关我前面多篇文章都已经指出过,其本身要实现请求的统一代理,必然是一种中心化的架构,如果不希望中心化你可以走服务注册中心来实现服务注册发现和服务请求。最近出现一个新的概念API Gateway Mesh,个人感觉这个概念不太合适。不合适的原因就是在API网关去中心化后,其常说的服务注册发现,安全,限流熔断,日志等微服务管控治理能力本身就通过Sidecar模式下沉到微服务中。也就是说ServiceMesh基本可

Docker部署FastAPI(详细)_发现美的眼睛的博客-程序员秘密_docker部署fastapi

Docker部署FastAPIFastAPI是什么?官网链接(中文)FastAPI是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 3.6+ 并基于标准的 Python 类型提示。对比Tornado呢?相当于Golang(Go)语言中,Beego与Gin两个库的区别。如果是快速构建应用的话,那么Tornado是非常推荐的。因为Tornado采用Epoll模型,性能上压根不用操心,再者用其开发web应用也有着非常便捷的优势。而FastAPI和名字一样,偏重点在A