嵌入式学习笔记 - 关于单片机的位数

通常我们经常说一个单片机是8位的,16位的,32位的,那么怎么判断一款单片机的位数是多少位呢,判断的依据是什么呢,

一 单片机的位数

单片机的位数是指单片机数据总线的宽度,也就是一次能处理的数据的位数(bit),不是地址总线的宽度,也不是存储器的位宽,地址线的位数可以跟数据线不一致,像51单片机的地址总线为16位,但是它是8位单片机,ARM的存储器也有8位的但是它是32位机。

顾名思义,单片机的位数越多,一次能处理的数据也就越大,一次能搬运执行的命令也就越复杂,性能也就越强,例如stm32F1系列的性能可以到16~17,而51单片机只能到2~3。

但是8位单片机也有他的优势,就是在达到某些低性能的应用场景下,它的指令与数据更密集,能利用较小的空间实现同样的功能,成本比较低。

二  8位,16位,32位单片机的典型代表以及应用场景

8位单片机,典型的是51系列的,再高级点用AVR、pic的,功能方面,似乎都不会很复杂,一般可能是控制类的多一下。一般不跑嵌入式OS。

16位的单片机,例如MSP430,感觉16位的单片机比较尴尬,高不成低不就,要求低一点,8位MCU就够,高级点不如用32位MCU。一般不跑嵌入式OS。

32位的,就高级点了,一般能跑嵌入式OS,例如ucos2,ucos3,uclinux等等,能做更多复杂的功能。用OS和不用OS的话,编程的思路差异比较大。功能一般有面向控制的,也有简单消费类电子的。

三 编程差异性:

单纯C写代码没啥区别,一般编译器把初始化都做了,需要注意的是,8位单片机定义变量最小可以到1位bit,最大位数可能只能是8位uint8_t, 而16位,32位单片机最小只能到8bit uint8_t, 最大可能能到32bit,uint32_t.

再有就是变量字节对齐问题,32位机字起始地址必须是0,4,8,C这样的4的整数倍,如果一个char型的变量赋值给一个int型字变量,要通过强制类型转换,内存会自动先转换到4字节对齐再赋值。

还有就是结构体中成员对齐的问题,如果在一个 32-bit 类型的成员前面,有 char 及 short 类型成员,且没有凑齐到 32-bit 自然边界,那么编译器将会自动补 NULL 来填充。可以参考另一篇文章-《结构体成员对齐问题》

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

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

相关文章

推荐几个常用免费的文本转语音工具

推荐几个常用免费的文本转语音工具 在数字内容创作的时代,文本转语音(TTS)技术已经成为内容创作者的得力助手。无论是制作视频配音、有声读物、还是为网站增加语音功能,这些工具都能大幅提高创作效率。今天,我将为大家推荐几款优质的免费文本…

Microsoft Azure DevOps针对Angular项目创建build版本的yaml

Azure DevOps针对Angular项目创建build版本的yaml,并通过变量控制相应job的执行与否。 注意事项:代码前面的空格是通过Tab控制的而不是通过Space控制的。 yaml文件中包含一下内容: 1. 自动触发build 通过指定code branch使提交到此代码库的…

Python Day23 学习

继续SHAP图绘制的学习 1. SHAP特征重要性条形图 特征重要性条形图(Feature Importance Bar Plot)是 SHAP 提供的一种全局解释工具,用于展示模型中各个特征对预测结果的重要性。以下是详细解释: 图的含义 - 横轴:表示…

.NET 8 + Angular WebSocket 高并发性能优化

.NET 8 Angular WebSocket 高并发性能优化。 .NET 8 WebSocket 高并发性能优化 WebSocket 是一种全双工通信协议,允许客户端和服务端之间保持持久连接。在高并发场景下,优化 WebSocket 的性能至关重要。以下是针对 .NET 8 中 WebSocket 高并发性能优化…

Ubuntu 22.04.5 LTS 基于 kubesphere 安装 cube studio

Ubuntu 22.04.5 LTS 基于 kubesphere 安装 cube studio 前置条件 已经成功安装 kubesphere v4.3.1 参考教程: https://github.com/data-infra/cube-studio/wiki/%E5%9C%A8-kubesphere-%E4%B8%8A%E6%90%AD%E5%BB%BA-cube-studio 1. 安装基础依赖 # ubuntu安装基础依赖 apt insta…

centos 7 安装 java 运行环境

centos 7 安装 java 运行环境 java -version java version "1.8.0_131" Java(TM) SE Runtime Environment (build 1.8.0_131-b11) Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)java -version java version "1.8.0_144" Java(TM) …

Linux系统管理与编程20:Apache

兰生幽谷,不为莫服而不芳; 君子行义,不为莫知而止休。 做好网络和yum配置,用前面dns规划的www的IP进行。 #!/bin/bash #----------------------------------------------------------- # File Name: myWeb.sh # Version: 1.0 # …

