正点原子sys.h文档详解
2024-10-21 11:44:00
文档主体内容为位带的映射,目的是实现位带操作。
第一部分:位带映射的宏函数
1 #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
2 #define MEM_ADDR(addr) *((volatile unsigned long *)(addr))
3 #define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum))
第二部分:STM各GPIO的输入寄存器 (IDR)、输出寄存器寄存器(ODR)映射地址
//x范围:A~G
1 #define GPIOx_ODR_Addr (GPIOx_BASE+12)
2 .....
3 #define GPIOx_IDR_Addr (GPIOx_BASE+8)
4 .....
第三部分:上述各寄存器的位带区域
1 //x范围:A~G,n范围:[0,15]
2 #define Pxout(n) BIT_ADDR(GPIOx_ODR_Addr,n) //输出
3 #define Pxin(n) BIT_ADDR(GPIOx_IDR_Addr,n) //输入
使用办法:
实现后,可将Pxout(n)\Pxin(n) 再宏定义,例如
1 #define DHT11_DQ_OUT PAout(0) //数据端口 PA0出方向
2 #define DHT11_DQ_IN PAin(0) //数据端口 PA0入方向
其中,
DHT11_DQ_OUT = 1/0, 可以代替:GPIO_SetBits/ResetBits(GPIOB,GPIO_Pin_0)
DHT11_DQ_IN ,可以代替 GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0)
最新文章
- 深入理解java内存模型系列文章
- [转]acm忠告
- Effective Java 读书笔记之五 枚举和注解
- JAVA_HOME path classpath 以及cmd编译运行java代码
- C语言break和continue
- Dynamics AX 2012 R2 客制化RDP报表参数对话框
- bzoj3551 3545
- 简单了解下Dubbo
- 一个简单版的波纹css3动画
- 进击的新版NavMesh系统:看我飞檐走壁
- 201521123008《Java程序设计》第10周学习总结
- redis基础二
- SQLSERVER 聚集一个表的字段2008及以后,要求支持XML
- 基于C++的成功-失败法演示
- C++学习 —— 住着魔鬼的细节
- Spring Boot 技术总结
- IIS W3C日志记录字段和HTTP状态代码的说明
- Hibernate学习笔记一:项目创建与基本配置文件
- python基础---->;python的使用(五)
- Android之自定义View学习(一)
热门文章
- Spark通信框架RPC介绍
- Redis缓存何以一枝独秀?——从百变应用场景与热门面试题中感受下Redis的核心特性与使用注意点
- CLISP学习(一)
- python进阶之路17 包的使用、collections、time、random模块
- [Untiy]贪吃蛇大作战(五)——游戏主界面
- Flutter新版本2.X系列--01创建项目
- 【Python】bytes和hex字符串之间的相互转换
- 真正“搞”懂HTTP协议11之代理服务
- 一文详解数仓GaussDB(DWS) 函数出参带出方式
- JavaScript: symbol 和 string key 取值用法