Я в процессе передачи кода из STM32L0 в STM32L4.Проект работал нормально на L0, но на L4, когда одна из функций используется тогда ... процессор сразу выходит из строя сразу после того, как я включаю сеанс отладки (мне даже не нужно запускатьпрограмма, она запускает его немедленно и идет в серьезную ошибку).Странные вещи:
Функция, которая вызывает проблему, - это действительно макрос в __STATIC_INLINE void LL_SPI_Enable(SPI_TypeDef *SPIx)
из stm32l4xx_ll_spi.hex: SET_BIT(SPIx->CR1, SPI_CR1_SPE)
.
*Файл 1011 *, который использует LL_SPI_Enable()
, не создается, когда я закомментирую эту строку, содержащую функцию.Когда функция там, она создает файл .s
из файла .c
, который использует функцию.
Функция LL_SPI_Enable()
существует во многих других местах, и это нормально.В одном файле есть только одна из моих функций (определенных как статические inline __attribute__((__always_inline__))
), что вызывает такое странное поведение.Есть другие функции, которые делают то же самое (включение SPI), используя тот же LL_SPI_Enable()
, и это не проблема.Похоже, что только одна из моих функций не может использовать LL_SPI_Enacle()
Функция отключения SPI не вызывает никаких проблем.
Программа не попадает даже в первую строку кода, она сразу выходит из строя.
Я думал, что разброс файла был проблемой, поэтому я использовал конфигурацию по умолчанию для моегоПроцессор и результат тот же.Я также пробовал разные уровни оптимизации, а также без изменений.У меня нет ошибок от компилятора или компоновщика.
У кого-нибудь было что-то подобное?