初学者入门:认识STM32单片机

本教程含有较多专业词汇,大部分时候,不完全理解并不影响继续往下阅读,大家只需要了解大致的概念即可。当然,也鼓励大家多查百度和多问chatgpt,让自己学会的更多。

什么是单片机?

单片机,就是把中央处理器CPU、存储器、等计算机的功能部件,和定时器、I/0(输入输出接口)、串口等外设集成在一块集成电路芯片上的微型计算机。

单片机的特点:

1.体积小,集成度高,电源功耗低

2.控制功能强,易拓展外设

3.价格便宜,性价比高

STM32是意法半导体(ST)推出一款32位的单片机。STM32具有超低的价格、超多的外设、丰富的型号、优异的实时性、极低的开发成本等优势。

既然大家已经了解单片机了(bushi) ,那我们就一起走进STM32的世界吧!

如下图,是STM32的系统结构原理图,是不是一脸懵,那就别看下面这个先

让我们简化并翻译一下:

各部分功能如下:

  1. CPU:包含运算器,控制器及若干寄存器,是单片机的控制和指挥中心。

  2. ROM(STM32中称为FLASH):用于存放程序和数据,为只读储存器。更改(擦除)和写入程序都较为麻烦,需要遵守FLASH相关的协议。可以认为是计算机的硬盘。

  3. RAM(STM32中称为SRAM):用于存放运算的中间结果、数据暂存及数据缓冲等。可以随机读入或读出,读写速度快,读写方便;但是断电或复位会丢失数据。可以认为是计算机的内存。

  4. 总线矩阵:总线矩阵用于主控总线之间的访问仲裁管理,提高了各部件交流的效率。

  5. 寄存器:虽然图里面没有寄存器,但是后续会经常提到它。寄存器可以看成储存0和1的一个指定名字和功能的地址。如果我们要在某个引脚输出一个低电平,我们只要往相的引脚对应的寄存器写一个1,即可实现.

  6. GPIO:通用型输入输出(接口),意思是你可以随意使用它输出或输入0和1,甚至以115200次每秒的速度翻转或接收0和1。

  7. 注意:上面的所有东西,都集成在了单片机的芯片上,因此说单片机集成度高,是真的很高。

虽然大家大致了解了STM32单片机的结构,但肯定还不清楚自己将要如何操控这个精妙装置。接下来,让我们一起了解一个程序如何实现整个运算过程。

一. 假设一个客户需求

1. x=3   y=x+5 

2. 先计算出y的值,若y大于0则点亮位于GPIO_ PA0(也就是单片机上的A0接口)处的LED

看起来很简单,但这是了解单片机运行原理的一个非常重要的案例:

二. 配置初始化文件

什么?你说你想直接把代码写了跑起来?

单片机还在睡觉呢,或者他脑袋里还想着上一个程序。

你输入单片机的每一个程序,都必须要用很多很多的篇幅告诉它,脑干怎么指挥全身(各种CPU指令)、心脏该怎么跳动(配置时钟树)、血液该怎么流动(定义各种宏以方便数据传输),因为每次输入新程序进去都完全擦除ROM再重写,所以每个程序都必须包含初始化的内容。不然,它当场给你表演一个原地睡觉(卡死)。

配置初始化文件的方法有两种:

1. 基于STM32库函数的开发

STM32库函数的开发,可以避免大家对着数据手册查并操作各种寄存器,而是直接用库的函数来实现各种参数的初始化和功能。

如果你想点亮一个led。你需要准备好一个包含整个单片机初始化的内容的源代码,如下图所示(不用细看,我也也不熟)。

然后再复制粘贴一个GPIO_init(初始化GPIO接口)的函数进去,然后再改成相应的序号。当然,如果你想启动串口、定时器、ADC等其他功能,也需要把相应的初始化代码块一个个塞进去,如下图所示(不用细看,不是重点)。

(上图:GPIO,PB5和PE5的初始化代码块)

