Skip to content

Commit a6a1098

Browse files
committed
fix driver bug.
1 parent 69df854 commit a6a1098

File tree

2 files changed

+109
-105
lines changed

2 files changed

+109
-105
lines changed

drivers/rtt/drv_gpio.c

Lines changed: 104 additions & 97 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
* Copyright (C) 2018 Shanghai Eastsoft Microelectronics Co., Ltd.
33
*
4-
* SPDX-License-Identifier: Apache-2.0
4+
* SPDX-License-Identifier: Apache-2.0
55
*
66
* Licensed under the Apache License, Version 2.0 (the License); you may
77
* not use this file except in compliance with the License.
@@ -17,7 +17,7 @@
1717
*
1818
* Change Logs:
1919
* Date Author Notes
20-
* 2020-01-14 wangyq the first version
20+
* 2020-01-14 wangyq the first version
2121
* 2021-04-20 liuhy the second version
2222
*/
2323

@@ -73,150 +73,150 @@ struct rt_pin_irq_hdr pin_irq_hdr_tab[] =
7373
{ -1, 0, RT_NULL, RT_NULL},
7474
{ -1, 0, RT_NULL, RT_NULL},
7575
{ -1, 0, RT_NULL, RT_NULL},
76-
};
76+
};
7777

7878
#ifdef ES_CONF_EXTI_IRQ_0
7979

8080
RT_WEAK void irq_pin0_callback(void* arg)
8181
{
8282
rt_kprintf("\r\nEXTI 0\r\n");
83-
}
83+
}
8484
#endif
8585

86-
#ifdef ES_CONF_EXTI_IRQ_1
86+
#ifdef ES_CONF_EXTI_IRQ_1
8787

8888
RT_WEAK void irq_pin1_callback(void* arg)
8989
{
9090
rt_kprintf("\r\nEXTI 1\r\n");
91-
}
92-
91+
}
92+
9393
#endif
9494

9595
#ifdef ES_CONF_EXTI_IRQ_2
96-
96+
9797
RT_WEAK void irq_pin2_callback(void* arg)
9898
{
99-
rt_kprintf("\r\nEXTI 2\r\n");
100-
}
99+
rt_kprintf("\r\nEXTI 2\r\n");
100+
}
101101

102102
#endif
103103

104104
#ifdef ES_CONF_EXTI_IRQ_3
105-
105+
106106
RT_WEAK void irq_pin3_callback(void* arg)
107107
{
108-
rt_kprintf("\r\nEXTI 3\r\n");
109-
}
110-
111-
#endif
108+
rt_kprintf("\r\nEXTI 3\r\n");
109+
}
110+
111+
#endif
112112

113113
#ifdef ES_CONF_EXTI_IRQ_4
114-
114+
115115
RT_WEAK void irq_pin4_callback(void* arg)
116116
{
117-
rt_kprintf("\r\nEXTI 4\r\n");
118-
}
119-
120-
#endif
117+
rt_kprintf("\r\nEXTI 4\r\n");
118+
}
119+
120+
#endif
121121

122122
#ifdef ES_CONF_EXTI_IRQ_5
123-
123+
124124
RT_WEAK void irq_pin5_callback(void* arg)
125125
{
126-
rt_kprintf("\r\nEXTI 5\r\n");
127-
}
128-
129-
#endif
126+
rt_kprintf("\r\nEXTI 5\r\n");
127+
}
128+
129+
#endif
130130

131131
#ifdef ES_CONF_EXTI_IRQ_6
132-
132+
133133
RT_WEAK void irq_pin6_callback(void* arg)
134134
{
135-
rt_kprintf("\r\nEXTI 6\r\n");
136-
}
137-
138-
#endif
139-
135+
rt_kprintf("\r\nEXTI 6\r\n");
136+
}
137+
138+
#endif
139+
140140
#ifdef ES_CONF_EXTI_IRQ_7
141-
141+
142142
RT_WEAK void irq_pin7_callback(void* arg)
143143
{
144-
rt_kprintf("\r\nEXTI 7\r\n");
145-
}
146-
147-
#endif
144+
rt_kprintf("\r\nEXTI 7\r\n");
145+
}
146+
147+
#endif
148148

149149
#ifdef ES_CONF_EXTI_IRQ_8
150-
150+
151151
RT_WEAK void irq_pin8_callback(void* arg)
152152
{
153-
rt_kprintf("\r\nEXTI 8\r\n");
154-
}
155-
156-
#endif
157-
153+
rt_kprintf("\r\nEXTI 8\r\n");
154+
}
155+
156+
#endif
157+
158158
#ifdef ES_CONF_EXTI_IRQ_9
159-
159+
160160
RT_WEAK void irq_pin9_callback(void* arg)
161161
{
162-
rt_kprintf("\r\nEXTI 9\r\n");
163-
}
164-
165-
#endif
162+
rt_kprintf("\r\nEXTI 9\r\n");
163+
}
164+
165+
#endif
166166

