functions.h 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. * Copyright (C) 2011-2012, Freescale Semiconductor, Inc. All Rights Reserved
  3. * THIS SOURCE CODE IS CONFIDENTIAL AND PROPRIETARY AND MAY NOT
  4. * BE USED OR DISTRIBUTED WITHOUT THE WRITTEN PERMISSION OF
  5. * Freescale Semiconductor, Inc.
  6. */
  7. /*!
  8. * @file functions.h
  9. * @brief This header file contains functions info.
  10. *
  11. */
  12. #ifndef FUNCTIONS_H
  13. #define FUNCTIONS_H
  14. //----------------------------------------------------------------------
  15. // Some Genaral Macros
  16. //----------------------------------------------------------------------
  17. //#define FALSE 0
  18. //#define TRUE 1
  19. #define DUMMY_INFO 0xf00f00
  20. #define reg8_read(addr) *((BYTE *)(addr))
  21. #define reg16_read(addr) *((HALF *)(addr))
  22. #define reg32_read(addr) *(WORD *)((addr))
  23. #define reg32_read_bit(addr,bitpos) (reg32_read(addr) & (1<<(bitpos)))
  24. #define reg8_write(addr,val) *((BYTE *)(addr)) = (val)
  25. #define reg16_write(addr,val) *((HALF *)(addr)) = (val)
  26. #define reg32_write(addr,val) *((WORD *)(addr)) = (val)
  27. #define mem8_read(addr) *((BYTE *)(addr))
  28. #define mem16_read(addr) *((HALF *)(addr))
  29. #define mem32_read(addr) *(WORD *)((addr))
  30. #define mem8_write(addr,val) *((BYTE *)(addr)) = (val)
  31. #define mem16_write(addr,val) *((HALF *)(addr)) = (val)
  32. #define mem32_write(addr,val) *((WORD *)(addr)) = (val)
  33. #define reg8setbit(addr,bitpos) \
  34. reg8_write((addr),(reg8_read((addr)) | (1<<(bitpos))))
  35. #define reg16setbit(addr,bitpos) \
  36. reg16_write((addr),(reg16_read((addr)) | (1<<(bitpos))))
  37. #define reg32setbit(addr,bitpos) \
  38. reg32_write((addr),(reg32_read((addr)) | (1<<(bitpos))))
  39. #define reg8clrbit(addr,bitpos) \
  40. reg8_write((addr),(reg8_read((addr)) & (0xFF ^ (1<<(bitpos)))))
  41. #define reg16clrbit(addr,bitpos) \
  42. reg16_write((addr),(reg16_read((addr)) & (0xFFFF ^ (1<<(bitpos)))))
  43. #define reg32clrbit(addr,bitpos) \
  44. reg32_write((addr),(reg32_read((addr)) & (0xFFFFFFFF ^ (1<<(bitpos)))))
  45. // ##### EXPORTED TYPE DEFINITIONS ################################################# {{{1
  46. typedef volatile unsigned long WORD;
  47. typedef volatile unsigned short HALF;
  48. typedef volatile unsigned char BYTE;
  49. //----------------------------------------------------------------------
  50. // Write With Mask (write only certain bits)
  51. //----------------------------------------------------------------------
  52. void reg8_write_mask(WORD addr, BYTE wdata, BYTE mask);
  53. void reg16_write_mask(WORD addr, HALF wdata, HALF mask);
  54. void reg32_write_mask(WORD addr, WORD wdata, WORD mask);
  55. #endif //FUNCTIONS_H