正点原子sys.h文档详解
文档主体内容为位带的映射,目的是实现位带操作。
第一部分:位带映射的宏函数
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)
正点原子sys.h文档详解的更多相关文章
- MYSQL服务器my.cnf配置文档详解
		MYSQL服务器my.cnf配置文档详解 硬件:内存16G [client] port = 3306 socket = /data/3306/mysql.sock [mysql] no-auto-re ... 
- 【红外DDE算法】数字细节增强算法的缘由与效果(我对FLIR文档详解)
		[红外DDE算法]数字细节增强算法的缘由与效果(我对FLIR文档详解) 1. 为什么红外系统中图像大多是14bit(甚至更高)?一个红外系统的性能经常以其探测的范围来区别,以及其对最小等效温差指标.首 ... 
- Hibernate配置文档详解
		Hibernate配置文档有框架总部署文档hibernate.cfg.xml 和映射类的配置文档 ***.hbm.xml hibernate.cfg.xml(文件位置直接放在src源文件夹即可) (在 ... 
- 【命令】man命令帮助文档详解
		前言:Linux命令分为内建命令和外部命令:内建命令是shell本身自带的,外部命令是是一个可执行程序 我们在使用命令帮助的时候需要钱哦区分命令是内建命令还是外部命令 一.查看一个命令是内建命令还是外 ... 
- 【PDF】java使用Itext生成pdf文档--详解
		[API接口] 一.Itext简介 API地址:javadoc/index.html:如 D:/MyJAR/原JAR包/PDF/itext-5.5.3/itextpdf-5.5.3-javadoc/ ... 
- Log4Net(二)之记录日志到文档详解
		原创文章,转载必需注明出处:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/log4net-%E4%BA%8C-%E4%B9%8B% ... 
- elastic search文档详解
		在elastic search中文档(document)类似于关系型数据库里的记录(record),类型(type)类似于表(table),索引(index)类似于库(database). 文档一定有 ... 
- 前端 HTML文档 详解
		<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ... 
- 在MyEclipse中使用javadoc导出API文档详解
		本篇文档介绍如何在MyEclipse中导出javadoc(API)帮助文档,并且使用htmlhelp.exe和jd2chm.exe生成chm文档. 具体步骤如下: 打开MyEclipse,选中想要制作 ... 
- ABBYY FineReader 15扫描和保存文档详解
		通过使用ABBYY FineReader 15 OCR文字识别软件的扫描和保存文档功能,用户可使用扫描仪或数码照相机获得图像文档,然后再转换为各种数字格式文档. 在"新任务窗口"中 ... 
随机推荐
- React报错之React.Children.only expected to receive single React element child
			总览 当我们把多个子元素传递给一个只期望有一个React子元素的组件时,会产生"React.Children.only expected to receive single React el ... 
- 使用jquery—Canvas实现html5小游戏——《坦克大战》
			目录 1.项目背景 2.项目展示 3.设计思路 3.1.坦克移动 3.2.坦克开火 3.3.击中坦克 4.实现代码 5.总结 1.项目背景 2021年春节期间在家无聊,正好又学过一些前端的知识,因此就 ... 
- [常用工具] mermaid学习笔记
			mermaid是一个基于Javascript的图表绘制工具,类似markdown用文本语法,用于描述文档图形(流程图. 时序图.甘特图),开发者可以通过一段mermaid文本来生成SVG或者PNG形式 ... 
- css、js 缓存清除
			此种方式完美达到了清除缓存的效果 css引入标签可在一个引号内完成,js引入标签由于解析原因需要将两个标签拆开再组 使用:按照此格式,放在原 <link /> 或 <script&g ... 
- scratch图形化编程教程
			1. scratch软件 市面上类似于scratch这种图形化编程的软件非常多,各个品牌的都有,而且每个品牌之后的风格.界面布局也是不同的,所以我会简单的列举一些对应软件. scratch3.0 优点 ... 
- 使用动态输出打印内核的DEBUG信息
			简介 printk()是很多嵌入式开发者喜欢用的调试手段之一,但是,使用printk()每次都要重新编译内核,很不方便.使用动态输出在不需要重新编译内核的情况下,方便的打印出内核的debug信息. 要 ... 
- sstream中的stringstream怎么用
			sstream中的stringstream怎么用 1.cin cin是从缓冲区读入,会把空格.回车等不可见的字符当做是分割,跳过.并且最后读入之后,后面会有剩余的部分,比如空格.回车等. 2.getl ... 
- mysql 简单查询
			查询特定列SELECT ename,birthday FROM emp; 查询所有的select*from emp; 给列起别名select ename AS 姓名, salary AS 工资 FRO ... 
- angular建立服务打印日志创建全局变量方法有两种,手工创建,依赖注入
- 上传图片文件并立即显示到页面使用 javascript实现鼠标拖动画矩形框以及实现固定区域内随意拖动
			首先,你要设计好鼠标事件处理方法,主要是鼠标左键点击,左键释放,还有鼠标移动方法其次,要了解容什么方式,画一个矩形,设计一个方法:DrawRectgle(左上角,右下角),并且要确定当调用这个方法时, ... 