167167
#ifdef ES_CONF_EXTI_IRQ_10
168-
168+
169169
RT_WEAK void irq_pin10_callback(void* arg)
170170
{
171-
rt_kprintf("\r\nEXTI 10\r\n");
172-
}
173-
174-
#endif
175-
171+
rt_kprintf("\r\nEXTI 10\r\n");
172+
}
173+
174+
#endif
175+
176176
#ifdef ES_CONF_EXTI_IRQ_11
177-
177+
178178
RT_WEAK void irq_pin11_callback(void* arg)
179179
{
180-
rt_kprintf("\r\nEXTI 11\r\n");
181-
}
182-
183-
#endif
180+
rt_kprintf("\r\nEXTI 11\r\n");
181+
}
182+
183+
#endif
184184

185185
#ifdef ES_CONF_EXTI_IRQ_12
186-
186+
187187
RT_WEAK void irq_pin12_callback(void* arg)
188188
{
189-
rt_kprintf("\r\nEXTI 12\r\n");
190-
}
191-
192-
#endif
189+
rt_kprintf("\r\nEXTI 12\r\n");
190+
}
191+
192+
#endif
193193

194194
#ifdef ES_CONF_EXTI_IRQ_13
195-
195+
196196
RT_WEAK void irq_pin13_callback(void* arg)
197197
{
198-
rt_kprintf("\r\nEXTI 13\r\n");
199-
}
200-
201-
#endif
202-
198+
rt_kprintf("\r\nEXTI 13\r\n");
199+
}
200+
201+
#endif
202+
203203
#ifdef ES_CONF_EXTI_IRQ_14
204-
204+
205205
RT_WEAK void irq_pin14_callback(void* arg)
206206
{
207-
rt_kprintf("\r\nEXTI 14\r\n");
208-
}
209-
210-
#endif
207+
rt_kprintf("\r\nEXTI 14\r\n");
208+
}
209+
210+
#endif
211211

212212
#ifdef ES_CONF_EXTI_IRQ_15
213-
213+
214214
RT_WEAK void irq_pin15_callback(void* arg)
215215
{
216-
rt_kprintf("\r\nEXTI 15\r\n");
217-
}
218-
219-
#endif
216+
rt_kprintf("\r\nEXTI 15\r\n");
217+
}
218+
219+
#endif
220220

221221

222222
#define ITEM_NUM(items) sizeof(items) / sizeof(items[0])
@@ -277,7 +277,7 @@ void es32f3_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode)
277277
gpio_initstruct.podrv = GPIO_OUT_DRIVE_6;
278278
gpio_initstruct.nodrv = GPIO_OUT_DRIVE_6;
279279
gpio_initstruct.type = GPIO_TYPE_CMOS;
280-
gpio_initstruct.odos = GPIO_PUSH_PULL;
280+
gpio_initstruct.odos = GPIO_PUSH_PULL;
281281
gpio_initstruct.flt = GPIO_FILTER_DISABLE;
282282

