Skip to content

Commit 99bef01

Browse files
authored
Merge pull request #2232 from SummerGGift/add_stm32_new_framework
[bsp][stm32] update bsp && fix driver bug
2 parents a7babad + e9a6050 commit 99bef01

File tree

206 files changed

+238043
-204
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

206 files changed

+238043
-204
lines changed

.travis.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,16 +83,21 @@ env:
8383
- RTT_BSP='stm32h743-nucleo' RTT_TOOL_CHAIN='sourcery-arm'
8484
- RTT_BSP='stm32/stm32f091-st-nucleo' RTT_TOOL_CHAIN='sourcery-arm'
8585
- RTT_BSP='stm32/stm32f103-atk-nano' RTT_TOOL_CHAIN='sourcery-arm'
86+
- RTT_BSP='stm32/stm32f103-dofly-lyc8' RTT_TOOL_CHAIN='sourcery-arm'
8687
- RTT_BSP='stm32/stm32f103-fire-arbitrary' RTT_TOOL_CHAIN='sourcery-arm'
88+
- RTT_BSP='stm32/stm32f103-hw100k-ibox' RTT_TOOL_CHAIN='sourcery-arm'
8789
- RTT_BSP='stm32/stm32f407-atk-explorer' RTT_TOOL_CHAIN='sourcery-arm'
8890
- RTT_BSP='stm32/stm32f407-st-discovery' RTT_TOOL_CHAIN='sourcery-arm'
8991
- RTT_BSP='stm32/stm32f411-st-nucleo' RTT_TOOL_CHAIN='sourcery-arm'
9092
- RTT_BSP='stm32/stm32f429-armfly-v6' RTT_TOOL_CHAIN='sourcery-arm'
9193
- RTT_BSP='stm32/stm32f429-atk-apollo' RTT_TOOL_CHAIN='sourcery-arm'
9294
- RTT_BSP='stm32/stm32f429-fire-challenger' RTT_TOOL_CHAIN='sourcery-arm'
9395
- RTT_BSP='stm32/stm32f446-st-nucleo' RTT_TOOL_CHAIN='sourcery-arm'
96+
- RTT_BSP='stm32/stm32f746-st-disco' RTT_TOOL_CHAIN='sourcery-arm'
9497
- RTT_BSP='stm32/stm32f767-atk-apollo' RTT_TOOL_CHAIN='sourcery-arm'
9598
- RTT_BSP='stm32/stm32f767-fire-challenger' RTT_TOOL_CHAIN='sourcery-arm'
99+
- RTT_BSP='stm32/stm32f767-st-nucleo' RTT_TOOL_CHAIN='sourcery-arm'
100+
- RTT_BSP='stm32/stm32l432-st-nucleo' RTT_TOOL_CHAIN='sourcery-arm'
96101
- RTT_BSP='stm32/stm32l475-atk-pandora' RTT_TOOL_CHAIN='sourcery-arm'
97102
# - RTT_BSP='taihu' RTT_TOOL_CHAIN='sourcery-ppc'
98103
# - RTT_BSP='upd70f3454' # iar

