www.pudn.com > sound-source-location.rar > bitband.h, change:2014-05-08,size:2345b


/******************************************************************************* 
 * @name    : GPIO位带操作头文件 
 * @author  : 布谷鸟 
 * @web     : WWW.UCORTEX.COM 
 * @version : V1.0 
 * @date    : 2014-04-03 
 * @MDK     : KEIL MDK4.72a & KEL MDK 5.10 
 * @brief   : 介绍通过位带映射操作GPIO的方法 
 * ----------------------------------------------------------------------------  
 * @copyright 
 * 
 * UCORTEX版权所有,违者必究!例程源码仅供大家参考,旨在交流学习和节省开发时间, 
 * 对于因为参考本文件内容,导致您的产品直接或间接受到破坏,或涉及到法律问题,作 
 * 者不承担任何责任。对于使用过程中发现的问题,如果您能在WWW.UCORTEX.COM网站反 
 * 馈给我们,我们会非常感谢,并将对问题及时研究并作出改善。例程的版本更新,将不 
 * 做特别通知,请您自行到WWW.UCORTEX.COM下载最新版本,谢谢。 
 * 对于以上声明,UCORTEX保留进一步解释的权利! 
 * ---------------------------------------------------------------------------- 
 * @description 
 *  
 * 本实验介绍了一种类似51单片机操作IO口的方法,具体原理请参考《Cortex-M3权威指南》 
 * 第5章(87~92页),如果要使用GPIO的位带操作,请在源码中添加头文件"bitband.h"。 
 * 
 * 使用位带操作前请包含此头文件 
 * 
 *----------------------------------------------------------------------------- 
 * @history 
 * ---------------------------------------------------------------------------- 
 * 更改时间:2014-04-03    更改人:布谷鸟 
 * 版本记录:V1.0 
 * 更改内容:新建 
 * ---------------------------------------------------------------------------- 
 * 
 ******************************************************************************/ 
 
#ifndef __BITBAND_H 
#define __BITBAND_H	 
#include "stm32f10x.h"																     
	  
//位带操作,实现51类似的GPIO控制功能 
//具体实现思想,参考<<CM3权威指南>>第五章(87页~92页). 
//IO口操作宏定义 
#define BITBAND(addr, bitnum) 		((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2)) 
#define MEM_ADDR(addr)  					*((__IO uint32_t*)(addr)) 
 
//例如:需要定义GPIOA.01作为输出IO,定义格式为: #define PA1out	GPIOout(GPIOA, 1) 
//例如:需要定义GPIOA.01作为输入IO,定义格式为: #define PA1in	 GPIOin(GPIOA, 1) 
#define GPIOout(GPIOx,bit)				MEM_ADDR(BITBAND((uint32_t)(&GPIOx->ODR), bit)) 
#define GPIOin(GPIOx,bit)					MEM_ADDR(BITBAND((uint32_t)(&GPIOx->IDR), bit)) 
 
#endif 
 
/******************* (C) COPYRIGHT 2014 WWW.UCORTEX.COM *****END OF FILE****/