283283
if (mode == PIN_MODE_OUTPUT)
@@ -317,12 +317,12 @@ void es32f3_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode)
317317
rt_inline const struct pin_irq_map *get_pin_irq_map(rt_uint16_t gpio_pin)
318318
{
319319
uint8_t map_index = 0U;
320-
320+
321321
while(gpio_pin >> (++map_index))
322322
{
323323
}
324324
map_index--;
325-
325+
326326
if (map_index >= ITEM_NUM(pin_irq_map))
327327
{
328328
return RT_NULL;
@@ -385,7 +385,14 @@ rt_err_t es32f3_pin_detach_irq(struct rt_device *device, rt_int32_t pin)
385385
{
386386
return RT_ENOSYS;
387387
}
388-
irqindex = index->pin & 0x00FF;
388+
389+
for (irqindex = 0; irqindex < 16; irqindex++)
390+
{
391+
if ((0x01 << irqindex) == index->pin)
392+
{
393+
break;
394+
}
395+
}
389396
if (irqindex < 0 || irqindex >= ITEM_NUM(pin_irq_map))
390397
{
391398
return RT_ENOSYS;
@@ -448,9 +455,9 @@ rt_err_t es32f3_pin_irq_enable(struct rt_device *device, rt_base_t pin,
448455
/* Configure GPIO_InitStructure */
449456
gpio_initstruct.mode = GPIO_MODE_INPUT;
450457
gpio_initstruct.odos = GPIO_PUSH_PULL;
451-
gpio_initstruct.podrv = GPIO_OUT_DRIVE_6;
452-
gpio_initstruct.nodrv = GPIO_OUT_DRIVE_6;
453-
gpio_initstruct.func = GPIO_FUNC_1;
458+
gpio_initstruct.podrv = GPIO_OUT_DRIVE_6;
459+
gpio_initstruct.nodrv = GPIO_OUT_DRIVE_6;
460+
gpio_initstruct.func = GPIO_FUNC_1;
454461
gpio_initstruct.flt = GPIO_FILTER_DISABLE;
455462
switch (pin_irq_hdr_tab[irqindex].mode)
456463
{
@@ -641,16 +648,16 @@ void EXTI15_Handler(void)
641648
int rt_hw_pin_init(void)
642649
{
643650
int result;
644-
651+
645652

646653
#ifdef ES_INIT_GPIOS
647-
654+
648655
rt_size_t i,gpio_conf_num = sizeof(gpio_conf_all) / sizeof(gpio_conf_t);
649656

650-
#endif
657+
#endif
651658

652659
ald_cmu_perh_clock_config(CMU_PERH_GPIO, ENABLE);
653-
660+
654661
result = rt_device_pin_register(ES_DEVICE_NAME_PIN, &_es32f3_pin_ops, RT_NULL);
655662

656663
if(result != RT_EOK)return result;
@@ -660,20 +667,20 @@ int rt_hw_pin_init(void)
660667
for(i = 0;i < gpio_conf_num;i++)
661668
{
662669
rt_pin_mode( gpio_conf_all[i].pin,gpio_conf_all[i].pin_mode);
663-
670+
664671
if((gpio_conf_all[i].pin_mode == ES_C_GPIO_MODE_OUTPUT)||(gpio_conf_all[i].pin_mode == ES_C_GPIO_MODE_OUTPUT_OD))
665672
rt_pin_write(gpio_conf_all[i].pin,gpio_conf_all[i].pin_level);
666-
673+
667674
if(!gpio_conf_all[i].irq_en)continue;
668-
675+
669676
rt_pin_attach_irq(gpio_conf_all[i].pin, gpio_conf_all[i].irq_mode, gpio_conf_all[i].callback, RT_NULL);
670677
rt_pin_irq_enable(gpio_conf_all[i].pin, gpio_conf_all[i].irq_en);
671678
}
672-
673-
#endif
674-
675679

676-
680+
#endif
681+
682+
683+
677684
return result;
678685
}
679686
INIT_BOARD_EXPORT(rt_hw_pin_init);

drivers/rtt/drv_uart.c

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,9 @@
3434

3535
/*
3636
* To use UART DMA,
37-
* 1. select 'DMA->DMA0' in ES-CodeMaker
38-
* 2. select 'UART->UARTx->DMATX(or DMARX)' in ES-CodeMaker
39-
* 3. add BSP_UART0_TX_USING_DMA(or BSP_UART0_TX_USING_DMA) macro in board.h
40-
* 4. add RT_DEVICE_FLAG_DMA_TX(or RT_DEVICE_FLAG_DMA_RX) flag when open serial device
37+
* 1. select 'DMA->DMA0'
38+
* 2. select 'UART->UARTx->DMATX(or DMARX)'
39+
* 3. add RT_DEVICE_FLAG_DMA_TX(or RT_DEVICE_FLAG_DMA_RX) flag when open serial device
4140
*/
4241
#ifdef BSP_UART0_TX_USING_DMA
4342
#define UART0_DMATX_CHANNEL ES_UART0_DMATX_CHANNEL
@@ -349,8 +348,8 @@ static rt_err_t es32f3x_configure(struct rt_serial_device *serial, struct serial
349348
gpio_initstructure.mode = GPIO_MODE_OUTPUT;
350349
gpio_initstructure.odos = GPIO_PUSH_PULL;
351350
gpio_initstructure.pupd = GPIO_PUSH_UP;
352-
gpio_initstructure.podrv = GPIO_OUT_DRIVE_1;
353-
gpio_initstructure.nodrv = GPIO_OUT_DRIVE_1;
351+
gpio_initstructure.podrv = GPIO_OUT_DRIVE_6;
352+
gpio_initstructure.nodrv = GPIO_OUT_DRIVE_6;
354353
gpio_initstructure.flt = GPIO_FILTER_DISABLE;
355354
gpio_initstructure.type = GPIO_TYPE_TTL;
356355

@@ -673,7 +672,6 @@ static rt_err_t es32f3x_control(struct rt_serial_device *serial, int cmd, void *
673672
break;
674673
#endif
675674

676-
#ifdef RT_DEVICE_CTRL_CLOSE
677675
case RT_DEVICE_CTRL_CLOSE:
678676
while (ald_uart_get_status(&uart->huart, (UART_STATUS_TSBUSY)));
679677

@@ -685,7 +683,6 @@ static rt_err_t es32f3x_control(struct rt_serial_device *serial, int cmd, void *
685683
#endif
686684
ald_uart_reset(&uart->huart);
687685
break;
688-
#endif
689686
}
690687

691688
return RT_EOK;

0 commit comments

Comments
 (0)