bsp/stm32/README.md

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,27 @@ STM32 系列 BSP 目前支持情况如下表所示:
55
| BSP 文件夹名称 | 开发板名称 |
66
|:------------------------- |:-------------------------- |
77
| **F0 系列** | |
8-
| [stm32f091-st-nucleo](stm32f091-st-nucleo/) | ST 官方 stm32f091-nucleo 开发板 |
8+
| [stm32f091-st-nucleo](stm32f091-st-nucleo) | ST 官方 stm32f091-nucleo 开发板 |
99
| **F1 系列** | |
10-
| [stm32f103-atk-nano](stm32f103-atk-nano/) | 正点原子 F103 NANO 开发板 |
10+
| [stm32f103-atk-nano](stm32f103-atk-nano) | 正点原子 F103 NANO 开发板 |
11+
| [stm32f103-dofly-lyc8](stm32f103-dofly-lyc8) | 德飞莱 STM32F103 开发板 |
1112
| [stm32f103-fire-arbitrary](stm32f103-fire-arbitrary/) | 野火 F103 霸道开发板 |
13+
| [stm32f103-hw100k-ibox](stm32f103-hw100k-ibox) | STM32F103 硬件十万个为什么 iBox 开发板 |
1214
| **F4 系列** | |
13-
| [stm32f407-st-discovery](stm32f407-st-discovery/) | ST 官方 stm32f407-discovery 开发板 |
15+
| [stm32f407-st-discovery](stm32f407-st-discovery) | ST 官方 stm32f407-discovery 开发板 |
16+
| [stm32f407-atk-explorer](stm32f407-atk-explorer) | 正点原子 F407 探索者开发板 |
1417
| [stm32f411-st-nucleo](stm32f411-st-nucleo/) | ST 官方 STM32F411-Nucleo-64 开发板 |
15-
| [stm32f407-atk-explorer](stm32f407-atk-explorer/) | 正点原子 F407 探索者开发板 |
16-
| [stm32f429-atk-apollo](stm32f429-atk-apollo/) | 正点原子 F429 阿波罗开发板 |
18+
| [stm32f429-atk-apollo](stm32f429-atk-apollo) | 正点原子 F429 阿波罗开发板 |
1719
| [stm32f429-fire-challenger](stm32f429-fire-challenger/) | 野火 F429 挑战者开发板 |
1820
| [stm32f429-armfly-v6](stm32f429-armfly-v6) | 安富莱 f429-v6 开发板 |
21+
| [stm32f446-st-nucleo](stm32f446-st-nucleo) | ST 官方 stm32f446-nucleo 开发板 |
1922
| **F7 系列** | |
23+
| [stm32f746-st-disco](stm32f746-st-disco) | ST 官方 STM32F746-discovery 开发板 |
2024
| [stm32f767-atk-apollo](stm32f767-atk-apollo) | 正点原子 F767 阿波罗开发板 |
2125
| [stm32f767-fire-challenger](stm32f767-fire-challenger/) | 野火 F767 挑战者开发板 |
26+
| [stm32f767-st-nucleo](stm32f767-st-nucleo) | ST 官方 STM32F767-nucleo 开发板 |
2227
| **L4 系列** | |
28+
| [stm32l432-st-nucleo](stm32l432-st-nucleo) | ST 官方 STM32L432-nucleo 开发板 |
2329
| [stm32l475-atk-pandora](stm32l475-atk-pandora/) | 正点原子 L475 潘多拉 IoT 开发板 |
2430

2531
可以通过阅读相应 BSP 下的 README 来快速上手,如果想要使用 BSP 更多功能可参考 docs 文件夹下提供的说明文档,如下表所示:

