网易博客搬迁,原贴时间: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. MySQL · 社区动态 · MariaDB 10.2 前瞻
  2. python算两个点的距离公式_计算Python Numpy向量之间的欧氏距离实例
  3. 网络七层协议 五层模型 TCP连接 HTTP连接 socket套接字
  4. linux下如何使用sftp命令【转】
  5. 【ABP杂烩】Extensions后缀扩展方法
  6. “阿一web标准学堂”第1课:web标准概述(附视频、课件、代码下载)
  7. python路径相关小问题
  8. socketmq 设置队列大小_TCP 半连接队列和全连接队列满了会发生什么?又该如何应对?...
  9. Android开发实践:线程与异步任务
  10. 「代码随想录」本周学习小结!(动态规划系列五)
  11. 关于C#中的DLLImport
  12. python 笔记 冒泡排序
  13. thinkpadt410接口介绍_ThinkPadT410全程拆解
  14. 【爬虫】身份证前6位区域划分编码爬取
  15. 软考软件设计师(知识产权)
  16. 电脑蓝屏怎么解决0x0000007b,解决电脑蓝屏问题
  17. SaaS企业级免费市场似乎即将过去
  18. 【相册】华为手机调用系统相册的问题
  19. 【vue】实现超过两行或多行显示展开收起 (单个展开收起和数组多个展开收起)
  20. [题解]斐波那契数列

热门文章

  1. 如何使用ps制作一寸照
  2. 居于U2000手机管理光猫,小区运营商FTTH光猫注册神器,MA5680T手机管理,自动添加光猫...
  3. SWOT分析》思维导图,帮助你做好企业优势劣势分析图
  4. php 获取 客户端,php 获取客户端信息
  5. 【计算机系统组成】IO设备知识要点
  6. unity的安装教程
  7. B站 郝斌C语言 课件+笔记 (全)
  8. echarts自定义象形图,矢量图标
  9. sqlserver2008清理数据库日志文件
  10. ssdp java_SSDP协议 - 实施