mirror of https://github.com/rusefi/bldc.git
Added UART interrupt priority hack
This commit is contained in:
parent
3d8df40d7d
commit
aac50698af
|
@ -427,41 +427,43 @@ void sd_lld_start(SerialDriver *sdp, const SerialConfig *config) {
|
||||||
if (config == NULL)
|
if (config == NULL)
|
||||||
config = &default_config;
|
config = &default_config;
|
||||||
|
|
||||||
|
uint32_t prio = config->speed > 200000 ? 4 : 7;
|
||||||
|
|
||||||
if (sdp->state == SD_STOP) {
|
if (sdp->state == SD_STOP) {
|
||||||
#if STM32_SERIAL_USE_USART1
|
#if STM32_SERIAL_USE_USART1
|
||||||
if (&SD1 == sdp) {
|
if (&SD1 == sdp) {
|
||||||
rccEnableUSART1(FALSE);
|
rccEnableUSART1(FALSE);
|
||||||
nvicEnableVector(STM32_USART1_NUMBER, STM32_SERIAL_USART1_PRIORITY);
|
nvicEnableVector(STM32_USART1_NUMBER, prio);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if STM32_SERIAL_USE_USART2
|
#if STM32_SERIAL_USE_USART2
|
||||||
if (&SD2 == sdp) {
|
if (&SD2 == sdp) {
|
||||||
rccEnableUSART2(FALSE);
|
rccEnableUSART2(FALSE);
|
||||||
nvicEnableVector(STM32_USART2_NUMBER, STM32_SERIAL_USART2_PRIORITY);
|
nvicEnableVector(STM32_USART2_NUMBER, prio);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if STM32_SERIAL_USE_USART3
|
#if STM32_SERIAL_USE_USART3
|
||||||
if (&SD3 == sdp) {
|
if (&SD3 == sdp) {
|
||||||
rccEnableUSART3(FALSE);
|
rccEnableUSART3(FALSE);
|
||||||
nvicEnableVector(STM32_USART3_NUMBER, STM32_SERIAL_USART3_PRIORITY);
|
nvicEnableVector(STM32_USART3_NUMBER, prio);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if STM32_SERIAL_USE_UART4
|
#if STM32_SERIAL_USE_UART4
|
||||||
if (&SD4 == sdp) {
|
if (&SD4 == sdp) {
|
||||||
rccEnableUART4(FALSE);
|
rccEnableUART4(FALSE);
|
||||||
nvicEnableVector(STM32_UART4_NUMBER, STM32_SERIAL_UART4_PRIORITY);
|
nvicEnableVector(STM32_UART4_NUMBER, prio);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if STM32_SERIAL_USE_UART5
|
#if STM32_SERIAL_USE_UART5
|
||||||
if (&SD5 == sdp) {
|
if (&SD5 == sdp) {
|
||||||
rccEnableUART5(FALSE);
|
rccEnableUART5(FALSE);
|
||||||
nvicEnableVector(STM32_UART5_NUMBER, STM32_SERIAL_UART5_PRIORITY);
|
nvicEnableVector(STM32_UART5_NUMBER, prio);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if STM32_SERIAL_USE_USART6
|
#if STM32_SERIAL_USE_USART6
|
||||||
if (&SD6 == sdp) {
|
if (&SD6 == sdp) {
|
||||||
rccEnableUSART6(FALSE);
|
rccEnableUSART6(FALSE);
|
||||||
nvicEnableVector(STM32_USART6_NUMBER, STM32_SERIAL_USART6_PRIORITY);
|
nvicEnableVector(STM32_USART6_NUMBER, prio);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -423,41 +423,43 @@ void sd_lld_start(SerialDriver *sdp, const SerialConfig *config) {
|
||||||
if (config == NULL)
|
if (config == NULL)
|
||||||
config = &default_config;
|
config = &default_config;
|
||||||
|
|
||||||
|
uint32_t prio = config->speed > 200000 ? 4 : 7;
|
||||||
|
|
||||||
if (sdp->state == SD_STOP) {
|
if (sdp->state == SD_STOP) {
|
||||||
#if STM32_SERIAL_USE_USART1
|
#if STM32_SERIAL_USE_USART1
|
||||||
if (&SD1 == sdp) {
|
if (&SD1 == sdp) {
|
||||||
rccEnableUSART1(FALSE);
|
rccEnableUSART1(FALSE);
|
||||||
nvicEnableVector(STM32_USART1_NUMBER, STM32_SERIAL_USART1_PRIORITY);
|
nvicEnableVector(STM32_USART1_NUMBER, prio);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if STM32_SERIAL_USE_USART2
|
#if STM32_SERIAL_USE_USART2
|
||||||
if (&SD2 == sdp) {
|
if (&SD2 == sdp) {
|
||||||
rccEnableUSART2(FALSE);
|
rccEnableUSART2(FALSE);
|
||||||
nvicEnableVector(STM32_USART2_NUMBER, STM32_SERIAL_USART2_PRIORITY);
|
nvicEnableVector(STM32_USART2_NUMBER, prio);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if STM32_SERIAL_USE_USART3
|
#if STM32_SERIAL_USE_USART3
|
||||||
if (&SD3 == sdp) {
|
if (&SD3 == sdp) {
|
||||||
rccEnableUSART3(FALSE);
|
rccEnableUSART3(FALSE);
|
||||||
nvicEnableVector(STM32_USART3_NUMBER, STM32_SERIAL_USART3_PRIORITY);
|
nvicEnableVector(STM32_USART3_NUMBER, prio);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if STM32_SERIAL_USE_UART4
|
#if STM32_SERIAL_USE_UART4
|
||||||
if (&SD4 == sdp) {
|
if (&SD4 == sdp) {
|
||||||
rccEnableUART4(FALSE);
|
rccEnableUART4(FALSE);
|
||||||
nvicEnableVector(STM32_UART4_NUMBER, STM32_SERIAL_UART4_PRIORITY);
|
nvicEnableVector(STM32_UART4_NUMBER, prio);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if STM32_SERIAL_USE_UART5
|
#if STM32_SERIAL_USE_UART5
|
||||||
if (&SD5 == sdp) {
|
if (&SD5 == sdp) {
|
||||||
rccEnableUART5(FALSE);
|
rccEnableUART5(FALSE);
|
||||||
nvicEnableVector(STM32_UART5_NUMBER, STM32_SERIAL_UART5_PRIORITY);
|
nvicEnableVector(STM32_UART5_NUMBER, prio);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if STM32_SERIAL_USE_USART6
|
#if STM32_SERIAL_USE_USART6
|
||||||
if (&SD6 == sdp) {
|
if (&SD6 == sdp) {
|
||||||
rccEnableUSART6(FALSE);
|
rccEnableUSART6(FALSE);
|
||||||
nvicEnableVector(STM32_USART6_NUMBER, STM32_SERIAL_USART6_PRIORITY);
|
nvicEnableVector(STM32_USART6_NUMBER, prio);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -294,6 +294,8 @@
|
||||||
#define STM32_SERIAL_USE_UART4 TRUE
|
#define STM32_SERIAL_USE_UART4 TRUE
|
||||||
#define STM32_SERIAL_USE_UART5 TRUE
|
#define STM32_SERIAL_USE_UART5 TRUE
|
||||||
#define STM32_SERIAL_USE_USART6 TRUE
|
#define STM32_SERIAL_USE_USART6 TRUE
|
||||||
|
// NOTE: These are ignored as there is a hack in the chibios UART driver to increase these
|
||||||
|
// based on the baud rate.
|
||||||
#define STM32_SERIAL_USART1_PRIORITY 7
|
#define STM32_SERIAL_USART1_PRIORITY 7
|
||||||
#define STM32_SERIAL_USART2_PRIORITY 7
|
#define STM32_SERIAL_USART2_PRIORITY 7
|
||||||
#define STM32_SERIAL_USART3_PRIORITY 7
|
#define STM32_SERIAL_USART3_PRIORITY 7
|
||||||
|
|
Loading…
Reference in New Issue