bsp/stm32/libraries/HAL_Drivers/config/f4/uart_config.h

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@ extern "C" {
5656
#ifndef UART2_DMA_CONFIG
5757
#define UART2_DMA_CONFIG \
5858
{ \
59-
.Instance = USART2_RX_DMA_INSTANCE, \
60-
.channel = USART2_RX_DMA_CHANNEL, \
61-
.dma_rcc = USART2_RX_DMA_RCC, \
62-
.dma_irq = USART2_RX_DMA_IRQ, \
59+
.Instance = UART2_RX_DMA_INSTANCE, \
60+
.channel = UART2_RX_DMA_CHANNEL, \
61+
.dma_rcc = UART2_RX_DMA_RCC, \
62+
.dma_irq = UART2_RX_DMA_IRQ, \
6363
}
6464
#endif /* UART2_DMA_CONFIG */
6565
#endif /* BSP_UART2_RX_USING_DMA */
@@ -79,10 +79,10 @@ extern "C" {
7979
#ifndef UART3_DMA_CONFIG
8080
#define UART3_DMA_CONFIG \
8181
{ \
82-
.Instance = USART3_RX_DMA_INSTANCE, \
83-
.channel = USART3_RX_DMA_CHANNEL, \
84-
.dma_rcc = USART3_RX_DMA_RCC, \
85-
.dma_irq = USART3_RX_DMA_IRQ, \
82+
.Instance = UART3_RX_DMA_INSTANCE, \
83+
.channel = UART3_RX_DMA_CHANNEL, \
84+
.dma_rcc = UART3_RX_DMA_RCC, \
85+
.dma_irq = UART3_RX_DMA_IRQ, \
8686
}
8787
#endif /* UART3_DMA_CONFIG */
8888
#endif /* BSP_UART3_RX_USING_DMA */
@@ -102,10 +102,10 @@ extern "C" {
102102
#ifndef UART4_DMA_CONFIG
103103
#define UART4_DMA_CONFIG \
104104
{ \
105-
.Instance = USART4_RX_DMA_INSTANCE, \
106-
.channel = USART4_RX_DMA_CHANNEL, \
107-
.dma_rcc = USART4_RX_DMA_RCC, \
108-
.dma_irq = USART4_RX_DMA_IRQ, \
105+
.Instance = UART4_RX_DMA_INSTANCE, \
106+
.channel = UART4_RX_DMA_CHANNEL, \
107+
.dma_rcc = UART4_RX_DMA_RCC, \
108+
.dma_irq = UART4_RX_DMA_IRQ, \
109109
}
110110
#endif /* UART4_DMA_CONFIG */
111111
#endif /* BSP_UART4_RX_USING_DMA */
@@ -125,10 +125,10 @@ extern "C" {
125125
#ifndef UART5_DMA_CONFIG
126126
#define UART5_DMA_CONFIG \
127127
{ \
128-
.Instance = USART5_RX_DMA_INSTANCE, \
129-
.channel = USART5_RX_DMA_CHANNEL, \
130-
.dma_rcc = USART5_RX_DMA_RCC, \
131-
.dma_irq = USART5_RX_DMA_IRQ, \
128+
.Instance = UART5_RX_DMA_INSTANCE, \
129+
.channel = UART5_RX_DMA_CHANNEL, \
130+
.dma_rcc = UART5_RX_DMA_RCC, \
131+
.dma_irq = UART5_RX_DMA_IRQ, \
132132
}
133133
#endif /* UART5_DMA_CONFIG */
134134
#endif /* BSP_UART5_RX_USING_DMA */

bsp/stm32/libraries/HAL_Drivers/config/f7/uart_config.h

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,10 @@ extern "C" {
5656
#ifndef UART2_DMA_CONFIG
5757
#define UART2_DMA_CONFIG \
5858
{ \
59-
.Instance = USART2_RX_DMA_INSTANCE, \
60-
.channel = USART2_RX_DMA_CHANNEL, \
61-
.dma_rcc = USART2_RX_DMA_RCC, \
62-
.dma_irq = USART2_RX_DMA_IRQ, \
59+
.Instance = UART2_RX_DMA_INSTANCE, \
60+
.channel = UART2_RX_DMA_CHANNEL, \
61+
.dma_rcc = UART2_RX_DMA_RCC, \
62+
.dma_irq = UART2_RX_DMA_IRQ, \
6363
}
6464
#endif /* UART2_DMA_CONFIG */
6565
#endif /* BSP_UART2_RX_USING_DMA */
@@ -79,10 +79,10 @@ extern "C" {
7979
#ifndef UART3_DMA_CONFIG
8080
#define UART3_DMA_CONFIG \
8181
{ \
82-
.Instance = USART3_RX_DMA_INSTANCE, \
83-
.channel = USART3_RX_DMA_CHANNEL, \
84-
.dma_rcc = USART3_RX_DMA_RCC, \
85-
.dma_irq = USART3_RX_DMA_IRQ, \
82+
.Instance = UART3_RX_DMA_INSTANCE, \
83+
.channel = UART3_RX_DMA_CHANNEL, \
84+
.dma_rcc = UART3_RX_DMA_RCC, \
85+
.dma_irq = UART3_RX_DMA_IRQ, \
8686
}
8787
#endif /* UART3_DMA_CONFIG */
8888
#endif /* BSP_UART3_RX_USING_DMA */
@@ -102,10 +102,10 @@ extern "C" {
102102
#ifndef UART4_DMA_CONFIG
103103
#define UART4_DMA_CONFIG \
104104
{ \
105-
.Instance = USART4_RX_DMA_INSTANCE, \
106-
.channel = USART4_RX_DMA_CHANNEL, \
107-
.dma_rcc = USART4_RX_DMA_RCC, \
108-
.dma_irq = USART4_RX_DMA_IRQ, \
105+
.Instance = UART4_RX_DMA_INSTANCE, \
106+
.channel = UART4_RX_DMA_CHANNEL, \
107+
.dma_rcc = UART4_RX_DMA_RCC, \
108+
.dma_irq = UART4_RX_DMA_IRQ, \
109109
}
110110
#endif /* UART4_DMA_CONFIG */
111111
#endif /* BSP_UART4_RX_USING_DMA */
@@ -125,10 +125,10 @@ extern "C" {
125125
#ifndef UART5_DMA_CONFIG
126126
#define UART5_DMA_CONFIG \
127127
{ \
128-
.Instance = USART5_RX_DMA_INSTANCE, \
129-
.channel = USART5_RX_DMA_CHANNEL, \
130-
.dma_rcc = USART5_RX_DMA_RCC, \
131-
.dma_irq = USART5_RX_DMA_IRQ, \
128+
.Instance = UART5_RX_DMA_INSTANCE, \
129+
.channel = UART5_RX_DMA_CHANNEL, \
130+
.dma_rcc = UART5_RX_DMA_RCC, \
131+
.dma_irq = UART5_RX_DMA_IRQ, \
132132
}
133133
#endif /* UART5_DMA_CONFIG */
134134
#endif /* BSP_UART5_RX_USING_DMA */

bsp/stm32/libraries/HAL_Drivers/drv_lcd.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -244,10 +244,10 @@ void turn_on_lcd_backlight(void)
244244
struct rt_device_pwm *pwm_dev;
245245

246246
/* turn on the LCD backlight */
247-
pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME);
247+
pwm_dev = (struct rt_device_pwm *)rt_device_find(LCD_PWM_DEV_NAME);
248248
/* pwm frequency:100K = 10000ns */
249-
rt_pwm_set(pwm_dev, PWM_DEV_CHANNEL, 10000, 10000);
250-
rt_pwm_enable(pwm_dev, PWM_DEV_CHANNEL);
249+
rt_pwm_set(pwm_dev, LCD_PWM_DEV_CHANNEL, 10000, 10000);
250+
rt_pwm_enable(pwm_dev, LCD_PWM_DEV_CHANNEL);
251251
}
252252
#elif defined(LCD_BACKLIGHT_USING_GPIO)
253253
void turn_on_lcd_backlight(void)

bsp/stm32/libraries/HAL_Drivers/drv_spi.c

Lines changed: 32 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,10 @@ static rt_err_t stm32_spi_init(struct stm32_spi *spi_drv, struct rt_spi_configur
248248
static rt_uint32_t spixfer(struct rt_spi_device *device, struct rt_spi_message *message)
249249
{
250250
HAL_StatusTypeDef state;
251+
rt_size_t message_length, already_send_length;
252+
rt_uint16_t send_length;
253+
rt_uint8_t *recv_buf;
254+
const rt_uint8_t *send_buf;
251255

252256
RT_ASSERT(device != RT_NULL);
253257
RT_ASSERT(device->bus != RT_NULL);
@@ -269,41 +273,61 @@ static rt_uint32_t spixfer(struct rt_spi_device *device, struct rt_spi_message *
269273
(uint32_t)message->send_buf,
270274
(uint32_t)message->recv_buf, message->length);
271275

272-
if (message->length)
276+
message_length = message->length;
277+
recv_buf = message->recv_buf;
278+
send_buf = message->send_buf;
279+
while (message_length)
273280
{
281+
/* the HAL library use uint16 to save the data length */
282+
if (message_length > 65535)
283+
{
284+
send_length = 65535;
285+
message_length = message_length - 65535;
286+
}
287+
else
288+
{
289+
send_length = message_length;
290+
message_length = 0;
291+
}
292+
293+
/* calculate the start address */
294+
already_send_length = message->length - send_length - message_length;
295+
send_buf = (rt_uint8_t *)message->send_buf + already_send_length;
296+
recv_buf = (rt_uint8_t *)message->recv_buf + already_send_length;
297+
274298
/* start once data exchange in DMA mode */
275299
if (message->send_buf && message->recv_buf)
276300
{
277301
if ((spi_drv->spi_dma_flag & SPI_USING_TX_DMA_FLAG) && (spi_drv->spi_dma_flag & SPI_USING_RX_DMA_FLAG))
278302
{
279-
state = HAL_SPI_TransmitReceive_DMA(spi_handle, (uint8_t *)message->send_buf, (uint8_t *)message->recv_buf, message->length);
303+
state = HAL_SPI_TransmitReceive_DMA(spi_handle, (uint8_t *)send_buf, (uint8_t *)recv_buf, send_length);
280304
}
281305
else
282306
{
283-
state = HAL_SPI_TransmitReceive(spi_handle, (uint8_t *)message->send_buf, (uint8_t *)message->recv_buf, message->length, 1000);
307+
state = HAL_SPI_TransmitReceive(spi_handle, (uint8_t *)send_buf, (uint8_t *)recv_buf, send_length, 1000);
284308
}
285309
}
286310
else if (message->send_buf)
287311
{
288312
if (spi_drv->spi_dma_flag & SPI_USING_TX_DMA_FLAG)
289313
{
290-
state = HAL_SPI_Transmit_DMA(spi_handle, (uint8_t *)message->send_buf, message->length);
314+
state = HAL_SPI_Transmit_DMA(spi_handle, (uint8_t *)send_buf, send_length);
291315
}
292316
else
293317
{
294-
state = HAL_SPI_Transmit(spi_handle, (uint8_t *)message->send_buf, message->length, 1000);
318+
state = HAL_SPI_Transmit(spi_handle, (uint8_t *)send_buf, send_length, 1000);
295319
}
296320
}
297321
else
298322
{
299-
memset(message->recv_buf, 0xff, message->length);
323+
memset((uint8_t *)recv_buf, 0xff, send_length);
300324
if (spi_drv->spi_dma_flag & SPI_USING_RX_DMA_FLAG)
301325
{
302-
state = HAL_SPI_Receive_DMA(spi_handle, (uint8_t *)message->recv_buf, message->length);
326+
state = HAL_SPI_Receive_DMA(spi_handle, (uint8_t *)recv_buf, send_length);
303327
}
304328
else
305329
{
306-
state = HAL_SPI_Receive(spi_handle, (uint8_t *)message->recv_buf, message->length, 1000);
330+
state = HAL_SPI_Receive(spi_handle, (uint8_t *)recv_buf, send_length, 1000);
307331
}
308332
}
309333

bsp/stm32/libraries/Kconfig

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,9 @@ config SOC_SERIES_STM32F7
2424
config SOC_SERIES_STM32L4
2525
bool
2626
select ARCH_ARM_CORTEX_M4
27-
select SOC_FAMILY_STM32
27+
select SOC_FAMILY_STM32
28+
29+
config SOC_SERIES_STM32G0
30+
bool
31+
select ARCH_ARM_CORTEX_M0
32+
select SOC_FAMILY_STM32

0 commit comments

Comments
 (0)