⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bitoperation.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
字号:
//*************************************************************************************/
//                                    COMMIT.INC                                      */
//                                 NEPTUNE TESTING PROJECT                            */
//                                 bitoperation.c                                     */
//                                 REV 0.1                                            */                                          */
//                                 ZHANGXUGANG                                        */
//*************************************************************************************/
//clarification.
void Setgroup32bit( unsigned int, unsigned int, unsigned int, unsigned int );
void Setgroupbit(  int, int,  int , int );
void Setgroup16bit(  int,  int,  int,  int );

//define
//**************************************************************************************/
//Function Name :Setgroupbit( )
//descriptioin  :setbit of 32 bit register.
//parameter     :4.
//author        :zhangxuguang
//date          :10/18/05
//**************************************************************************************/
void Setgroupbit( int regOriginalValue,  int bitPosition,  int bitWidth,  int confValue   )
{
   int  regValueTemp = 0;
  regValueTemp = *( int*)regOriginalValue;
  regValueTemp &=~((0xFFFFFFFF>>(32-(bitWidth)))<<(bitPosition));
  regValueTemp|=( ( confValue & (0xFFFFFFFF>>(32-(bitWidth) ) ) )<<(bitPosition));
  *( int*)regOriginalValue = regValueTemp ;
  
  }

//**************************************************************************************/
//Function Name : Setgroup16bit( )
//Description   : setup a bit value to a 16bit width register.
//Parameter     : 1.reg address's value ,2. bit position . 3. the width to be setup.
//                4.setup value.
//Rev           : 0.1
//Author        : zhangxuguang
//Date          :18/10/05
//**************************************************************************************/
void Setgroup16bit(  int regOriginalValue,  int bitPosition,  int bitWidth,  int confValue )
{
   unsigned short regValueTemp = 0;
   regValueTemp = *(unsigned short*)regOriginalValue;
   regValueTemp &= ~((0xFFFf>>(16-(bitWidth)))<<(bitPosition));
   regValueTemp|=( ( confValue & (0xFFFF>>(16-(bitWidth) ) ) )<<(bitPosition));
   *(unsigned short*)regOriginalValue = regValueTemp ;
  
  }
//********************************************************************************************/
//FUNCTION NAME: Setgroup32bit( int, int, int, int )
//Description  : set the dedicated bit value in a 32bit register.
//Parameter    : 1. register address  2. start position . 3 . number . 4. value.
//Rev          : 1.0
//********************************************************************************************/
void Setgroup32bit( unsigned int RegisterAddr, unsigned int bitPosition, unsigned int bitWidth,  unsigned int confValue )
{
    int temp = * ( unsigned int *) ( RegisterAddr );
	temp &= ~((0xFFFFFFFF>>(32-(bitWidth)))<<(bitPosition));
    temp|=( ( confValue & (0xFFFFFFFF>>(32-(bitWidth) ) ) )<<(bitPosition));
	* ( unsigned int *)( RegisterAddr ) = temp ;


}
                                                                                  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -