读写寄存器函数总结

来源:互联网 发布:网络推广策划书范文6篇 编辑:程序博客网 时间:2024/06/09 22:28
#define HAL_PUT_UINT32(a, v)            do {\
                                                                               *(volatile unsigned long *)(a) = (unsigned long)(v);\
                                                                            } while(0)
                                        
#define HAL_GET_UINT32(a)             *(volatile unsigned long *)(a)


#define HAL_PUT_BITS(a,m,v)     do {    unsigned long val = *(volatile unsigned long *)(a);\ 
                                                                         val = (val&(~(m)))|((v)&(m));\ 
                                                                         *(volatile unsigned long *)(a) = (unsigned long)(val);\
                                                                    }while(0)
 For example:

  要将0xbf204004的第16~18bit写成101,  ---> HAL_PUT_BITS(0xbf204004,7<<16,5<<16)

第二个操作数为mask,16-18共三bit,111,所以为7,写成101,对应为5.

原创粉丝点击