然后再在主函数中输入相应的代码(见下一节),我们的程序才能完成。

使用标准库开发有助于大家更了解底层的代码和寄存器的使用,可以保证基础更加的扎实。但是对新手来说不够友好。

2. 基于STM32Cubemx(下面那个蓝蓝的软件,你们的好帮手)的HAL库开发

如果按照上面的方法,那当我们遇到下面问题的时候,可能就有些棘手:

我们手上有STM32f103c8t6单片机的启动文件,但是此次项目要求我们用STM32f427IIH单片机,且要求你打开CAN1、CAN2、USART1、USART2、TIM23456、和十路的PWM,并按照需求配置参数。那我们可要忙的屁股着火螺旋起飞啰,而且不好检查参数是否正确。

因此,我们需要有更加高效、准确的方法:使用STM32Cubemx配置文件

打开STM32Cubemx,并经过操作,可以看到如下界面:

你可以直接生成相应芯片(此时为F427iih)的初始化和配置文件,非常的舒服。

接下来,直接用图形化界面即可设置好各种参数(可以跟着详细的文档做,一套做下来就能用了)

(上图:左边为希望使用的功能,中间为功能的参数配置,右边为图形化的功能展示)

当然,我也是从萌新走过来的,第一次看到上图也很害怕,感觉自己根本驾驭不了这个恐怖的机器

下图是做出遥控小车的STM32f103c8t6和引脚图(仅供参考)。是不是感觉不算特别复杂?

什么?看起来还复杂。那我们只能通过我们自己的努力,慢慢熟悉这个软件。我也尽我的力把教程写的有趣一点,让大家愿意跟着一步一步走,收获更多的知识。

跑题了,当我们按下这个按钮

 我们就直接得到了一份结构规范的启动和初始化代码。(如下)

点几下鼠标,我们给单片机写的脑干、血液、心脏的程序就全部完成啦!

因此可以看出,STM32CubeMx是一个很便捷的图形化配置软件,可以快速配置、维护、修改工程。后续所有教程都将基于STM32Cubemx的开发。

三. 写代码

直接上干货

需求如下:

x=3   y=x+5

计算出y的值,若大于0则点亮位于GPIO_ PA0(也就是单片机上的A0接口)处的LED

代码是这个(基于HAL库编程)要写在主函数的无限循环中(为什么是无限循环呢,我们可以假设一个智能家居设备,即使你没按下按钮,他也会一直运行着,一直判断你是否按下按钮,或者监测一些其他的数据)

uint8_t x=3;      
uint8_t y=0;while(1)
{
y=x+5;
if(y>0)GPIO_Writepin(GPIOA,GPIO_PIN_0,0);
}

