0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于C代码中的特殊运算按位操作的介绍和应用

MATLAB 来源:djl 作者:柚籽 2019-09-17 14:57 次阅读

C代码中有一种特殊的运算,即按位操作。那么,

Simulink模型里可以实现按位来操作吗?

能继而生成按位操作的代码吗?

位操作

要得到:

y1 = (uint8_T)(u1 & 217)

或者

y1 = (uint8_T)(u1 & 0xD9)

怎么做:

Simulink框图模型里使用Bitwise Operator系列的模块;

在Stateflow里则直接使用按位操作符,比如&,|;

MATLAB Function的m脚本里则使用bitor (bitxx)系列的命令。

实例四

1. 新建一个简单的Simulink模型

这三个模块都只实现了一个简单的运算:对输入u1执行按位运算。

关于C代码中的特殊运算按位操作的介绍和应用

双击上图中Bitwise Operator模块,设置如下图:

关于C代码中的特殊运算按位操作的介绍和应用

Chart 里则直接写单个 & 符号表示 “按位与”,同时需要注意 Enable C-bit operations 勾选,不然会计算出错。它默认是勾选上的。

关于C代码中的特殊运算按位操作的介绍和应用

MATLAB Function 里的语句,直接使用 bitxx 系列的命令。点击 Edit Data,也可以手动设置输入输出口的数据类型。

关于C代码中的特殊运算按位操作的介绍和应用

2. 代码生成基本配置

求解器:定步长—离散求解器

系统目标文件:ert.tlc

3. 新建数据对象

打开Model Explorer,点击菜单的Add,在Base Workspace里定义输入输出信号的数据对象,数据对象类型为Simulink.Signal,并如图设置输入输出均为uint8类型,StorageClass设置为ExportedGlobal:

关于C代码中的特殊运算按位操作的介绍和应用

4. 信号关联

在信号线上右键,将信号与Base Workspace的数据对象关联在一起。鼠标操作的方式,可以参考之前的帖子里的菜单截图。因为这里的信号略多,所以可以使用命令的方式来实现:

关于C代码中的特殊运算按位操作的介绍和应用

此时,第一张模型截图中信号名前方的蓝色小叉子就会出现。

5. 生成代码

Ctrl+B,生成代码。

如前面所设置的,得到这三个按位操作的代码:

关于C代码中的特殊运算按位操作的介绍和应用

所以说,在Simulink建模也可以实现按位运算:

在Simulink框图模型里使用Bitwise Operator模块;

在Stateflow里则直接使用按位操作符,比如&,|;

在脚本里则使用bitor (bitxx)系列的命令。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C代码
    +关注

    关注

    1

    文章

    89

    浏览量

    14198
  • 数据类型
    +关注

    关注

    0

    文章

    230

    浏览量

    13539
  • 脚本
    +关注

    关注

    1

    文章

    378

    浏览量

    14709
收藏 人收藏

    评论

    相关推荐

    关于操作的疑问求解

    大家都知道,带有对应的带别名区,操作带别名区就可以写带区的BIT,读取带BIT值到内部
    发表于 05-17 07:33

    STM32开发运算以及操作

    操作。同时,STM32还提供了操作,使得对单个位进行操作更加方便。本文将详细介绍STM32开发
    的头像 发表于 02-02 14:38 700次阅读

    Linux操作系统如何下PCIe的复位键

    在Linux操作系统,看如何下PCIe的复位键
    的头像 发表于 01-20 09:31 892次阅读
    Linux<b class='flag-5'>操作</b>系统<b class='flag-5'>中</b>如何<b class='flag-5'>按</b>下PCIe的复位键

    stm32操作有什么用

    STM32操作是一种在ARM Cortex-M微控制器中使用的特殊技术,它允许同时处理多个位,并且可以提高代码效率和性能。在这篇文章
    的头像 发表于 12-22 16:02 723次阅读

    STM32开发运算以及操作

    为了像51单片机一样能够对某个管脚单独操作,引入了操作这样的操作机制。
    的头像 发表于 11-29 14:36 586次阅读
    STM32开发<b class='flag-5'>中</b>的<b class='flag-5'>位</b><b class='flag-5'>运算</b>以及<b class='flag-5'>位</b>带<b class='flag-5'>操作</b>

    单片机C语言操作的编程实现:置和清零

    前面介绍C语言编程的6种操作,分别是与“&”、
    的头像 发表于 11-28 09:35 3593次阅读
    单片机<b class='flag-5'>C</b>语言<b class='flag-5'>位</b><b class='flag-5'>操作</b>的编程实现:置<b class='flag-5'>位</b>和清零

    Verilog基础:介绍几个常用的操作

    操作符是对二进制进行操作运算符。以下是一些常用的操作
    的头像 发表于 11-09 10:59 866次阅读

    Verilog基础:几个常用的操作

    操作符是对二进制进行操作运算符。
    的头像 发表于 11-09 10:57 930次阅读

    C语言运算符的使用方法

    详细介绍C语言表达式、算术运算符、赋值运算符、关系运算符、条件结构、逻辑运算符、
    发表于 11-02 11:30 721次阅读
    <b class='flag-5'>C</b>语言<b class='flag-5'>运算</b>符的使用方法

    求助,关于C语言属于运算的问题

    写了一个51单片机的程序,但是运行不正常,使用网络在线编译的工具验证了一下,发现不对,程序如下截图: 程序x的值我设置为0xa5,然后听过一个运算,根据x的值,经过一个8次循环
    发表于 10-08 08:39

    C语言如何写出高效代码呢?

    当涉及复杂的高效C代码案例时,这些代码示例展示了C语言中一些复杂且高效的应用案例,涵盖了排序算法、图算法、
    发表于 09-06 14:57 251次阅读
    <b class='flag-5'>C</b>语言如何写出高效<b class='flag-5'>代码</b>呢?

    如何使用C代码的比特段幅操作

    设置/ 清除, 从而增加操作速度 。 本样本展示了如何使用 C 的比特段幅操作, 使用简单的预处理器宏来进行存取 。 您可以在下列时间下载样本
    发表于 08-31 09:58

    C语言中运算符的高级用法(4)

    在上一篇文章,我们介绍了^运算符的高级用法,本篇文章,我们将介绍~ 运算符的一些高级用法。
    发表于 08-22 10:48 163次阅读
    <b class='flag-5'>C</b>语言中<b class='flag-5'>位</b><b class='flag-5'>运算</b>符的高级用法(4)

    C语言中运算符的基础用法

    运算符是一组用于在二进制数之间进行操作运算
    发表于 08-21 14:52 369次阅读
    <b class='flag-5'>C</b>语言中<b class='flag-5'>位</b><b class='flag-5'>运算</b>符的基础用法

    C语言中运算的使用技巧

    程序的所有数在计算机内存中都是以二进制的形式储存的。运算就是直接对整数在内存的二进制进行操作
    发表于 08-10 09:17 377次阅读