stm32学习笔记

1KB(千字节)=1024B(字节)

1B(字节)= 8 Bit(比特/位)

两个字节一个汉字,字母和数字占一个字节

一、ARM概述及发展史

ARM是一家芯片设计公司,本身不生产,提供IP CORE
常见CPU生产厂家:ST、ATMEL、 SUMSUNG、 NXP

ARM体系架构
ARM7:no MMU 66Mhz,32位CPU,代表型号:S3C4480
ARM9: MMU,400Mhz,32位CPU,S3C2440
ARM11: MMU,500Mhz,32位CPU,S3C6410

Cortex体系架构
Cortex-A:(A8单核1Ghz/s5pv210,A9四核1.4Ghz/s5p4418/exynos4412,A53八核1.4Ghz/s5p6818)主要应用于高端消费电子设备、网络设备、移动互联网设备
Cortex-M:微控制器,主要应用于工业控制,汽车电子,医疗电子。具有快速中断处理,低功耗,性价比高的特点。
--->Cortex-M0(主频:48Mhz,32位CPU,STM32F051)
--->Cortex-M3 (主频:72Mhz,32位CPU,STM32F103)
--->Cortex-M4 (主频:168Mhz,32位CPU,STM32F407)
--->Cortex-M7 (主频:216Mhz,32位CPU,STM32F767)
Cortex-R:实时处理器,主要应用于对实时性要求比较高的场合

二、STM32项目开发方式(前提条件:电路原理图、芯片手册):
1)基于寄存器来开发项目
2)基于库函数来开发

三、寄存器:寄存器不依靠地址区分数据,而依靠名称。每一个寄存器都有自己的名称,我们告诉 CPU 去具体的哪一个寄存器拿数据,这样的速度是最快的。有人比喻寄存器是 CPU 的零级缓存。以下是CPU调用存储设备的顺序:

8086寄存器

cortex-M0寄存器

 

R0-R12:通用目的寄存器
R13(MSP主栈指针,PSP进程栈指针): 堆栈指针寄存器(SP,Stack Pointer),操作系统两个指针才有用
R14链接寄存器(LR):专门用来存储子程序和中断时的返回地址
R15程序寄存器(PC):

内存空间中每一个地址空间可以存放8bit的信息

Cortex‐M3 拥有两个堆栈指针,然而它们是 banked,因此任一时刻只能使用其中的一个。
主堆栈指针(MSP):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包括中断服务例程)
进程堆栈指针(PSP):由用户的应用程序代码使用。

堆栈概念:单片机应用中,堆栈是个特殊存储区,堆栈属于RAM空间的一部分,堆栈用于函数调用、中断切换时保存和恢复现场数据。


参考网址:http://blog.sina.com.cn/s/blog_13e68b0390102xgqo.html

疑问:这个堆栈到底是哪一部分的存储空间?

 

三、中断/异常:中断服务程序存放在哪里? 记录在中断向量表,存放在地址空间开始的一块连续的地方。

 

四、嵌入式C编程要点:

1、static:创建全局变量、局部变量、函数。一直留内存,直到程序结束。

2、const int a=5; const定义的是只读的常量。且必须初始化,放在内容的一个符号表里,不是放在存储空间里。

3、Volatile int a;  编译器对访问该变量的代码就不再进行优化。

4、extern int a;置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其它模块中寻找其定义。

5、typedef int u32;  给已有的类型起一个别名。

6、define pi 3.14是宏定义,发生在预处理阶段,也就是编译之前,它只进行简单而机械的字符串替换,而不进行任何检查。

7、条件编译
#ifndef
#define
#endif

8、按位或|、按位与~操作

 

五、接口标准CMSIS:ARM Cortex™ 微控制器软件接口标准(CMSIS:Cortex Microcontroller SoftwareInterface Standard) 。 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层,使用CMSIS,可以为处理器和外设实现一致且简单的软件接口,从而简化软件的重用、缩短微控制器新开发人员的学习过程,并缩短新设备的上市时间。通过在所有Cortex-M芯片供应商产品中标准化软件接口,这一成本会明显降低,尤其是在创建新项目或将现有软件迁移到新设备时。

 

