Вариант #2. В таком виде - работает. Если раскомментить и вызвать через функцию - виснет. Почему? Проц поставил ATmega32.
main.hКод
#ifndef _MAIN_H
#define _MAIN_H
#endif
#define khzFmt "F=%4.4fkHz"
#define mhzFmt "F=%3.4fMHz"
char buf[16];
main.cКод
#ifndef F_CPU
#define F_CPU 8000000UL
#endif
#include <avr/io.h>
#include <stdio.h>
#include <stdint.h>
#include "lcd.h"
#include "main.h"
/*void hzToStr(char* buf, const uint32_t hz, uint8_t freqSelect)
{
double fd = (float)hz / 1000.0f;
if (freqSelect == 0)
snprintf(buf, sizeof(buf), khzFmt, fd);
if (freqSelect == 1)
snprintf(buf, sizeof(buf), mhzFmt, fd);
}*/
int main(void)
{
uint32_t hz = 1325235;
lcd_init();
double fd = (double)hz / 1000.0f;
snprintf(buf, sizeof(buf), khzFmt, fd);
lcd_putdata(1, (char*)buf);
//hzToStr(buf, hz, 0);
//lcd_putdata(1, (char*)buf);
lcd_putdata(2, "adflasdf");
while(1){;}
}