代码很好读懂,定义x,y两个unsigned int类型的变量(HAL库有对数据类型单独进行宏定义,感兴趣的可以右击uint8_t并进入definition

 然后做加法,然后判断,若y>0,输出低电平,电流从LED的正极流进PA0,LED点亮。

四. 编译代码

STM32是机器,他只听得懂机器语言(汇编语言),因此我们需要把我们上面写的给人看的代码变成汇编语言,大概是下面的效果(别细看 不考)

因此我们写完代码,要点一下编译按钮。

此时的内容不只是程序,而更应该称为 指令。

五. 烧录代码

我们用专门的烧录器将代码直接烧写至单片机的FLASH内,即完成了代码的烧录。注:一般烧录后需要按一下复位的按钮单片机才会开始运行。

Keil这个软件等于说自带烧录的环境,只需要按照教程选好型号即可将编译好的代码烧录进单片机。

六. 代码如何变成现实(略微介绍一下微机原理,感兴趣可以看)

汇编语言的代码烧写至FLASH内。

复位单片机!

单片机开始运行!

PC(程序计数器)从零开始累加,执行以下循环

  1. 它数到n,FLASH里的n号指令被取出,拿去CPU执行。

  2. 指令会涉及到一个地址,某个数字住在内存的一个房间里,房间的号码叫做地址。这一步只会将地址送去地址寄存器,并解出住在那的数字。

  3. 那个数字被拿去CPU,进行计算,计算结果将以变量放在某处

这三步,每步的时间,在STM32f103c8t6单片机中,大约为一至两个机器周期,也就是10——40纳秒。

在第n=114514时,CPU收到指令,将一个1塞进一个叫GPIOA->BRR寄存器的某一位中

随着一个1塞进了那个位置,寄存器的电路所连接的一个三极管轰然导通,电流如泉涌一般沿着三极管导向了GND(可以理解为负极),如此,那个名为PA0的引脚变为了低电平,LED也随之点亮。

七. 总结

这就是我们如何点亮一个led的全过程,写的挺粗糙的。希望这篇教程能起到抛砖引玉的效果,让大家能通过此教程了解到单片机工作的原理,并有兴趣更进一步的深入学习,在之后的学习中事半功倍。

其他的教程,由于CSDN插入图片较为麻烦,因此我直接将生成的PDF文档放入免费的资源中,可以进入我的主页查找。

如下,包含IO、PWM控制舵机、电路搭建、电机控制的教程,代码和演示视频,都置于其中。

(80条消息) 基于STM32的机械臂遥控麦轮小车-之超级适合新手的教程-嵌入式文档类资源-CSDN文库

祝大家学业有成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/49267.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatgpt赋能python:Python单片机:从入门到实践

Python单片机:从入门到实践 近年来,Python在嵌入式领域越来越受到开发者的青睐。Python具有易学易用的特点,方便开发者快速实现单片机的开发。本文将介绍Python单片机的基础知识以及实践应用。 Python单片机的基础知识 Python单片机用的是…

chatgpt赋能python:Python烧录单片机:快速的开发工具

Python烧录单片机:快速的开发工具 简介 Python是一种高级的编程语言,被广泛应用于各种领域,包括机器学习、数据分析和物联网等领域。Python的易用性和简洁性已经成为其成功的关键因素之一。Python也能在烧录单片机时提供极大的方便性和灵活…

推荐给程序员的书:七月图书推荐

七月,图灵原创书相继出炉,并在网店的排行榜上荣登前三甲,图灵原创书的作者皆是各社区的领军人物,有着相当深厚的技术功底,这是图灵原创书在《结网》后的一个跨越。 本月推荐,是本版书与外版书相结合&#x…

这五本 Python 急速入门必读的书,送给正在学习 Python 的你!

书籍是人类进步的阶梯,这句话从古至今都是适用的。为什么会这么说呢?书籍,它记录了人们实践的经验,这些经验有助于我们快速的学习,对于编程学习来说也不例外,今天就给大家带来了以下的书籍干货,…

人际沟通必看的书推荐

人际沟通与口才训练方面的书籍我推荐你看两本(并且看这两本就完全足够了),一本是《沟通与说服必读12篇》,另一本是《演讲与口才必读12篇》,注意这两本书都仅能从12READS官网购买,避免广告,地址请…

学会演讲必看的五本书籍推荐

有哪些演讲必看的书值得推荐?今天小编为大家精选了以下这五本学会演讲必看的经典书籍,提升口才与演讲能力必读哦。首推榜首的《演讲与口才必读12篇》,虽然比其他的书要贵,但是真的有东西。 演讲必看的书推荐之一:《演…

程序猿必看10本好书推荐

版权声明:本文为 ABC实验室 原创文章,版权所有, 侵权必究! 引言 2022年注定是一个不平凡的一年,当下新冠病毒肆虐全球、股市熔断、经济停顿,各行各业都遭受着沉重的打击。作为IT业也难幸免,同…

程序员阅读书籍推荐

文章目录 1、《程序员修炼之道》2、《Effective C#》3、《黑客与画家》4、《编程之美》5、《软技能:代码之外的生存指南》6、《数学之美》7、《增长黑客》8、《富爸爸财务自由之路》9、《编写可读代码的艺术》10、《代码大全》第二版11、《点石成金:访客…

程序员必看的书籍推荐

程序员必看的书籍推荐: 推荐1:Python 网络数据采集 作者:Ryan Mitchell 译者:陶俊杰,陈小莉 原书4.6星好评,一本书搞定数据采集 涵盖数据抓取、数据挖掘和数据分析 提供详细代码示例,快速解决实…

Jeff Atwood倾情推荐——程序员必读之书

英文版:《Code Complete 2》中文版:《代码大全(第二版)》作者:Steve McConnell译者:金戈 汤凌 陈硕 张菲出版社:电子工业出版社出版日期:2007 年8月Jeff Atwood的推荐&#xff1a…

Linux内核必读五本书籍(强烈推荐)

《深入理解Linux内核》 推荐等级:5颗星 为了透彻理解Linux的工作机理,以及为何它在各种系统上能顺畅运行,你需要深入到内核的心脏。cPu与外部世界的所有交互活动都是由内核处理的,哪些程序会分享处理器的时间,以什么样…

新手程序员成长之路的五本必读书籍(附资源下载)

全文共3351字,预计学习时长7分钟 图片来自Pixabay,IvanPais 书籍可以清晰而有条理地陈诉观点,纸张上的笔墨也会给人一种不慌不忙的感觉。不过,科技类书籍存在一些严重的问题:它们几乎很快就过时了。由于缺乏交互性&…

程序员必读的十四本经典书籍

1、《代码大全》 史蒂夫迈克康奈尔 “优秀的编程实践的百科全书,《代码大全》注重个人技术,其中所有东西加起来, 就是我们本能所说的“编写整洁的代码”。这本书有50页在谈论代码布局。” —— Joel Spolsky Steve McConnell的原作《代码大全…

五本计算机必读书籍总结

一、计算机组成原理 思维导图: 1、计算机系统概述 主要讲授信息的数字化表示、存储程序与冯诺依曼体制;计算机的诞生和发展;计算机系统的层次结构和硬件系统组织;计算机的主要性能指标。 2、数据的表示、运算与校验 主要讲授数值…

程序员必读书籍及导读指南

最近在网上看了一个非常好的帖子《程序员一生必读的书》(我的腾讯微博上有分享该贴子链接,有兴趣就点击进去看看吧),该贴的第一个张图片是一个雷达图, 这张图是由ThoughtWorks(全球软件设计与定制领域的领袖…

强烈推荐10本程序员必读的书

经常有读者私下问我,能否推荐几本书,以便空闲的时间读一读。于是我跑去自己的书架上筛选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。 01、《代码整洁之道》 我可以这么肯定地说:《代码整洁之道》值得所有的程序员读一读…

open AI API使用经验

open AI API 文章目录 open AI API引言概念TokenspromptsModels 使用流程1.登录open AI 账号获得API keys2.接入环境3.API用例(1)Completion(2)ChatCompletion(3)Images(4)Edit 引言…

卖AI数字人代理是小风口吗?

我是卢松松,点点上面的头像,欢迎关注我哦! 2023年第一个小风口是:以ChatGPT为代表的人工智能AI。第二个创业小风口则是:数字人直播带货。注意我说的是数字人代理。今天的卢松松的文章就扯一扯数字人直播。 最近龚文…

马车拉的再好,也该摸摸方向盘了!近500家美国企业用ChatGPT取代员工

Datawhale分享 最新:GPT影响,来源:量子位 自从ChatGPT掀起浪潮,不少人都在担心AI快要抢人类饭碗了。 据就业服务平台Resume Builder调查统计,在1000多家受访美国企业中,用ChatGPT取代部分员工的&#xff0…

机场云商sign解析

这里直接进入算法查找主题,至于如何逆向小程序可以在GitHub上搜索wxunpack得知。 这里我就不重复展示抓包过程,抓包里面我们看到header里有nonceStr、sign 通过关键字直接搜索小程序源码得到关键部分: if ("POST" t) y.sign r(d,…