HAL_ChibiOS: separate out F1 CR1 calculations

and modify pin speeds for iomcu uarts
This commit is contained in:
Andrew Tridgell 2018-11-01 14:20:56 +11:00
parent 107ccb3eef
commit fcc259ae31
2 changed files with 39 additions and 6 deletions

View File

@ -26,8 +26,8 @@ UART_ORDER EMPTY
define HAL_USE_UART TRUE
# UART connected to FMU, uses DMA
PA2 USART2_TX USART2
PA3 USART2_RX USART2
PA2 USART2_TX USART2 SPEED_HIGH
PA3 USART2_RX USART2 SPEED_HIGH
define STM32_UART_USE_USART1 FALSE
define STM32_UART_USE_USART2 TRUE
@ -36,7 +36,7 @@ define STM32_UART_USE_USART3 FALSE
# UART for SBUS out, and RC in, no DMA
define HAL_USE_SERIAL TRUE
PB4 SBUS_OUT_EN OUTPUT LOW GPIO(1)
PB10 USART3_TX USART3
PB10 USART3_TX USART3 SPEED_HIGH LOW
PB11 USART3_RX USART3
define STM32_SERIAL_USE_USART1 TRUE
@ -70,8 +70,8 @@ PB15 AMBER_LED OUTPUT LOW
# UART for DSM input
# TX side is for IO debug, and is unused
PA9 USART1_TX USART1
PA10 USART1_RX USART1 PULLUP
PA9 USART1_TX USART1 SPEED_HIGH
PA10 USART1_RX USART1 SPEED_HIGH
PC13 SPEKTRUM_PWR_EN OUTPUT LOW
define HAL_GPIO_PIN_SPEKTRUM_OUT PAL_LINE(GPIOA,10U)

View File

@ -334,9 +334,42 @@ class generic_pin(object):
return None
return self.get_AFIO()
def get_CR_F1(self):
'''return CR FLAGS for STM32F1xx'''
#Check Speed
if self.sig_dir != "INPUT" or self.af is not None:
speed_values = ['SPEED_LOW', 'SPEED_MEDIUM', 'SPEED_HIGH']
v = 'SPEED_MEDIUM'
for e in self.extra:
if e in speed_values:
v = e
speed_str = "PIN_%s(%uU) |" % (v, self.pin)
else:
speed_str = ""
if self.af is not None:
if self.label.endswith('_RX'):
# uart RX is configured as a input, and can be pullup, pulldown or float
if 'PULLUP' in self.extra or 'PULLDOWN' in self.extra:
v = 'PUD'
else:
v = "NOPULL"
else:
v = "AF_PP"
elif self.sig_dir == 'OUTPUT':
v = "OUTPUT_PP"
elif self.type.startswith('ADC'):
v = "ANALOG"
else:
v = "PUD"
if 'FLOATING' in self.extra:
v = "NOPULL"
mode_str = "PIN_MODE_%s(%uU)" % (v, self.pin)
return "%s %s" % (speed_str, mode_str)
def get_CR(self):
'''return CR FLAGS'''
#Check Speed
if mcu_series == "STM32F100":
return self.get_CR_F1()
if self.sig_dir != "INPUT":
speed_values = ['SPEED_LOW', 'SPEED_MEDIUM', 'SPEED_HIGH']
v = 'SPEED_MEDIUM'