程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> dispc_reg_in ,dispc_reg_out , dispc_reg_merge函數功能的分析

dispc_reg_in ,dispc_reg_out , dispc_reg_merge函數功能的分析

編輯:關於C語言

u32 dispc_reg_in(u32 offset)

{

       return (inl(offset));  //從端口讀取4個連續的字節

}

該函數讀取寄存器的值

 

u32 dispc_reg_out(u32 offset, u32 val)

{

       outl(val, offset); //向端口寫入4個連續的字節

       return (val);

}

 該函數設置寄存器全部位的值

 

u32 dispc_reg_merge(u32 offset, u32 val, u32 mask)

{

       u32 addr = offset;

       u32 new_val = (inl(addr) &~mask) | (val & mask);

       outl(new_val, addr);

       return (new_val);

}

該函數設置寄存器指定哪些位的值,保留其他位的值不變。指定的位用mask表示。

mask:掩碼,即要設置的位的掩碼設為1,其余為0;www.2cto.com

inl(addr)& ~mask:掩碼取反與寄存器中的值作“與”運算,結果是要設置的位清0,其他位置不變;

val& mask:得到要設置位置0或1,其余都置0;

inl(addr) & ~mask) | (val & mask:將原來的值與設置的值作“或”,可以將要設置的位設成相應的值,而其他位保持原來的值不變。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved