GD32F207 位带操作 GPIO

news2024/9/26 5:15:58

下面的程序用在GD32F207上测试成功, 如果要在新的单片机上进行位带操作需要查看新的单片机的寄存器偏移量。

#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2)) 
#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr)) 
#define BIT_ADDR(addr, bitnum)   MEM_ADDR(BITBAND(addr, bitnum)) 
#define output_offset 0x0c
#define input_offset  0x08
//IO口地址映射
#define GPIOA_ODR_Addr    (GPIOA+output_offset) //0x4001080C 
#define GPIOB_ODR_Addr    (GPIOB+output_offset) //0x40010C0C 
#define GPIOC_ODR_Addr    (GPIOC+output_offset) //0x4001100C 
#define GPIOD_ODR_Addr    (GPIOD+output_offset) //0x4001140C 
#define GPIOE_ODR_Addr    (GPIOE+output_offset) //0x4001180C 
#define GPIOF_ODR_Addr    (GPIOF+output_offset) //0x40011A0C    
#define GPIOG_ODR_Addr    (GPIOG+output_offset) //0x40011E0C    

#define GPIOA_IDR_Addr    (GPIOA+input_offset) //0x40010808 
#define GPIOB_IDR_Addr    (GPIOB+input_offset) //0x40010C08 
#define GPIOC_IDR_Addr    (GPIOC+input_offset) //0x40011008 
#define GPIOD_IDR_Addr    (GPIOD+input_offset) //0x40011408 
#define GPIOE_IDR_Addr    (GPIOE+input_offset) //0x40011808 
#define GPIOF_IDR_Addr    (GPIOF+input_offset) //0x40011A08 
#define GPIOG_IDR_Addr    (GPIOG+input_offset) //0x40011E08 
 
//IO口操作,只对单一的IO口!
//确保n的值小于16!
#define PAout(n)   BIT_ADDR(GPIOA_ODR_Addr,n)  //输出 
#define PAin(n)    BIT_ADDR(GPIOA_IDR_Addr,n)  //输入 

#define PBout(n)   BIT_ADDR(GPIOB_ODR_Addr,n)  //输出 
#define PBin(n)    BIT_ADDR(GPIOB_IDR_Addr,n)  //输入 

#define PCout(n)   BIT_ADDR(GPIOC_ODR_Addr,n)  //输出 
#define PCin(n)    BIT_ADDR(GPIOC_IDR_Addr,n)  //输入 

#define PDout(n)   BIT_ADDR(GPIOD_ODR_Addr,n)  //输出 
#define PDin(n)    BIT_ADDR(GPIOD_IDR_Addr,n)  //输入 

#define PEout(n)   BIT_ADDR(GPIOE_ODR_Addr,n)  //输出 
#define PEin(n)    BIT_ADDR(GPIOE_IDR_Addr,n)  //输入

#define PFout(n)   BIT_ADDR(GPIOF_ODR_Addr,n)  //输出 
#define PFin(n)    BIT_ADDR(GPIOF_IDR_Addr,n)  //输入

#define PGout(n)   BIT_ADDR(GPIOG_ODR_Addr,n)  //输出 
#define PGin(n)    BIT_ADDR(GPIOG_IDR_Addr,n)  //输入

GD32F207这里区分STM32L151的重要地方是

STM32L151是

#define output_offset 0x14
#define input_offset   0x10

GD32是

#define output_offset 0x0c
#define input_offset  0x08

下面是GD32F207的数据手册中的截图

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/889712.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安防监控/视频集中存储/云存储平台EasyCVR v3.3增加首页告警类型

安防监控/视频集中存储/云存储EasyCVR视频汇聚平台&#xff0c;可支持海量视频的轻量化接入与汇聚管理。平台能提供视频存储磁盘阵列、视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联、H.265自动转码等…

基于Lin协议的UDS调度表

参考ISO 17987-2. 有两种调度模式&#xff1a; diagnostics only mode 没什么好说的&#xff0c;不存在普通应用报文。 interleaved diagnostics mode&#xff1a; 需要UDS请求时&#xff0c;等待当前normal communication schedule table执行完成&#xff0c;开始执行dia…

chromedriver.exe 的所有版本下载地址

Chrome for Testing availability 上面的网址是V115 v116.... 以上的。 CNPM Binaries Mirror 上面这个是V115版本以下的。 这个文章没有任何实际价值&#xff0c;记录的原因是因为突然发现过去的py无法运行&#xff0c;原因是chrome浏览器偷偷升级到V115&#xff0c;于是找…

Vue2中根据权限添加动态路由

Vue2中根据权限添加动态路由 大概记录一下主要代码 1.根据后端返回的路由列表生成左侧菜单&#xff08;后端返回的数据结构中用id和pid来区别包含关系&#xff09; 大概结构如下&#xff1a; 2.前端需要处理成包含children的树形结构 //动态生成菜单 export const gener…

Radek‘s notebook

VGGImagenette预训练迁移学习&#xff0c;6个训练样本 kaggle的dogs vs cats数据集&#xff1a; 博客&#xff1a;https://medium.com/radekosmulski/can-we-beat-the-state-of-the-art-from-2013-with-only-0-046-of-training-examples-yes-we-can-18be24b8615f 代码&#x…

MQTT协议-EMQX技术文档-spring-boot整合使用--发送接收-消费

概念先行&#xff1a; mqtt与mq的关系 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种基于发布/订阅模式的通信协议&#xff0c;它与MQ&#xff08;Message Queue&#xff0c;消息队列&#xff09;有一定的关联&#xff0c;但二者并不完全相同。 M…