.NET 在鸿蒙系统上的适配现状

目录 .NET 在鸿蒙系统上的适配现状 鸿蒙系统对虚拟机的限制与.NET的适配挑战 NativeAOT 在鸿蒙系统中的适配原理与实现方式 已知问题与解决方案:鸿蒙系统中的 syscall 限制 鸿蒙系统适配中的技术难点与解决方案 跨平台编译的挑战与应对策略 依赖库管理与兼容…

kotlin JvmName注解的作用和用途

1. JvmName 注解的作用 JvmName 是 Kotlin 提供的一个注解,用于在编译为 Java 字节码时自定义生成的类名或方法名。 作用对象: 文件级别(整个 .kt 文件)函数、属性、类等成员 主要用途: 控制 Kotlin 编译后生成的 JV…

树莓派4 yolo 11l.pt性能优化后的版本

树莓派4 使用 Picamera2 拍摄图像,然后通过 YOLO11l.pt 进行目标检测,并在实时视频流中显示结果。但当前的代码在运行时可能会比较卡顿,主要原因包括: picam2.capture_array() 是一个较慢的操作;YOLO 推理可能耗时较长…

Docker私有仓库实战:官方registry镜像实战应用

抱歉抱歉,离职后反而更忙了,拖了好久,从4月拖到现在,在学习企业级方案Harbor之前,我们先学习下官方方案registry,话不多说,详情见下文。 注意:下文省略了基本认证 TLS加密&#xff…

MySQL 安全架构:从渗透测试到合规审计

MySQL 安全架构:从渗透测试到合规审计 一、数据库安全的时代挑战与核心需求 在数据成为企业核心资产的今天,MySQL 面临的安全威胁日益复杂。据统计,2024 年全球数据库泄露事件中,关系型数据库占比高达 68%,其中 MySQ…

【基础复习笔记】计算机视觉

目录 一、计算机视觉基础 1. 卷积神经网络原理 2. 目标检测系列 二、算法与模型实现 1. 在PyTorch/TensorFlow中实现自定义损失函数或网络层的步骤是什么? 2. 如何设计一个轻量级模型用于移动端的人脸识别? 3. 描述使用过的一种注意力机制&#…

Django 项目的 models 目录中,__init__.py 文件的作用

在 Django 项目的models/init.py文件中,这些导入语句的主要作用是将各个模型类从不同的模块中导入到models包的命名空间中。这样做有以下几个目的: 简化导入路径 当你需要在项目的其他地方使用这些模型时,可以直接从models包导入&#xff0c…

实现一个简单的 TCP 客户端/服务器

注意: TCP 三次握手建立连接建立连接后,TCP 提供全双工的通信服务,也就是在同一个连接中,通信双方 可以在同一时刻同时写数据,相对的概念叫做半双工,同一个连接的同一时刻,只能由一方来写数据T…

专业课复习笔记 9

前言 学爽了。 为什么哈希函数的空间复杂度是 O(N) 我们实际使用的电话号码的数目是 N &#xff0c;理论上至多有 R 个电话号码&#xff0c;桶数组 bucket array 的容量是 M &#xff0c;满足条件 N < M < < R N<M<<R N<M<<R&#xff0c;因为动…

【论文阅读27】-TCN–BiLSTM -滑坡预测

《A Landslide Displacement Prediction Model Based on the ICEEMDAN Method and the TCN–BiLSTM Combined Neural Network》 发表于 Water 期刊&#xff0c;2023年。 &#x1f4cc; 主要内容概述 这篇论文提出了一种滑坡位移预测模型&#xff0c;结合了&#xff1a; ICEEM…

8b10b编解码仿真

一、基本概念 8B/10B编码&#xff08;8-bit to 10-bit encoding&#xff09;是一种将8位数据&#xff08;包括数据字符和控制字符&#xff09;转换为10位符号&#xff08;Symbol&#xff09;的编码技术&#xff0c;由IBM工程师Al Widmer和Peter Franaszek于1983年提出。其核心思…

23龙信服务器wp

中规中矩的一套服务器&#xff0c;比较简单 1.服务器系统的版本号是___。&#xff08;格式&#xff1a;1.1.1111&#xff09; 2.网站数据库的版本号是___。&#xff08;格式&#xff1a;1.1.1111&#xff09; 3.宝塔面板的“超时”时间是___分钟。&#xff08;格式&#xff1a;…

Redis 存储原理与数据模型(三)

目录 存储结构 存储转换 数据组织 hash 冲突 负载因子 扩容 缩容 渐进式rehash Redis 线程模型 单线程命令处理机制 为什么Redis 命令的单线程快 机制 优化 柔性数组 Redis reactor_io 多线程网络模型 存储结构 key-value键值对通过 hash 的方式存储到数组中value 主要…