网易博客搬迁,原贴时间:2015-02-13

在C51代码中,时常会使用 bdata定义可位定义的变量

如:u8 bdata Status;
sbit IT = Status^0;
......
这是因为:
"51架构的单片机都有一段可位寻址的区域,位于20H~2FH,总共128位。

在C51中编程时,分配的bit型变量都会定位到这段区域里。 如果某个变量声明其存储

      类型为bdata型,则会分配到这段位寻址RAM内,并按照标准的无符号字符型访问"

当移植代码到stm32,这些定义无效,则可使用位带操作或共用体嵌套结构体的方法解决
方法一:共用体中嵌套结构体
例:typedef union Status_TypeDef
{
u8 a;
struct
{
u8 bit0:1;//":1"表示只占用一个bit位,参考C语言
u8 bit1:1;
u8 bit2:1;
......
u8 bit7:1;
}b;
}Status_TypeDef;
 Status_TypeDef Status;
则原可位定义变量为:Status.a
变量各位为:Status.b.bit0
Status.b.bit1
......

方法二:使用位带操作

参考外设区地址的位带操作
【待更新】

【学习笔记】在KEIL中stm32移植51代码时位定义变量的替换相关推荐

  1. 【LVGL】学习笔记--(1)Keil中嵌入式系统移植LVGL

    一 LVGL简介 最近emwin用的比较烦躁,同时被LVGL酷炫的界面吸引到了,所以准备换用LVGL试试水. LVGL(轻量级和通用图形库)是一个免费和开源的图形库,它提供了创建嵌入式GUI所需的一切 ...

  2. PHP学习笔记 - 在Eclipse中使用XDebug调试代码 | Using XDebug debug code in eclipse

    这是一篇转载的技术篇,放在自己博客上方便以后随时参考 原文网址是: http://aofengblog.blog.163.com/blog/static/631702120117283414706/ ...

  3. python学习笔记,python中的队列及代码实现

    队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插入操作的端称为队尾,进行删除操作的 ...

  4. 【theano-windows】学习笔记十一——theano中与神经网络相关函数

    前言 经过softmax和MLP的学习, 我们发现thenao.tensor中除了之前的博客[theano-windows]学习笔记五--theano中张量部分函数提到的张量的定义和基本运算外, 还有 ...

  5. 【theano-windows】学习笔记六——theano中的循环函数scan

    前言 Scan是Theano中最基础的循环函数, 官方教程主要是通过大量的例子来说明用法. 不过在学习的时候我比较习惯先看看用途, 然后是参数说明, 最后再是研究实例. 国际惯例, 参考网址 官网关于 ...

  6. USB学习笔记(5)STM32 USB库移植步骤

    USB学习笔记(5)STM32 USB库移植步骤 本文是将官网的USB驱动库文件移植到自己的工程里面,实现USB功能的具体移植步骤说明,实现Custom_HID功能. 1.先准备一个工程模板 获取工程 ...

  7. K210学习笔记(三) K210与STM32进行串口通信,K210发STM收

    文章目录 前言 一.以/r/n为结尾 二.K210端代码 三.STM32端 3.1 main函数 四.测试结果 4.1当收到1时 4.2当收到2时 4.3 测试视频 总结 前言 前面我们讲了STM32 ...

  8. USB学习笔记(4)STM32关于USB库的解读

    USB学习笔记(4)STM32关于USB库的解读 为了方便在STM32上实现USB功能,本文对USB库的文件进行解读. USB-FS_Device peripheral interface(外围接口) ...

  9. K210学习笔记(一) K210与STM32串口通信相关

    文章目录 前言 一.STM32 串口中断 接收K210板子发送的ASCII码整数 转换为 多位整形数据 二.MAIX BIT(K210)与STM32串口通讯 2.1 实现MAIX BIT与XCOM之间 ...

  10. SpringBoot学习笔记(4)----SpringBoot中freemarker、thymeleaf的使用

    1. freemarker引擎的使用 如果你使用的是idea或者eclipse中安装了sts插件,那么在新建项目时就可以直接指定试图模板 如图: 勾选freeMarker,此时springboot项目 ...

最新文章

  1. Mybatis配置文件头
  2. 力扣 278.第一个错误的版本
  3. 很遗憾AI还不能审查出儿童性侵录像:沙漠也被当成小黄片
  4. 微软中国总部半日游学小记
  5. Linux完美学习笔记
  6. Scala中的fold和reduce理解
  7. 更新中国地区ip列表
  8. PyCharm 下载/上传gitlab 代码
  9. SMAA算法详解 - SMAABlendingWeightCalculationVS
  10. windows中关于委派(delegation)的理解
  11. 有1、2、3、4四个数字,可以组成多少个互不相同且无重复的三位数?都是多少?
  12. mysql grant select()_[MySQL] - MySQL的Grant命令
  13. android虚拟手柄摇杆的实现
  14. FinClip 2021 年 12 月产品大事记
  15. 理财-股票(扫文章中的二维码下软件)
  16. 中国大学MOOC第五章测试题答案
  17. 2020-7-28 ------2021-2-2 年度总结
  18. 高数-不定积分-第二类换元法-1
  19. 云端智创 | 基于视频AI原理的音视频智能处理技术
  20. 微信小程序安全通讯方案

热门文章

  1. H5常见面试题及答案(一)
  2. 阿特拉斯开发协议--与ATLAS 扭力控制器交互
  3. 虚拟机磁盘映射报错,无法向虚拟机导入文件
  4. [算法笔记]如何证明一个问题是NPC问题
  5. [笔记]Windows核心编程《十七》内存映射文件
  6. HashMap底层原理与扩容机制
  7. UCOS操作系统——系统内部任务(六)
  8. 操作 神通数据库_神通数据库-快速入门指南 PDF 下载
  9. 使用微信同声传译插件开发一款翻译类的小程序
  10. vbs格式编程教程提高