空气IT

现代社会中&#xff0c;空气质量成为了人们关注的焦点之一。随着工业化的发展&#xff0c;汽车尾气、工厂排放和燃煤等行为导致城市空气污染日益严重&#xff0c;给人们的健康和生活质量带来了极大的威胁。 首先&#xff0c;空气污染对人体健康造成了严重的危害。空气中的颗粒…

费米问题:如何估算?

解答费米问题有两个重要的思想&#xff1a; 第一个是“逻辑树法”&#xff1a; 用逻辑拆解把一个大的问题拆分为几个小问题&#xff0c;大问题是未知的&#xff0c;而拆解后的小问题是可以通过经验和逻辑推算得出的。最后再把得到解答的小问题反推到大问题上&#xff0c;用已…

HTML基础 知识点总结

从这篇笔记开始总结看过的《从0到1 HTMLCSSJavaScript》书籍笔记&#xff0c;记录HTML以及CSS的相关知识点&#xff0c;为之后从事相关工作打好基础 简单介绍 基本标签文本列表表格 一.简单介绍 HTML&#xff1a;超文本标记语言&#xff0c;HTML是一门描述性的标记语言CSS&a…

Visual Components 专业版功能介绍 衡祖仿真

Visual Components专业版Professional 版本包括Visual Components精华版Essentials 中所有的功能&#xff0c;并提供您用于建模和创建自己的组件的工具。 Visual Components专业版功能 1、GEOMETRY SIMPLIFICATION 几何体简化 通过简化和删除&#xff08;CAD&#xff09;模型…

如何快速的合并多个PPT使之成为一个PPT?

如何快速的合并多个PPT使之成为一个PPT&#xff1f; 项目过程中&#xff0c;经常给客户汇报&#xff0c;经常做PPT&#xff0c;有时候&#xff0c;需要把之前的ppt内容整合到新的内容中&#xff0c;如何快速合并以及使用呢&#xff1f; 幻灯片&#xff08;PPT中&#xff09;点…

微信开发之一键撤回消息的技术实现

撤回消息 请求URL&#xff1a; http://域名地址/revokeMsg 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数名必选类型说明wId是string登录实例标识wcId…

excel统计函数篇2之count系列

1、COUNT(value1,[value2],…):计算参数列表中数字的个数 2、COUNTA(value1,[value2],…)&#xff1a;计算参数列表中值的个数 联想在excel之数学函数、excel中的通配符一文中提到求和函数&#xff1a; SUMIF(range,ceriteria,[sum_range])&#xff1a;对范围内符合指定条件的…

H5: div与textarea输入框的交互(聚焦、失去焦点、键盘收起)

简介 本文是基于 VUE3TS 的代码说明。 记录自己遇到的 div 与 textarea 输入框交互的聚焦、失去焦点、键盘收起、表情插入不失去焦点的需求实现。 需求分析 1.固定在页面底部&#xff1b; 2.默认显示纯文字与发送图标按钮&#xff0c;文字超出的省略显示&#xff1b; 3.点击…

QT多屏显示程序

多屏显示的原理其实很好理解&#xff0c;就拿横向扩展来说&#xff1a; 计算机把桌面的 宽度扩展成了 w1&#xff08;屏幕1的宽度&#xff09; w2(屏幕2的宽度) 。 当一个窗口的起始横坐标 > w1&#xff0c;则 他就被显示在第二个屏幕上了。 多屏虚拟成一个桌面 qt的说明…

React+Typescript使用接口泛型处理props

好 刚讲完组件 那么 这次 我们来看一下 数据传递的 props 还是上文的案例 例如 我们想将 title 传给Hello组件 之前我们可以直接这样 以一个标签属性的形式传过去 而我们在子组件中 这样去使用 但现在 我们从编辑器中都可以看出 这种写法已经不行了 然后 我们将 hello 组件…

【Swagger】只需要3步搭建Swagger环境,就可以让你的项目实现Swagger在线文档,实时浏览,修改展示

目录 1. pom.xml文件中添加Swagger的jar包 2. 配置Swagger 3. 项目启动中加入Swagger注解的开关&#xff0c;启动Swagger功能 4. 启动项目&#xff0c;查看效果 Swagger 的功能这里就不多说明了&#xff0c;相信大家都懂的&#xff0c;好奇多问一句&#xff0c;大家有知道其…

Python文件操作教程,Python文件操作笔记

文件的打开与关闭 想一想&#xff1a; 如果想用word编写一份简历&#xff0c;应该有哪些流程呢&#xff1f; 打开word软件&#xff0c;新建一个word文件写入个人简历信息保存文件关闭word软件 同样&#xff0c;在操作文件的整体过程与使用word编写一份简历的过程是很相似的…

数据科学家需要掌握的Docker要点

大家好&#xff0c;Python以及pandas和scikit-learn等Python数据分析和机器学习库套件可以帮助你轻松开发数据科学应用程序。然而Python中的依赖性管理是一项挑战&#xff0c;在进行数据科学项目时&#xff0c;需要花费大量时间安装各种库&#xff0c;并跟踪正在使用的库的版本…

linux系统服务学习(八)DNS域名系统配置

文章目录 DNS域名管理系统一、DNS概述1、DNS系统概述☆ DNS的正向解析☆ DNS的反向解析☆ 根域&#xff08;.&#xff09;☆ 一级域名<顶级域|国家域>☆ 二级域名(自己购买管理)☆ 域名机构 2、DNS工作原理3、dig工具使用 二、DNS服务器的搭建1、DNS服务器端软件2、DNS服…