STM32HAL库和STC51同时操作多个IO口

2023-10-29

STM32同时将PC13,PC14,PC15拉低/拉高。
根据:

#define GPIO_PIN_13                ((uint16_t)0x2000U)  /* Pin 13 selected   */
#define GPIO_PIN_14                ((uint16_t)0x4000U)  /* Pin 14 selected   */
#define GPIO_PIN_15                ((uint16_t)0x8000U)  /* Pin 15 selected   */
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
{
  /* Check the parameters */
  assert_param(IS_GPIO_PIN(GPIO_Pin));
  assert_param(IS_GPIO_PIN_ACTION(PinState));

  if(PinState != GPIO_PIN_RESET)
  {
    GPIOx->BSRR = (uint32_t)GPIO_Pin;
  }
  else
  {
    GPIOx->BRR = (uint32_t)GPIO_Pin;
  }
}

所以可以写成;

GPIOC -> BRR = GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;//同时置零
GPIOC -> BSRR = GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;//同时置一

优化一下:

GPIOC -> BRR = (0x2000 & 0x4000 & 0x8000) & ((7)<<13);  //7 = 4+2+1 相当于PC13,PC14,PC15 同时执行拉低。
GPIOC -> BSRR = (0x2000 & 0x4000 & 0x8000) & ((7)<<13);  //7 = 4+2+1 相当于PC13,PC14,PC15 同时执行拉高。

再次优化一下:

GPIOC -> BRR = 0xE000 & ((7)<<13);
GPIOC ->BSRR = 0xE000 & ((7)<<13);

STC51同时将P3.5,P3.6,P3.7拉低/拉高。

p3 &= (~0xe0); //将P3.5,P3.6,P3.7置零
p3 |= ((~7)<<5); //将P3.5,P3.6,P3.7置一
p3 |= ((~3)<<6); //将P3.6,P3.7置一
p3 |= (~255); //将P3口全部置一
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32HAL库和STC51同时操作多个IO口 的相关文章

  • Linux中的STDIN_FILENO和STDOUT_FILENO

    环境 Vmware Workstation CentOS 6 4 x86 64 说明 STDIN FILENO 接收键盘的输入 STDOUT FILENO 向屏幕输出 程序 接收用户在屏幕上输入的数据 并在屏幕上输出 要求使用read和wi

