LPC2132的IOPIN
先看关于寄存器描述。
写着IOPIN为只读寄存器。
但其实可以向IOPIN里写数据,如http://home.eeworld.com.cn/my/space-uid-440873-blogid-77805.html 所示。
可以使用IOPIN使GPIO管脚上输出瞬时的0和1
先写IOSET再写IOCLR寄存器可使管脚先输出1再输出0。有的系统允许两个有效输出之间存在这段
延时时间。但某些应用要求一个GPIO口的一组管脚同时输出一个二进制数(0和1混合)。这可通过写端
口的IOPIN寄存器来实现。
下面的代码所实现的功能是:P0.[31:16]和P0.[7:0]输出保持不变的同时将P0.[15:8]设置成0xA5,不管
P0.[15:8]之前是何值:
IO0PIN=(IO0PIN && # 0xFFFF00FF)‖# 0x0000A500
但有陷阱,如http://blog.pfan.cn/niao0311/38996.html 所示。
下面是解释:http://bbs.zlgmcu.com/dv_rss.asp?s=xhtml&boardid=29&id=18359&page=3
“先写IOSET再写IOCLR寄存器可使管脚先输出1再输出0。有的系统允许两个有效输出之间存在这段延时时间。但某此应用要求一个GPIO口的一组管脚同时输出一个二进制(0和1混合)。这可通过写端口的IOPIN寄存器来实现(但是,Philips不推荐这种用法,非必要时不要使用)。”
以上是《深入浅出ARM7-LPC213x_214x(上册)》P138中的一段文字。
问题是:既然使用IOPIN能够避免使用IOSET/IOCLR 输出1/0出现不必要的中间态,为什么Philips不推荐这种用法?非必要时不要使用,那在何时才用IOPIN的方法。
回答:非必须时不要使用,是因为IOPIN是没有位屏蔽操作的,即改变这个寄存器32个引脚都可能会发生改变,所以必须要用与或的操作实现引脚状态的改变,但与或操作即读改写有一问题,就是读改写被打断时(可能被中断或任务打断)时,如打断后IOPIN的值改了,那再写回去的值就不正确了,所以应用时要十分注意。
转载于:https://www.cnblogs.com/whyaiw/archive/2013/03/23/2977844.html
LPC2132的IOPIN相关推荐
- ARM7-LPC213x(四)IOPIN
IOPIN 通过写 IOPIN 寄存器可以让某些端口同时输出包含 1 和 0 的二进制数,达到快速稳健地控制某些端口的目的. 程序: #include "config.h" #de ...
- 嵌入式系统开发过程中遇到的——volatile
嵌入式 系统开发过程中遇到的-- volatile 对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的 .如果系统结构支持独立的 I/O 地址空间,并且是端口映射,就必须使用汇编语言完成 ...
- 嵌入式开发中对(*(volatile unsigned long *)) 的理解
一.说明 (*(volatile unsigned long *)) 这个语句对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的.如果系统结构支持独立的IO地址空间,并且是端口映射,就必 ...
- 嵌入式volatile关键字
今天在看S3C2440开发板的初始化代码时,对#define A (* (volatile unsigned long *) 0x48000000这种形式的定义方式有困惑,于是求助GOOGLE大神,在 ...
- 有关volatile unsigned long一些说明
对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的.如果系统结构支持独立的IO地址空间,并且是端口映射,就必须使用汇编语言完成实际对设备的控制,因为C语言并没有提供真正的"端口 ...
- #define GPBCON (*(volatile unsigned *)0x56000010) 的理解
2019独角兽企业重金招聘Python工程师标准>>> 对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的.如果系统结构支持独立的IO地址空间,并且是端口映射,就必须使 ...
- LPC2141芯片解密 芯片解密干什么
芯片解密是指从已经被加密了的芯片里,把存储的代码拷贝出来.嵌入了程序代码的芯片有很多种,而MCU只是其中一种.单片机(MCU)一般都有内部EEPROM/FLASH供用户存放程序和工作数据.大部分单片机 ...
- ARMv7体系结构汇总
文章目录 1 .处理器工作模式 2. 处理器工作状态 3. ARM寄存器 3.1 通用寄存器 3.2 状态寄存器 3.3 备份的程序状态寄存器SPSR 3.4 Thumb寄存器 4. ARM指令系统 ...
- proteus各个版本下载
Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司).它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器 ...
最新文章
- 王炸不断,半导体巨头们到底在打什么牌?
- 陆奇“入驻” YC,开启新征程
- .net 导出excel和word
- 2018这一年或平淡或不凡,2019看更大的世界
- mysql cte 语法,mysql8 公用表表达式CTE的使用方法实例分析
- springboot 替换tomcat_Spring Boot实战 之 解剖HelloWorld原型应用
- 【Redis】16.Redis哨兵
- react不同环境不同配置angular_叫雨山斗鸡优势在哪里,环境不同,价值不同
- 机械制图手册_机械制图基本知识大全!
- 日志查看_实时查看容器日志
- Cocos2d-xV3.17.2 win32平台模板源码详注
- 【记录】ASP.NET MVC MapRoute .htm 不起作用
- 【机械】如何用SOLIDWORKS进行ArtCam雕刻机排版
- pc网页唤起QQ、企业微信、skype、whatsApp等
- python -PyPDF2对pdf 进行拆分
- 计算机二级选择题需要刷吗,“我明天就要考计算机二级了”
- 生物信息学|miRNA-疾病关联预测的图形自动编码模型
- #2阴阳师首页模块模拟
- Spring Boot 入门系列(二十三)整合Mybatis,实现多数据源配置!
- Qt解析XML相关(QDom方式)