IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32入门-(1) -> 正文阅读

[嵌入式]STM32入门-(1)

前言
博主是个大二菜鸡,在自学单片机的路上摸爬滚打算是有点眉目了,自认为目前流行的单片机教程都不够通俗易懂,对于外行爱好者不够友好,所以打算用尽可能简单的语言把自己学到的分享出来,但单片机毕竟不是玩具,必要的概念不能回避.水平有限,不敢妄称教程,也不定期更新,只希望可以多一个人因为这个系列而感受到编程的快乐.如果有不恰当的地方欢迎指正,博主会尽快改正.

常见单片机型号

ROM:主要的存储空间,容量大,掉电不丢失,但读写速度相较于RAM更慢,有最小擦除限制
单片机的ROM是flash,flash是ROM的一种形态,flash只能整页擦除,这个一页可能占到flash总容量的全部,就是说单片机的flash内容不可以随意修改

RAM:所有程序全部暂存在ROM里运行,芯片运行时会把程序从ROM中复制到RAM中运行,速度极快,但内容掉电丢失,所以只要一掉电电子设备就会从头开始运行,单片机也是如此

对电脑而言,ROM就是硬盘,容量256G/512G/1024G
RAM就是内存,8G/16G/32G
电脑在运行时也会把所有要用的文件都装载在RAM中执行,所有的系统/软件全都是在内存里运行,他们平时保存在ROM里,运行过程中产生的数据也会保存进ROM

对手机而言,8+128/12+128/12+256,前面的就是RAM大小,后面的就是ROM大小

RAM决定了你可以运行多少程序,ROM决定了你可以下载保存多少程序

单片机的RAM和ROM相比手机电脑当然要差得多
我们一般不用考虑ROM和RAM大小,正常情况下都是够用的,常见的三款STM32里容量最小的stm32f103c8有64KB的ROM,容量最大的stm32f103ze有512KB的ROM,而一个循迹小车的代码编译后一般不超过10KB

单片机是遵循写入的程序进行工作的芯片

目前任何普通可编程芯片的基本原理都是,芯片内部有很多寄存器,大部分寄存器可以写入也可以读取,给特定的寄存器写入0或1单片机就会做特定的事情,这些寄存器在单片机内部是依次排列的,他们都有对应的地址,要写入某个寄存器就给他所在的地址写入值,单片机的RAM和ROM的数据也全都依照地址排列

地址映射示意图

地址从0x0到0xffffffff会划分成很多个区块,每个区块有不同的功能,例如stm32的ROM地址是0x20000000到0x3fffffff共536,870,911个Byte(也就是B),KB就是1024B,那么stm32的理论最大ROM是536MB,像stm2f103c8的ROM只有64KB,那么0x20000000+64*1024后面的地址就无效
这些都是stm32的规则,其他芯片的ROM地址可能会不一样,flash的地址排列也只是举个例子,我们只要对底层原理有个概念就可以

就是说我们只要对着这样一个超级庞大的地址表,去查找我们要的功能在哪个地址,然后修改对应地址的值,就可以控制单片机,这是最底层的地址位操作

位操作过于反人类了,一个单片机有上万个寄存器,我们随便做点事情都要操作其中上百个
所以单片机厂商给所有的寄存器都起了名字,然后他们写一个底层文件把寄存器的名字和地址对应起来,我们的代码就可以从0x4001000 |= 3 变成 GPIOA -> ODR |= 3 (随便举个例子)
形如后者的我们称之为寄存器操作,变得更加简单直观了,而且移植性也更好,对于不同的芯片只要更换底层的寄存器定义文件,逻辑部分代码就可以直接移植

如果操作寄存器还不够简单,单片机厂家还给我们封装了库,如果基于库开发
设置PA1为高电平就可以从GPIOA -> IDR |= 1变成GPIO_SetBits(GPIOA,GPIO_Pin_1)
这样代码就更加直观了,我们现在最常用的也是这种操作,称为库函数

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-14 21:52:49  更:2021-11-14 21:54:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:45:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码