六、固件库:STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间API,通过使用固件函数库,无需深入掌握底层硬件细节,开发者就可以轻松应用每一个外设。因此,使用固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API (application programming interface 应用编程界面)驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。

 

七、Arduino与stm32区别:Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。由一个欧洲开发团队于2005年冬季开发。其成员包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti等。

Atmel(爱特梅尔):美国、产品类别:16位、32位、应用范围:汽车电子、工业用、电机控制、汽车、楼宇自动化、家用电器、家庭娱乐、工业自动化、照明、物联网、智能能源、移动电子设备、计算机外设。

https://www.w3cschool.cn/arduino/?

ST(意法半导体):意大利/法国、产品类别:32位、应用范围:CommunicaTIons and Networking、LED和普通照明、交通运输、医疗保健、多媒体融合、家电和电动工具、楼宇自动化技术电机控制、电源和功率转换器、能源和智能电网、自动化、计算机与通信基础设施

对于Arduino很多人存在一个误解,如果你问他设计用的什么单片机,他也许会说Arduino单片机,这种说法说的真是太不专业了,或许玩Arduino的同学都只是玩玩吧,真正的Arduino是一个采用AVR单片机为核心的硬件与软件相结合的开源平台,这个开源平台包括Arduino的原理图、PCB和bom表,还有Arduino库函数的开源。真正使Arduino大火的原因是并不是他所采用的AVR单片机,也不是他的硬件,主要原因是库函数与底层硬件整合的天衣无缝,降低了非专业人士玩电子的难度。致使很多不是学电子的同学可以在Arduino上设计出PCB绘画机、WiFi小车等一系列的高级应用。

https://baijiahao.baidu.com/s?id=1593422328455300958&wfr=spider&for=pc

 

八、基于Cortex-M3 和IPv6的物联网技术开发与应用

https://item.taobao.com/item.htm?spm=a230r.1.14.20.2b771d6eP7Q8Zq&id=564434709873&ns=1&abbucket=10#detail

https://baike.baidu.com/item/%E5%9F%BA%E4%BA%8ECortex-M3%20%E5%92%8CIPv6%E7%9A%84%E7%89%A9%E8%81%94%E7%BD%91%E6%8A%80%E6%9C%AF%E5%BC%80%E5%8F%91%E4%B8%8E%E5%BA%94%E7%94%A8/22330893?fr=aladdin

热卖M2物联网无线遥控开关语音控制二次开发DIY智能家居 疯狂物联:

https://item.taobao.com/item.htm?spm=a230r.1.14.27.2b771d6eP7Q8Zq&id=567014390091&ns=1&abbucket=10#detail

淘宝搜索“疯狂物联、Arduino”

九、时钟

1、STM32 F103 时钟树详解:https://blog.csdn.net/qq_41673920/article/details/82785641

2、时钟是同步单片机系统各个部件工作时序的最小时间单位,时钟通过 CPU 控制,产生其他与时钟保持一定关系的同步控制信号,协调各部件的工作时序,没有时钟系统就崩溃了。
如 CPU 与存储器(RAM)传输数据,地址(A0 ~ Ax)、数据 (D0 ~ Dx)、读/写 (R/W) 等信号就必须按照一定的时序出现在各自的总线上,否则就乱套了。

单片机的时钟就是单片机工作所需要的节拍,实际上就是时钟源产生的方波信号,单片机的取指令,译指令等工作过程都要以时钟的一个周期为最小周期。

方波信号:就是指电路系统中信号的质量,如果在要求的时间内,信号能不失真地从源端传送到接收端,我们就称该信号是方波信号。

3、上升沿与下降沿:

数字电路中,把电压的高低用逻辑电平来表示。逻辑电平包括高电平和低电平这两种。不同的元器件形成的数字电路,电压对应的逻辑电平也不同。在TTL门电路中,把大于3.5伏的电压规定为逻辑高电平,用数字1表示;把电压小于0.3伏的电压规定为逻辑低电平,用数字0表示。数字电平从低电平(数字“0”)变为高电平(数字“1”)的那一瞬间(时刻)叫作上升沿。

