Я бы сделал по-другому:
1. Запустить таймер один раз в начале программы на частоту 10 кГц (период 0,1 мс).
2. В прерывании от таймера с помощью анализа предыдущего значения сигнала и нынешнего измерить количество тиков между отрицательными (или положительными)фронтами сигнала.
3. Записать полученное количество тиков в переменную Т.
4. В основном теле программы получить частоту, как F=10000/T
5. Порадоваться за полученный результат