当前位置: 首页 > news >正文

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

通常我们经常说一个单片机是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.dtcms.com/a/181050.html

相关文章:

  • Spring生态全景解析:Spring、Spring MVC、SpringBoot与Spring Cloud的关系
  • ClickHouse多表join的性能优化:原理与源码详解
  • element-ui分页的使用及修改样式
  • 38-算法打卡-栈与队列-前 K 个高频元素-leetcode(347)-第三十八天
  • uni-app使用web-view组件APP实现返回上一页
  • 数组和切片的区别
  • 常见问题-SQLServer中创建新数据库使用哪个中文编码?
  • 无人机电池储存与操作指南
  • LlamaIndex 第六篇 SimpleDirectoryReader
  • PostgreSQL 的 pg_advisory_lock 函数
  • Redhat 系统详解
  • Windows系统下【Celery任务队列】python使用celery 详解(二)
  • Windows 下 dll转换成lib
  • vue知识点总结 依赖注入 动态组件 异步加载
  • 【星海随笔】信息安全相关标准
  • Windows下Dify连接Ollama无效
  • 反向沙箱介绍
  • C++ —— 类的嵌套和循环依赖问题
  • KERNEL32!NlsServerInitialize函数分析创建了一个目录对象和目录对象下面的5个对象
  • 【MySQL】-- 事务
  • 华为5.7机考第一题充电桩问题Java代码实现
  • 嵌入式系统架构验证工具:AADL Inspector v1.10 全新升级
  • 优雅草星云智控系统产品发布会前瞻:SNMP协议全设备开启指南-优雅草卓伊凡
  • 代码随想论图论part06冗余连接
  • 【MySQL】存储引擎 - ARCHIVE、BLACKHOLE、MERGE详解
  • 多模型协同预测在风机故障预测的应用(demo)
  • Java设计模式之抽象工厂模式:从入门到精通
  • 服务器配置错误导致SSL/TLS出现安全漏洞,如何进行排查?
  • 在自然语言处理任务中,像 BERT 这样的模型会在输入前自动加上一些特殊token
  • 从概念表达到安全验证:智能驾驶功能迎来系统性规范