sys.h 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. #ifndef __SYS_H_
  2. #define __SYS_H_
  3. //#include <stm32f10x_lib.h>
  4. #include <stm32f10x.h>
  5. //IO口操作宏定义
  6. #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
  7. #define MEM_ADDR(addr) *((volatile unsigned long *)(addr))
  8. #define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum))
  9. //IO口地址映射
  10. #define GPIOA_ODR_Addr (GPIOA_BASE+12) //0x4001080C
  11. #define GPIOB_ODR_Addr (GPIOB_BASE+12) //0x40010C0C
  12. #define GPIOC_ODR_Addr (GPIOC_BASE+12) //0x4001100C
  13. #define GPIOD_ODR_Addr (GPIOD_BASE+12) //0x4001140C
  14. #define GPIOE_ODR_Addr (GPIOE_BASE+12) //0x4001180C
  15. #define GPIOF_ODR_Addr (GPIOF_BASE+12) //0x40011A0C
  16. #define GPIOG_ODR_Addr (GPIOG_BASE+12) //0x40011E0C
  17. #define GPIOA_IDR_Addr (GPIOA_BASE+8) //0x40010808
  18. #define GPIOB_IDR_Addr (GPIOB_BASE+8) //0x40010C08
  19. #define GPIOC_IDR_Addr (GPIOC_BASE+8) //0x40011008
  20. #define GPIOD_IDR_Addr (GPIOD_BASE+8) //0x40011408
  21. #define GPIOE_IDR_Addr (GPIOE_BASE+8) //0x40011808
  22. #define GPIOF_IDR_Addr (GPIOF_BASE+8) //0x40011A08
  23. #define GPIOG_IDR_Addr (GPIOG_BASE+8) //0x40011E08
  24. //IO口操作,只对单一的IO口!
  25. //确保n的值小于16!
  26. #define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) //输出
  27. #define PAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) //输入
  28. #define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) //输出
  29. #define PBin(n) BIT_ADDR(GPIOB_IDR_Addr,n) //输入
  30. #define PCout(n) BIT_ADDR(GPIOC_ODR_Addr,n) //输出
  31. #define PCin(n) BIT_ADDR(GPIOC_IDR_Addr,n) //输入
  32. #define PDout(n) BIT_ADDR(GPIOD_ODR_Addr,n) //输出
  33. #define PDin(n) BIT_ADDR(GPIOD_IDR_Addr,n) //输入
  34. #define PEout(n) BIT_ADDR(GPIOE_ODR_Addr,n) //输出
  35. #define PEin(n) BIT_ADDR(GPIOE_IDR_Addr,n) //输入
  36. #define PFout(n) BIT_ADDR(GPIOF_ODR_Addr,n) //输出
  37. #define PFin(n) BIT_ADDR(GPIOF_IDR_Addr,n) //输入
  38. #define PGout(n) BIT_ADDR(GPIOG_ODR_Addr,n) //输出
  39. #define PGin(n) BIT_ADDR(GPIOG_IDR_Addr,n) //输入
  40. /////////////////////////////////////////////////////////////////
  41. //Ex_NVIC_Config专用定义
  42. #define GPIO_A 0
  43. #define GPIO_B 1
  44. #define GPIO_C 2
  45. #define GPIO_D 3
  46. #define GPIO_E 4
  47. #define GPIO_F 5
  48. #define GPIO_G 6
  49. #define FTIR 1 //下降沿触发
  50. #define RTIR 2 //上升沿触发
  51. /////////////////////////////////////////////////////////////////
  52. //JTAG模式设置定义
  53. #define JTAG_SWD_DISABLE 0X02
  54. #define SWD_ENABLE 0X01
  55. #define JTAG_SWD_ENABLE 0X00
  56. /////////////////////////////////////////////////////////////////
  57. //#define u32 unsigned int
  58. //#define u8 unsigned char
  59. //void BKP_Write(u8 reg,u16 dat); //写入后备寄存器
  60. void Stm32_Clock_Init ( u8 PLL ); //时钟初始化
  61. void Sys_Soft_Reset ( void ); //系统软复位
  62. void Sys_Standby ( void ); //待机模式
  63. void MY_NVIC_SetVectorTable ( u32 NVIC_VectTab, u32 Offset ); //设置偏移地址
  64. void MY_NVIC_PriorityGroupConfig ( u8 NVIC_Group ); //设置NVIC分组
  65. void MY_NVIC_Init ( u8 NVIC_PreemptionPriority, u8 NVIC_SubPriority, u8 NVIC_Channel, u8 NVIC_Group ); //设置中断
  66. void Ex_NVIC_Config ( u8 GPIOx, u8 BITx, u8 TRIM ); //外部中断配置函数(只对GPIOA~G)
  67. void JTAG_Set ( u8 mode );
  68. void SystemInit ( void ); //定义复位中断函数-空
  69. void MYRCC_DeInit ( void );
  70. void Hex_Tran_Char_8bit ( u8* hex_str, u8* char_str, u8 tran_num );
  71. void Hex_Tran_Char_16bit ( u16* hex_str, u8* char_str, u8 tran_num );
  72. #endif