数字电路中,把电压的高低用逻辑电平来表示。逻辑电平包括高电平和低电平这两种。不同的元器件形成的数字电路,电压对应的逻辑电平也不同。在TTL门电路中,把大于3.5伏的电压规定为逻辑高电平,用数字1表示;把电压小于0.3伏的电压规定为逻辑低电平,用数字0表示。数字电路中,数字电平从高电平(数字“1”)变为低电平(数字“0”)的那一瞬间叫作下降沿。

上升沿等于是接通的瞬间给个瞬发信号,相当与通电信号。

下降沿等于是断开的瞬间给个瞬发信号,相当与断电信号。

4、什么是时钟呢 时钟信号的关键指标:http://www.elecfans.com/d/827743.html

5、时钟发生器:时钟发生器是用来产生时钟信号的器件。常用于数字产品中,产品中所有的组件将随着所产生的时钟信号来同步进行运算动作。数字产品必须有时钟的控制,才能精确处理数字信号。若时钟不稳定,轻则造成数字信号传送上的失误,重则导致数字设备无法正常运作。https://baike.baidu.com/item/%E6%97%B6%E9%92%9F%E5%8F%91%E7%94%9F%E5%99%A8/9827742

https://blog.csdn.net/qq_42384937/article/details/83512162

7、时序逻辑电路:http://m.elecfans.com/article/626631.html

十:定时器:http://www.sohu.com/a/127978571_464086

十一:NVIC:提供中断控制器,用于总体管理异常,称之为“内嵌向量中断控制器:Nested Vectored Interrupt Controller (NVIC)”。NVIC和处理器内核紧密相连.

十二:上位机与下位机:上位机是指可以直接发出操控命令的计算机,一般是PC/host computer/master computer/upper computer,屏幕上显示各种信号变化(液压,水位,温度等)。下位机是直接控制设备获取设备状况的计算机,一般是PLC/单片机single chip microcomputer/slave computer/lower computer之类的。上位机发出的命令首先给下位机,下位机再根据此命令解释成相应时序信号直接控制相应设备。下位机不时读取设备状态数据(一般为模拟量),转换成数字信号反馈给上位机。简言之如此,实际情况千差万别,但万变不离其宗:上下位机都需要编程,都有专门的开发系统。
在概念上,控制者和提供服务者是上位机,被控制者和被服务者是下位机,也可以理解为主机和从机的关系,但上位机和下位机是可以转换的。https://baike.baidu.com/item/%E4%B8%8A%E4%BD%8D%E6%9C%BA/9868149?fr=aladdin

十三:项目

1、微信,手机APP远程控制STM32(如可调速电风扇,电磁锁,LED灯,蜂鸣器,温湿度获取)https://www.cirmall.com/circuit/3401#/details

2、STM32四轴飞行器开发-通用I2C驱动库:https://www.cirmall.com/circuit/7025#/details

3、基于STM32小区用智能储物柜控制方案:https://www.docin.com/p-1624957529.html

4、TPYBoard V102基于STM32F405单片机,通过USB接口进行数据传输。内置4个LED灯、一个加速度传感器,可在3V-10V之间的电压正常工作。

MicroPython [1]  是 Python 3 语言的精简实现 ,包括Python标准库的一小部分,经过优化可在微控制器和受限环境中运行。
pyboard是官方提供的运行MicroPython的电子电路板,它可以运行MicroPython。

https://my.oschina.net/micropython/blog/1840577

https://item.taobao.com/item.htm?spm=a230r.1.14.228.145e4efbRrUNkQ&id=568583597995&ns=1&abbucket=10#detail

5、ZYduino智能循迹:https://item.taobao.com/item.htm?id=532719576264&ali_refid=a3_420434_1006:1110682510:N:%2Bj1g8qvcwRg2BD45j63tz3NebGjmeNzB:8096aae3e26605259b65657ff868fdc0&ali_trackid=1_8096aae3e26605259b65657ff868fdc0&spm=a230r.1.1957635.23

6、MQTT服务器:https://baijiahao.baidu.com/s?id=1610057452592802735&wfr=spider&for=pc

https://item.taobao.com/item.htm?spm=a230r.1.14.232.145e4efbRrUNkQ&id=561852194350&ns=1&abbucket=10#detail

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值