Исправление сделано согласно комментарию @ Peter
В C вы можете помещать определения переменных в заголовок, только если он включен только в одну единицу компиляции.
У вас, кажется, есть две единицы компиляции:
одна, которая компилирует ваши PLL.h и PLL.c для создания PLL.o
тот, который компилирует ваши main.c и PLL.h для создания main.o
Оба ваших объектных файла содержат переменные, которые вы определили в PLL.h и, следовательно,когда вы нажимаете на компоновщик, он выдает ошибку, потому что переменные были объявлены дважды (один раз в каждом объектном файле).
Чтобы исправить эту ошибку, вы можете либо изменить способ компиляции, чтобы объединить два модуля компиляции.Или (если вы используете IDE, которая автоматически обрабатывает вашу компиляцию), вы можете применить следующие изменения, чтобы избежать определения переменной в вашем заголовке.
В заголовке: (измените определение на объявление)
extern int x;
В исходном файле: (определить переменную)
int x;