📄 bitoperation.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 + -