sys.h 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. #ifndef __SYS_H
  2. #define __SYS_H
  3. #include "stm32f10x.h"
  4. typedef unsigned int clock_t; /* cpu time type */
  5. typedef unsigned int time_t; /* date/time in unix secs past 1-Jan-70 */
  6. //位带操作,实现51类似的GPIO控制功能
  7. //具体实现思想,参考<<CM3权威指南>>第五章(87页~92页).
  8. //IO口操作宏定义
  9. #define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(bitnum<<2))
  10. #define MEM_ADDR(addr) *((volatile unsigned long *)(addr))
  11. #define BIT_ADDR(addr, bitnum) MEM_ADDR(BITBAND(addr, bitnum))
  12. //IO口地址映射
  13. #define GPIOA_ODR_Addr (GPIOA_BASE+12) //0x4001080C
  14. #define GPIOB_ODR_Addr (GPIOB_BASE+12) //0x40010C0C
  15. #define GPIOC_ODR_Addr (GPIOC_BASE+12) //0x4001100C
  16. #define GPIOD_ODR_Addr (GPIOD_BASE+12) //0x4001140C
  17. #define GPIOE_ODR_Addr (GPIOE_BASE+12) //0x4001180C
  18. #define GPIOF_ODR_Addr (GPIOF_BASE+12) //0x40011A0C
  19. #define GPIOG_ODR_Addr (GPIOG_BASE+12) //0x40011E0C
  20. #define GPIOA_IDR_Addr (GPIOA_BASE+8) //0x40010808
  21. #define GPIOB_IDR_Addr (GPIOB_BASE+8) //0x40010C08
  22. #define GPIOC_IDR_Addr (GPIOC_BASE+8) //0x40011008
  23. #define GPIOD_IDR_Addr (GPIOD_BASE+8) //0x40011408
  24. #define GPIOE_IDR_Addr (GPIOE_BASE+8) //0x40011808
  25. #define GPIOF_IDR_Addr (GPIOF_BASE+8) //0x40011A08
  26. #define GPIOG_IDR_Addr (GPIOG_BASE+8) //0x40011E08
  27. //IO口操作,只对单一的IO口!
  28. //确保n的值小于16!
  29. #define PAout(n) BIT_ADDR(GPIOA_ODR_Addr,n) //输出
  30. #define PAin(n) BIT_ADDR(GPIOA_IDR_Addr,n) //输入
  31. #define PBout(n) BIT_ADDR(GPIOB_ODR_Addr,n) //输出
  32. #define PBin(n) BIT_ADDR(GPIOB_IDR_Addr,n) //输入
  33. #define PCout(n) BIT_ADDR(GPIOC_ODR_Addr,n) //输出
  34. #define PCin(n) BIT_ADDR(GPIOC_IDR_Addr,n) //输入
  35. #define PDout(n) BIT_ADDR(GPIOD_ODR_Addr,n) //输出
  36. #define PDin(n) BIT_ADDR(GPIOD_IDR_Addr,n) //输入
  37. #define PEout(n) BIT_ADDR(GPIOE_ODR_Addr,n) //输出
  38. #define PEin(n) BIT_ADDR(GPIOE_IDR_Addr,n) //输入
  39. #define PFout(n) BIT_ADDR(GPIOF_ODR_Addr,n) //输出
  40. #define PFin(n) BIT_ADDR(GPIOF_IDR_Addr,n) //输入
  41. #define PGout(n) BIT_ADDR(GPIOG_ODR_Addr,n) //输出
  42. #define PGin(n) BIT_ADDR(GPIOG_IDR_Addr,n) //输入
  43. #define REV_OK 1 //接收完成标志
  44. #define REV_WAIT 0 //接收未完成标志
  45. #define USART_DEBUG USART1 //调试打印所使用的串口组
  46. #define UART_RECV_SIZE 1024 //接收缓存大小
  47. #define RECV_SIZE UART_RECV_SIZE + 200 //有效数据缓存大小
  48. /*---------------------------------------------------------------------------*/
  49. /* Type Definition Macros */
  50. /*---------------------------------------------------------------------------*/
  51. typedef int socklen_t;
  52. typedef long long int int64;
  53. typedef unsigned long long int uint64;
  54. typedef _Bool uint1;
  55. typedef unsigned char uint8;
  56. typedef char int8;
  57. typedef unsigned short uint16;
  58. typedef short int16;
  59. typedef unsigned int uint32;
  60. typedef int int32;
  61. typedef unsigned int size_t;
  62. typedef struct uart_recv_st
  63. {
  64. char buf[UART_RECV_SIZE]; //缓存大小
  65. unsigned int len; //接收长度
  66. int recv_flag; //接收完成标志 1:接收完成, 0:接收未完成
  67. char* start_addr; //字符开始地址
  68. } uart_recv_t; //串口接收缓存
  69. typedef struct valid_data_st {
  70. char buf[RECV_SIZE]; //有效数据
  71. int len; //数据长度
  72. } valid_data_t;
  73. void byteToHexStr(const unsigned char* source, char* dest, int sourceLen);
  74. void inttohex(u16 value,u8 *hex);
  75. void letterSwitch(char *str, int flag);
  76. int my_atoi(char *str);
  77. char* my_itoa(int num,char* str,int radix);
  78. /**
  79. * @title 分割字符串
  80. * @Param src:要分割字符串,seperator:分隔符, dest:分割后字符串地址, size:分割的数量
  81. */
  82. void split(char *src,const char *separator,char *dest[],int size);
  83. /**
  84. * @Title split,分割字符串
  85. * @Param 要分割字符串,seperator:分隔符, dest:分割后字符串地址,limit:分割限制数量
  86. */
  87. void splitCharLimit(char *str, char seprator, char *dest[], int limit);
  88. /**
  89. * @title 延时函数
  90. * @Param ms:延时时间(单位ms)
  91. */
  92. void delay_ms(uint32_t ms);
  93. void delay_us(uint32_t us);
  94. void delay_s(uint32_t s);
  95. void Usart_SendString(USART_TypeDef *USARTx, unsigned char *str, unsigned short len);
  96. void UsartPrintf(USART_TypeDef *USARTx, char *fmt,...);
  97. void uart_recv_clear(void);
  98. void valid_data_clear(void);
  99. void uart_recv_wait(int timeout);
  100. int uart_recv_match_wait(char *res,int timeout);
  101. #endif