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/
Diff: freq_counter.h
- Revision:
- 0:83661d0d09c0
- Child:
- 1:fd2e1c853ab6
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/freq_counter.h Sun Oct 19 06:44:51 2014 +0000 @@ -0,0 +1,69 @@ +/* + * 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