sys.h 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #ifndef __SYS_H
  2. #define __SYS_H
  3. #include "stm32f1xx.h"
  4. //////////////////////////////////////////////////////////////////////////////////
  5. //本程序只供内部使用,未经作者许可,不得用于其它任何用途
  6. // STM32开发板
  7. //修改日期:2012/8/18
  8. //版本:V1.7
  9. //版权所有,盗版必究。
  10. //Copyright(C) 济南鲁泰电气有限公司 2009-2019
  11. //All rights reserved
  12. //////////////////////////////////////////////////////////////////////////////////
  13. //0,不支持ucos
  14. //1,支持ucos
  15. #define SYSTEM_SUPPORT_OS 0 //定义系统文件夹是否支持UCOS
  16. ///////////////////////////////////////////////////////////////////////////////////
  17. //定义一些常用的数据类型短关键字
  18. typedef int32_t s32;
  19. typedef int16_t s16;
  20. typedef int8_t s8;
  21. typedef const int32_t sc32;
  22. typedef const int16_t sc16;
  23. typedef const int8_t sc8;
  24. typedef __IO int32_t vs32;
  25. typedef __IO int16_t vs16;
  26. typedef __IO int8_t vs8;
  27. typedef __I int32_t vsc32;
  28. typedef __I int16_t vsc16;
  29. typedef __I int8_t vsc8;
  30. typedef uint32_t u32;
  31. typedef uint16_t u16;
  32. typedef uint8_t u8;
  33. typedef const uint32_t uc32;
  34. typedef const uint16_t uc16;
  35. typedef const uint8_t uc8;
  36. typedef __IO uint32_t vu32;
  37. typedef __IO uint16_t vu16;
  38. typedef __IO uint8_t vu8;
  39. typedef __I uint32_t vuc32;
  40. typedef __I uint16_t vuc16;
  41. typedef __I uint8_t vuc8;
  42. typedef unsigned char bool;
  43. #define BOOL bool
  44. #define true (1)
  45. #define false (0)
  46. #define TRUE true
  47. #define FALSE false
  48. //位带操作,实现51类似的GPIO控制功能
  49. //具体实现思想,参考<<CM3权威指南>>第五章(87页~92页).
  50. //IO口操作宏定义
  51. #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
  52. #define MEM_ADDR(addr) *((volatile unsigned long *)(addr))
  53. #define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum))
  54. //IO口地址映射
  55. #define GPIOA_ODR_Addr (GPIOA_BASE+12) //0x4001080C
  56. #define GPIOB_ODR_Addr (GPIOB_BASE+12) //0x40010C0C
  57. #define GPIOC_ODR_Addr (GPIOC_BASE+12) //0x4001100C
  58. #define GPIOD_ODR_Addr (GPIOD_BASE+12) //0x4001140C
  59. #define GPIOE_ODR_Addr (GPIOE_BASE+12) //0x4001180C
  60. #define GPIOF_ODR_Addr (GPIOF_BASE+12) //0x40011A0C
  61. #define GPIOG_ODR_Addr (GPIOG_BASE+12) //0x40011E0C
  62. #define GPIOA_IDR_Addr (GPIOA_BASE+8) //0x40010808
  63. #define GPIOB_IDR_Addr (GPIOB_BASE+8) //0x40010C08
  64. #define GPIOC_IDR_Addr (GPIOC_BASE+8) //0x40011008
  65. #define GPIOD_IDR_Addr (GPIOD_BASE+8) //0x40011408
  66. #define GPIOE_IDR_Addr (GPIOE_BASE+8) //0x40011808
  67. #define GPIOF_IDR_Addr (GPIOF_BASE+8) //0x40011A08
  68. #define GPIOG_IDR_Addr (GPIOG_BASE+8) //0x40011E08
  69. //IO口操作,只对单一的IO口!
  70. //确保n的值小于16!
  71. #define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) //输出
  72. #define PAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) //输入
  73. #define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) //输出
  74. #define PBin(n) BIT_ADDR(GPIOB_IDR_Addr,n) //输入
  75. #define PCout(n) BIT_ADDR(GPIOC_ODR_Addr,n) //输出
  76. #define PCin(n) BIT_ADDR(GPIOC_IDR_Addr,n) //输入
  77. #define PDout(n) BIT_ADDR(GPIOD_ODR_Addr,n) //输出
  78. #define PDin(n) BIT_ADDR(GPIOD_IDR_Addr,n) //输入
  79. #define PEout(n) BIT_ADDR(GPIOE_ODR_Addr,n) //输出
  80. #define PEin(n) BIT_ADDR(GPIOE_IDR_Addr,n) //输入
  81. #define PFout(n) BIT_ADDR(GPIOF_ODR_Addr,n) //输出
  82. #define PFin(n) BIT_ADDR(GPIOF_IDR_Addr,n) //输入
  83. #define PGout(n) BIT_ADDR(GPIOG_ODR_Addr,n) //输出
  84. #define PGin(n) BIT_ADDR(GPIOG_IDR_Addr,n) //输入
  85. void Stm32_Clock_Init(u32 PLL); //时钟系统配置
  86. //以下为汇编函数
  87. void WFI_SET(void); //执行WFI指令
  88. void INTX_DISABLE(void);//关闭所有中断
  89. void INTX_ENABLE(void); //开启所有中断
  90. void MSR_MSP(u32 addr); //设置堆栈地址
  91. #endif