随机推荐

  • java mina 长连接_MINA实现TCP长连接(一)——客户端实现

    前言 之前已经讲过了Netty实现的UDP通讯 大家感兴趣的可以参考以下文章 Netty实现UDP客户端 Netty实现UDP服务端 那么今天给大家介绍一个新的通讯框架 MINA 之所以要介绍mina 是因为它在通讯长连接方面有比较大的优势
  • 用镜像搭建一个新以太坊节点并部署合约(演示)

    我们自己已经搭建好一个镜像 里面包含了以太坊需要的环境 以及这条私链的创世块 现在用这个镜像跑一个容器出来 我们可以快速搭建一个连接到私链的节点 1 docker run it name node6 daocloud io ubuntu n
  • 今日头条阅读量怎么刷_自动刷今日头条阅读量 头条号自己刷阅读量

    什么时间段发头条更容易有很多阅读量和推荐量 谢邀请 首先我不会像其他博主一样粘贴复制蹭浏览量 我讲的都是属于自己的干货 首先要看你属于什么领域 如果你是写情歌 美文这类文章 适合早上8 00点发送 如果你属于时尚 生活 影视 这类文章 适合
  • 漏洞复现-CVE-2022-24112 APISIX远程代码执行漏洞原理与复现

    目录 漏洞原理 漏洞描述 影响范围 apisix学习 漏洞复现 config yaml 环境搭建 exp代码 入侵检测与修复 总结 参考 漏洞原理 漏洞描述 An attacker can abuse the batch requests
  • jmeter模拟多用户并发

    目录 前言 一 100个真实的用户 二 100个用户同时登录 前言 JMeter可以轻松地模拟多用户并发 从而测试Web应用程序的性能和稳定性 一 100个真实的用户 1 一个账号模拟100虚拟用户同时登录和100账号同时登录 区别 1 1
  • 【Linux】TCP相关实验验证

    Linux 博客主页 一起去看日落吗 分享博主的在Linux中学习到的知识和遇到的问题 博主的能力有限 出现错误希望大家不吝赐教 分享给大家一句我很喜欢的话 看似不起波澜的日复一日 一定会在某一天让你看见坚持的意义 祝我们都能在鸡零狗碎里找
  • 2018年最应该关注的11个vue.js组件库

    根据最近的React库和Angular库的列表发展情况 2018年 这里统计有11个常用的vue js组件库 它们最有可能出现在你的下一个vue js应用程序的UI中 Vue js React and Angular NPM 2017下半年
  • 华为OD机试真题-垃圾短信识别【2023Q1】

    题目描述 大众对垃圾短信深恶痛绝 希望能对垃圾短信发送者进行识别 为此 很多软件增加了垃圾短信的识别机制 经分析 发现正常用户的短信通常具备交互性 而垃圾短信往往都是大量单向的短信 按照如下规则进行垃圾短信识别 本题中 发送者A符合以下条件
  • 毕业季:女生IT就业指南

    我们在判定职位前途的时候 要从以下两个方面入手 1 门槛较低 但上限天花板要高 2 市场广阔 发展潜力要大 根据这两个准则 我得到了一个结论 自媒体将成为未来比较受欢迎的职业 或者说整个互联网行业 1 UI设计 UI设计非常注重细节和美感
  • 服务器数据库查看版本信息,查看服务器的数据库版本信息

    查看服务器的数据库版本信息 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 GaussDB for MySQL 全兼容My
  • 如何解决谷歌云盘wget无法下载大文件的问题

    如何解决谷歌云盘wget无法下载大文件的问题 wget指令 大文件 小文件 wget指令 最近在用谷歌云盘下载较大的数据集的时候 发现常常因为下载文件过大 无法直接用wget下载 多方查找资料之后确定了一个可行的路径 分享给大家 也作为记录
  • centos8.2+Tesla T4搭建深度学习运行环境

    因为工作需要 租借了腾讯云服务器 购买的配置是centos 8 2系统 512G的存储空间 另外显卡是Tesla T4 20核CPU 80G内存 在此基础上搭建深度学习的运行环境 将要安装pytorch和tensorflow开发框架 1 安
  • C# dll代码混淆加密

    目录 一 需求 二 用法 1 新建C 项目 2 开始加密 3 常见的错误 4 添加加密规则 5 导出加密dll 6 调用加密dll 结束 一 需求 C 项目生成 dll 在反编译工具下 好比皇帝的新装 dll 内部的代码看的一清二楚 在这里
  • 【python基础知识】7.实操-用Python实现“文字PK”小游戏(一)

    用 Python实现 文字PK 小游戏 前言 明确项目目标 分析过程 拆解项目 逐步执行 代码实现 版本1 0 自定属性 人工PK 版本2 0 随机属性 自动PK 版本3 0 打印战果 三局两胜 前言 我想先和你谈谈一个项目一般是怎么完成的
  • Bootstarp入门教程(4) 排版(1)

    1 标题 HTML中的所有标题标签 从 h1 到 h6 均可用 div class container div class row h1 h1 Bootstrap heading h1 h2 h2 Bootstrap heading h2
  • pkg-config 编译安装

    由于大部分的开源工程都需要用到pkg config 因此今天在这讲解一下pkg config for mac 安装过程 1 检测环境是否已安装pkg config 再命令行中输入 pkg config 若未安装 则提示命令未找到 2 安装p
  • CentOS 7安装DastDfs

    1 安装gcc 编译时需要 FastDFS是C语言开发 安装FastDFS需要先将官网下载的源码进行编译 编译依赖gcc环境 如果没有gcc环境 需要安装gcc yum install y gcc gcc c 2 安装libevent 运行
  • 文件包含漏洞学习

    一 文件包含简介 开发人员都希望代码更加灵活 所以通常会将被包含的文件设置为变量 用来进行动态调用 正是这种灵活性 从而导致客户端可以调用一个恶意文件 造成文件包含漏洞 1 文件包含函数 PHP中文件包含函数有以下四种 require re
  • H5 Canvas与SVG的比较

    转载 https www w3school com cn html5 html 5 canvas vs svg asp 两者都能够在在浏览器中绘图 但两者之间还是不一样的 Canvas 通过Javascript来绘制2D图形 是逐像素进行渲
  • STM32HAL库和STC51同时操作多个IO口

    STM32同时将PC13 PC14 PC15拉低 拉高 根据 define GPIO PIN 13 uint16 t 0x2000U Pin 13 selected define GPIO PIN 14 uint16 t 0x4000U P