STM32 HAL Вызов HAL_UART_Transmit из другого файла, кроме main.c

Я пытаюсь вызвать HAL_UART_Transmit () из моего пользовательского файла SA145.c, что вызывает ошибку: идентификатор huart1 us undefined. huart1 объявлен как extern в main.c. Как вызвать HAL_UART_Transmit () из файла, отличного от main.c


person nvm    schedule 05.08.2020    source источник


Ответы (1)


ошибка: идентификатор huart1 us undefined.

huart1 объявлен как extern в main.c.

Что-то должно быть объявлено как extern в файле, где это, говоря обычным языком, заимствовано.

Но он должен действительно существовать (т.е. не быть extern) - это какой-то файл. В противном случае компоновщик найдет только попытки использовать его, но никогда не найдет его для использования.

В то же время вы, возможно, действительно не захотите вызывать базовую последовательную функцию из множества мест, а скорее захотите обернуть ее чем-то подходящим для того, почему вы ее вызываете, например, чтобы отправлять данные на периферийное устройство или создавать отладочную распечатку и т. д. Тогда вы можете сохранить аргумент только в одном файле, и вам не придется делиться им.

person Chris Stratton    schedule 05.08.2020
comment
Он объявлен как extern в файле SA145.h. Он соответствует штрафным ошибкам связывания, как показано ниже. Заголовки HAL, включенные в SA145.h . \ Test_sample.axf: Ошибка: L6218E: Неопределенный символ huart1 (указано из SA145.o) Я хочу отправить данные на периферийное устройство. - person nvm; 05.08.2020
comment
Извините, я не акцентировал внимание на том, что это ошибка ссылки. См. Правки - person Chris Stratton; 05.08.2020