Перейти к содержанию

Printf В Iar Для Stm8+Lcd


Рекомендуемые сообщения

Доброго времени суток!

Возник вопрос: как выводить символы с помощью функции printf в IAR для STM8 на знакосинтезирующий ЖКИ?

Например в AVR делалось так:

#include <stdio.h>
stdout = &lcd_str;
static FILE lcd_str=FDEV_SETUP_STREAM(BDLCD, NULL,_FDEV_SETUP_WRITE);

(+какието фичи с флагами, не помню уже)

Где BDLCD функция вывода одного символа (тупо записывание байта в ЖКИ). Пользователь может сам написать любую конфигурацию функции.

Тогда можно без труда выводить числа с плавающей точкой, да и вообще на много удобнее.

printf("%02d:%02d %3.1fkHz\n",Time[1],Time[0],Frequency);

Как же подобное сделать в IAR for STM8?

Перерыл кучу интернетов, но так ничего вразумительного и не нашёл.

Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Хороший человек подсказал решение, из-за которого мне стыдно :)

Переопределить putchar

int putchar (int iCh)
{
 LcdData(iCh);
 return (iCh);
}

Где LcdData - моя функция вывода одного символа на ЖКИ по 4-х битному интерфейсу, например:

void LcdData(unsigned char dat)
{
GPIO_WriteHigh(GPIOE,GPIO_PIN_7);
GPIO_Write(GPIOB,dat>>4);
GPIO_WriteHigh(GPIOE,GPIO_PIN_6);
delay(1);
GPIO_WriteLow(GPIOE,GPIO_PIN_6);
delay(1);
GPIO_Write(GPIOB,dat&0x0F);
GPIO_WriteHigh(GPIOE,GPIO_PIN_6);
delay(1);
GPIO_WriteLow(GPIOE,GPIO_PIN_6);
delay(1);
}

Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...