dev.h
7.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
#ifndef __DEV_H
#define __DEV_H
#include "stm32f4xx.h"
#include "stm32f4xx_conf.h"
#include "stdio.h"
#include "stdbool.h"
#include "stdlib.h"
#include "string.h"
//CH395A(USART6)
#define CH_TX_Pin GPIO_Pin_7
#define CH_TX_Port GPIOC
#define CH_RX_Pin GPIO_Pin_6
#define CH_RX_Port GPIOC
//RS232(UART4)
#define U232_RX_Pin GPIO_Pin_11
#define U232_RX_Port GPIOC
#define U232_TX_Pin GPIO_Pin_10
#define U232_TX_Port GPIOC
//RS485(UART5)
#define U485_RX_Pin GPIO_Pin_2
#define U485_RX_Port GPIOD
#define U485_TX_Pin GPIO_Pin_12
#define U485_TX_Port GPIOC
#define EN_485_Pin GPIO_Pin_3
#define EN_485_Port GPIOD
//DEBUG(USART1)
#define DBG_RXD_Pin GPIO_Pin_9
#define DBG_RXD_Port GPIOA
#define DBG_TXD_Pin GPIO_Pin_10
#define DBG_TXD_Port GPIOA
//LED
#define ARM_LED1_Pin GPIO_Pin_8
#define ARM_LED1_Port GPIOA
#define ARM_LED2_Pin GPIO_Pin_8
#define ARM_LED2_Port GPIOG
#define ARM_LED3_Pin GPIO_Pin_7
#define ARM_LED3_Port GPIOG
#define ARM_LED4_Pin GPIO_Pin_6
#define ARM_LED4_Port GPIOG
//DI、DO
#define IN1_Pin GPIO_Pin_0
#define IN1_Port GPIOB
#define IN2_Pin GPIO_Pin_1
#define IN2_Port GPIOB
#define CTRL1_Pin GPIO_Pin_2
#define CTRL1_Port GPIOC
#define CTRL2_Pin GPIO_Pin_3
#define CTRL2_Port GPIOC
//RMII
#define RMII_MDC_Pin GPIO_Pin_1
#define RMII_MDC_Port GPIOC
#define RMII_CLK_Pin GPIO_Pin_1
#define RMII_CLK_Port GPIOA
#define RMII_MDIO_Pin GPIO_Pin_2
#define RMII_MDIO_Port GPIOA
#define RMII_CRS_Pin GPIO_Pin_7
#define RMII_CRS_Port GPIOA
#define RMII_RXD0_Pin GPIO_Pin_4
#define RMII_RXD0_Port GPIOC
#define RMII_RXD1_Pin GPIO_Pin_5
#define RMII_RXD1_Port GPIOC
#define RMII_TXEN_Pin GPIO_Pin_11
#define RMII_TXEN_Port GPIOG
#define RMII_TXD0_Pin GPIO_Pin_13
#define RMII_TXD0_Port GPIOG
#define RMII_TXD1_Pin GPIO_Pin_14
#define RMII_TXD1_Port GPIOG
//FSMC
#define FSMC_A0_Pin GPIO_Pin_0
#define FSMC_A0_Port GPIOF
#define FSMC_A1_Pin GPIO_Pin_1
#define FSMC_A1_Port GPIOF
#define FSMC_A2_Pin GPIO_Pin_2
#define FSMC_A2_Port GPIOF
#define FSMC_A3_Pin GPIO_Pin_3
#define FSMC_A3_Port GPIOF
#define FSMC_A4_Pin GPIO_Pin_4
#define FSMC_A4_Port GPIOF
#define FSMC_A5_Pin GPIO_Pin_5
#define FSMC_A5_Port GPIOF
#define FSMC_A6_Pin GPIO_Pin_12
#define FSMC_A6_Port GPIOF
#define FSMC_A7_Pin GPIO_Pin_13
#define FSMC_A7_Port GPIOF
#define FSMC_A8_Pin GPIO_Pin_14
#define FSMC_A8_Port GPIOF
#define FSMC_A9_Pin GPIO_Pin_15
#define FSMC_A9_Port GPIOF
#define FSMC_A10_Pin GPIO_Pin_0
#define FSMC_A10_Port GPIOG
#define FSMC_A11_Pin GPIO_Pin_1
#define FSMC_A11_Port GPIOG
#define FSMC_A12_Pin GPIO_Pin_2
#define FSMC_A12_Port GPIOG
#define FSMC_A13_Pin GPIO_Pin_3
#define FSMC_A13_Port GPIOG
#define FSMC_A14_Pin GPIO_Pin_4
#define FSMC_A14_Port GPIOG
#define FSMC_A15_Pin GPIO_Pin_5
#define FSMC_A15_Port GPIOG
#define FSMC_A16_Pin GPIO_Pin_11
#define FSMC_A16_Port GPIOD
#define FSMC_A17_Pin GPIO_Pin_12
#define FSMC_A17_Port GPIOD
#define FSMC_A18_Pin GPIO_Pin_13
#define FSMC_A18_Port GPIOD
#define DB0_Pin GPIO_Pin_14
#define DB0_Port GPIOD
#define DB1_Pin GPIO_Pin_15
#define DB1_Port GPIOD
#define DB2_Pin GPIO_Pin_0
#define DB2_Port GPIOD
#define DB3_Pin GPIO_Pin_1
#define DB3_Port GPIOD
#define DB4_Pin GPIO_Pin_7
#define DB4_Port GPIOE
#define DB5_Pin GPIO_Pin_8
#define DB5_Port GPIOE
#define DB6_Pin GPIO_Pin_9
#define DB6_Port GPIOE
#define DB7_Pin GPIO_Pin_10
#define DB7_Port GPIOE
#define DB8_Pin GPIO_Pin_11
#define DB8_Port GPIOE
#define DB9_Pin GPIO_Pin_12
#define DB9_Port GPIOE
#define DB10_Pin GPIO_Pin_13
#define DB10_Port GPIOE
#define DB11_Pin GPIO_Pin_14
#define DB11_Port GPIOE
#define DB12_Pin GPIO_Pin_15
#define DB12_Port GPIOE
#define DB13_Pin GPIO_Pin_8
#define DB13_Port GPIOD
#define DB14_Pin GPIO_Pin_9
#define DB14_Port GPIOD
#define DB15_Pin GPIO_Pin_10
#define DB15_Port GPIOD
#define FSMC_BL1_Pin GPIO_Pin_1
#define FSMC_BL1_Port GPIOE
#define FSMC_BL0_Pin GPIO_Pin_0
#define FSMC_BL0_Port GPIOE
#define FSMC_NE_Pin GPIO_Pin_7
#define FSMC_NE_Port GPIOD
#define FSMC_NWE_Pin GPIO_Pin_5
#define FSMC_NWE_Port GPIOD
#define FSMC_NOE_Pin GPIO_Pin_4
#define FSMC_NOE_Port GPIOD
#define PHY_RESET_Pin GPIO_Pin_0
#define PHY_RESET_Port GPIOC
//IIC(用于AI)
#define SDA_Pin GPIO_Pin_7
#define SDA_Port GPIOB
#define SCL_Pin GPIO_Pin_6
#define SCL_Port GPIOB
//SPI(外部EEPROM)
#define SSPI1_MOSI_Pin GPIO_Pin_5
#define SSPI1_MOSI_Port GBIOB
#define SSPI1_MISO_Pin GPIO_Pin_4
#define SSPI1_MISO_Port GBIOB
#define SSPI1_SCK_Pin GPIO_Pin_3
#define SSPI1_SLK_Port GBIOB
#define SSPI1_SSEL_Pin GPIO_Pin_15
#define SSPI1_SSEL_Port GBIOG
//CH395Q
#define CH_MOSI_Pin GPIO_Pin_15
#define CH_MOSI_Port GPIOB
#define CH_MISO_Pin GPIO_Pin_14
#define CH_MISO_Port GPIOB
#define CH_SCK_Pin GPIO_Pin_13
#define CH_SCK_Port GPIOB
#define CH_CS_Pin GPIO_Pin_12
#define CH_CS_Port GPIOB
//EC20
#define GPRS_RST_Pin GPIO_Pin_9
#define GPRS_RST_Port GPIOB
#define GPRS_PWR_Pin GPIO_Pin_8
#define GPRS_PWR_Port GPIOB
#define GPRS_RX_Pin GPIO_Pin_10
#define GPRS_RX_Port GPIOB
#define GPRS_TX_Pin GPIO_Pin_11
#define GPRS_TX_Port GPIOB
//CH395Q
#define DATA_Pin GPIO_Pin_2
#define DATA_Port GPIOE
#define CH_RST_Pin GPIO_Pin_9
#define CH_RST_Port GPIOC
#define CH_IRQ_Pin GPIO_Pin_8
#define CH_IRQ_Port GPIOC
#define CH_TX_Pin GPIO_Pin_7
#define CH_TX_Port GPIOC
#define CH_RX_Pin GPIO_Pin_6
#define CH_RX_Port GPIOC
//电源开关
typedef enum power_switch
{
OFF,
ON
}power_switch;
#define IP_MAX_LENGTH 30
#define GATEWAY_ID_MAX_LENGTH 25
#define USERNAME_MAX_LENGTH 15
#define PASSWORD_MAX_LENGTH 15
#define CLIENT_ID_MAX_LENGTH 26
typedef struct mqtt_server
{
char ip[IP_MAX_LENGTH];
char port[6];
char gateway_id[GATEWAY_ID_MAX_LENGTH];
char client_id[CLIENT_ID_MAX_LENGTH];
char user_name[USERNAME_MAX_LENGTH];
char password[PASSWORD_MAX_LENGTH];
short iot_id;
}mqtt_server;
typedef struct Gateway_struct
{
uint8_t dev_id;
uint32_t mapping_id;
char soft_version[9]; //软件版本V01.02.03
uint32_t temperature; //芯片温度
uint32_t firmware_length;
uint8_t net1_mac[6]; //网口1 Mac地址
uint8_t net2_mac[6]; //网口2 Mac地址
uint8_t ota_server_url[80];
uint8_t ntp_server[30];
mqtt_server mqtt_broker;
}Gateway_struct;
extern Gateway_struct dev_param;
//以下为汇编函数
void WFI_SET(void); //执行WFI指令
void INTX_DISABLE(void); //关闭所有中断
void INTX_ENABLE(void); //开启所有中断
void MSR_MSP(u32 addr); //设置堆栈地址
#define SRAM_INT_ADDR 0x20000000 //Internal SRAM基址
#define SRAM_CCM_ADDR 0x10000000 //CCM基址
#define SRAM_EXT_ADDR 0x68000000 //External SRAM基址
#define BOOTLOADER_RUN 0x1234ABCD
#define BOOTLOADER_LOAD 0x4567AABB
#define BOOTLOADER_DEFAULT 0xFFFFFFFF
#define PARAM_BASE_ADDR 0x08008000 //存储参数的基地址
#define FLAG_BASE_ADDR 0x08004000 //Sector 3用于系统标志存储
#define APP_RUN_ADDR 0x08010000 //运行
#define APP_LOAD_ADDR 0x08040000 //更新
/**********************************************************
* SECTOR | BLOCK BASE ADDR | SIZE
*
* sector0 | 0x0800 0000~0x0800 3FFF | 16K //BOOTLOADER
*
* sector1 | 0x0800 4000~0x0800 7FFF | 16K //FLAG
*
* sector2 | 0x0800 8000~0x0800 BFFF | 16K //PARAM
*
* sector3 | 0x0800 C000~0x0800 FFFF | 16K
*
* sector4 | 0x0801 0000~0x0801 FFFF | 64K //RUN APP
*
* sector5 | 0x0802 0000~0x0803 FFFF | 128K
*
* sector6 | 0x0804 0000~0x0805 FFFF | 128K //LOAD APP
*
* sector7 | 0x0806 0000~0x0807 FFFF | 128K
*************************************************************/
#endif