Simple frequency counter, run without modification on Nucleo board, Input pin PA0, PA1, PB3. Only for STM32F4 series (Tested on Nucleo-F401RE,-F411RE and F446RE)
Dependents: Frequency_Counter_for_STM32F4xx
see /users/kenjiArai/notebook/frequency-counters/
freq_counter.h
- Committer:
- kenjiArai
- Date:
- 2014-10-19
- Revision:
- 0:83661d0d09c0
- Child:
- 1:fd2e1c853ab6
File content as of revision 0:83661d0d09c0:
/* * mbed Library program * Frequency Counter Hardware relataed program * * Copyright (c) 2014 Kenji Arai / JH1PJL * http://www.page.sannet.ne.jp/kenjia/index.html * http://mbed.org/users/kenjiArai/ * Created: October 18th, 2014 * Revised: October 19th, 2014 * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #ifndef MBED_F_COUNTER #define MBED_F_COUNTER #include "mbed.h" /** Frequency Counter * * CAUTION: Direct access to the CPU Timer module!! * No way to change pin assign and timer module * * @code * #include "mbed.h" * #include "freq_counter.h" * * F_COUNTER fc(p30); * * int main() { * uint32_t frequency = 0; * * while(true) { * freqency = fc.read_frequency(1.0); // gate time: 1 sec * printf("%d [Hz]", frequency); * } * } * @endcode */ class F_COUNTER { public: /** Configure data pin * @param frequency counter input pin */ F_COUNTER(PinName f_in); /** Read measured frequency * @param gate time * @return measured frequency */ uint32_t read_frequency(float gate_time); protected: DigitalIn _pin; void initialize(void); private: uint32_t freq; }; #endif // MBED_F_COUNTER