STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
amv2000
Опытный кот
Сообщения: 720
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Re: STM32 новичку в ARM что к чему

Сообщение amv2000 »

Добрый вечер! Пытаюсь разобраться с русским шрифтом на GLCD. В функции вывода символа
Спойлерvoid _DrawChar_5x8(uint16_t x, uint16_t y, uint16_t textcolor, uint16_t textbgcolor, unsigned char c)
{
if((x >= 320) || (y >= 240) || ((x + 4) < 0) || ((y + 7) < 0)) return;

if(c<128) c = c-32;
if(c>=144 && c<=175) c = c-48;
if(c>=128 && c<=143) c = c+16;
if(c>=176 && c<=191) c = c-48;
if(c>191) return;

for (uint8_t i=0; i<6; i++ )
{
uint8_t line;
if (i == 5) line = 0x00;
else line = font[(c*5)+i];
for (uint8_t j = 0; j<8; j++, line >>= 1)
{
if (line & 0x01)
{
if(GUI()->textsize == 1) { tft_PIXEL_draw( x+i, y+j, GUI()->textcolor ); }
else
{
tft_RECT_fill(x+(i*GUI()->textsize), y+(j*GUI()->textsize), GUI()->textsize, GUI()->textsize, GUI()->textcolor);
}
}
else if( GUI()->textbgcolor != GUI()->textcolor )
{
if(GUI()->textsize == 1) { tft_PIXEL_draw(x+i, y+j, GUI()->textbgcolor); }
else
{
tft_RECT_fill(x+(i*GUI()->textsize), y+(j*GUI()->textsize), GUI()->textsize, GUI()->textsize, GUI()->textbgcolor);
}
}
}
}
}

Код: Выделить всё

if(c<128)            c = c-32;
  if(c>=144 && c<=175) c = c-48;
  if(c>=128 && c<=143) c = c+16;
  if(c>=176 && c<=191) c = c-48;
  if(c>191)  return;
Эти строки, что за смещение? Откуда 144,175 если в ASCII кириллица со 192, чего то не в тыкаю. сам файл шрифта 5х7
Спойлер#ifndef FONT5X7_H
#define FONT5X7_H

#include "common.h"

//----------------------------------------------------------------------------
// Стандартный шрифт ASCII 5x7.
//----------------------------------------------------------------------------

static const uint8_t font[] = {

0x00, 0x00, 0x00, 0x00, 0x00,
0x3E, 0x5B, 0x4F, 0x5B, 0x3E,
0x3E, 0x6B, 0x4F, 0x6B, 0x3E,
0x1C, 0x3E, 0x7C, 0x3E, 0x1C,
0x18, 0x3C, 0x7E, 0x3C, 0x18,
0x1C, 0x57, 0x7D, 0x57, 0x1C,
0x1C, 0x5E, 0x7F, 0x5E, 0x1C,
0x00, 0x18, 0x3C, 0x18, 0x00,
0xFF, 0xE7, 0xC3, 0xE7, 0xFF,
0x00, 0x18, 0x24, 0x18, 0x00,
0xFF, 0xE7, 0xDB, 0xE7, 0xFF,
0x30, 0x48, 0x3A, 0x06, 0x0E,
0x26, 0x29, 0x79, 0x29, 0x26,
0x40, 0x7F, 0x05, 0x05, 0x07,
0x40, 0x7F, 0x05, 0x25, 0x3F,
0x5A, 0x3C, 0xE7, 0x3C, 0x5A,
0x7F, 0x3E, 0x1C, 0x1C, 0x08,
0x08, 0x1C, 0x1C, 0x3E, 0x7F,
0x14, 0x22, 0x7F, 0x22, 0x14,
0x5F, 0x5F, 0x00, 0x5F, 0x5F,
0x06, 0x09, 0x7F, 0x01, 0x7F,
0x00, 0x66, 0x89, 0x95, 0x6A,
0x60, 0x60, 0x60, 0x60, 0x60,
0x94, 0xA2, 0xFF, 0xA2, 0x94,
0x08, 0x04, 0x7E, 0x04, 0x08,
0x10, 0x20, 0x7E, 0x20, 0x10,
0x08, 0x08, 0x2A, 0x1C, 0x08,
0x08, 0x1C, 0x2A, 0x08, 0x08,
0x1E, 0x10, 0x10, 0x10, 0x10,
0x0C, 0x1E, 0x0C, 0x1E, 0x0C,
0x30, 0x38, 0x3E, 0x38, 0x30,
0x06, 0x0E, 0x3E, 0x0E, 0x06,// Непечатаемые символы таблицы ascii - 32

//156
0x00, 0x00, 0x00, 0x00, 0x00,// (space)
0x00, 0x00, 0x5F, 0x00, 0x00,// !
0x00, 0x07, 0x00, 0x07, 0x00,// "
0x14, 0x7F, 0x14, 0x7F, 0x14,// #
0x24, 0x2A, 0x7F, 0x2A, 0x12,// $
0x23, 0x13, 0x08, 0x64, 0x62,// %
0x36, 0x49, 0x55, 0x22, 0x50,// &
0x00, 0x05, 0x03, 0x00, 0x00,// '
0x00, 0x1C, 0x22, 0x41, 0x00,// (
0x00, 0x41, 0x22, 0x1C, 0x00,// )
0x08, 0x2A, 0x1C, 0x2A, 0x08,// *
0x08, 0x08, 0x3E, 0x08, 0x08,// +
0x00, 0x50, 0x30, 0x00, 0x00,// ,
0x08, 0x08, 0x08, 0x08, 0x08,// -
0x00, 0x60, 0x60, 0x00, 0x00,// .
0x20, 0x10, 0x08, 0x04, 0x02,// /
0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
0x00, 0x42, 0x7F, 0x40, 0x00,// 1
0x42, 0x61, 0x51, 0x49, 0x46,// 2
0x21, 0x41, 0x45, 0x4B, 0x31,// 3
0x18, 0x14, 0x12, 0x7F, 0x10,// 4
0x27, 0x45, 0x45, 0x45, 0x39,// 5
0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
0x01, 0x71, 0x09, 0x05, 0x03,// 7
0x36, 0x49, 0x49, 0x49, 0x36,// 8
0x06, 0x49, 0x49, 0x29, 0x1E,// 9
0x00, 0x36, 0x36, 0x00, 0x00,// :
0x00, 0x56, 0x36, 0x00, 0x00,// ;
0x00, 0x08, 0x14, 0x22, 0x41,// <
0x14, 0x14, 0x14, 0x14, 0x14,// =
0x41, 0x22, 0x14, 0x08, 0x00,// >
0x02, 0x01, 0x51, 0x09, 0x06,// ?
0x32, 0x49, 0x79, 0x41, 0x3E,// @
0x7E, 0x11, 0x11, 0x11, 0x7E,// A (65)
0x7F, 0x49, 0x49, 0x49, 0x36,// B
0x3E, 0x41, 0x41, 0x41, 0x22,// C
0x7F, 0x41, 0x41, 0x22, 0x1C,// D
0x7F, 0x49, 0x49, 0x49, 0x41,// E
0x7F, 0x09, 0x09, 0x01, 0x01,// F
0x3E, 0x41, 0x41, 0x51, 0x32,// G
0x7F, 0x08, 0x08, 0x08, 0x7F,// H
0x00, 0x41, 0x7F, 0x41, 0x00,// I
0x20, 0x40, 0x41, 0x3F, 0x01,// J
0x7F, 0x08, 0x14, 0x22, 0x41,// K
0x7F, 0x40, 0x40, 0x40, 0x40,// L
0x7F, 0x02, 0x04, 0x02, 0x7F,// M
0x7F, 0x04, 0x08, 0x10, 0x7F,// N
0x3E, 0x41, 0x41, 0x41, 0x3E,// O
0x7F, 0x09, 0x09, 0x09, 0x06,// P
0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
0x7F, 0x09, 0x19, 0x29, 0x46,// R
0x46, 0x49, 0x49, 0x49, 0x31,// S
0x01, 0x01, 0x7F, 0x01, 0x01,// T
0x3F, 0x40, 0x40, 0x40, 0x3F,// U
0x1F, 0x20, 0x40, 0x20, 0x1F,// V
0x7F, 0x20, 0x18, 0x20, 0x7F,// W
0x63, 0x14, 0x08, 0x14, 0x63,// X
0x03, 0x04, 0x78, 0x04, 0x03,// Y
0x61, 0x51, 0x49, 0x45, 0x43,// Z (90)
0x00, 0x00, 0x7F, 0x41, 0x41,// [
0x02, 0x04, 0x08, 0x10, 0x20,// "\"
0x41, 0x41, 0x7F, 0x00, 0x00,// ]
0x04, 0x02, 0x01, 0x02, 0x04,// ^
0x40, 0x40, 0x40, 0x40, 0x40,// _
0x00, 0x01, 0x02, 0x04, 0x00,// `
0x20, 0x54, 0x54, 0x54, 0x78,// a (97)
0x7F, 0x48, 0x44, 0x44, 0x38,// b
0x38, 0x44, 0x44, 0x44, 0x20,// c
0x38, 0x44, 0x44, 0x48, 0x7F,// d
0x38, 0x54, 0x54, 0x54, 0x18,// e
0x08, 0x7E, 0x09, 0x01, 0x02,// f
0x08, 0x14, 0x54, 0x54, 0x3C,// g
0x7F, 0x08, 0x04, 0x04, 0x78,// h
0x00, 0x44, 0x7D, 0x40, 0x00,// i
0x20, 0x40, 0x44, 0x3D, 0x00,// j
0x00, 0x7F, 0x10, 0x28, 0x44,// k
0x00, 0x41, 0x7F, 0x40, 0x00,// l
0x7C, 0x04, 0x18, 0x04, 0x78,// m
0x7C, 0x08, 0x04, 0x04, 0x78,// n
0x38, 0x44, 0x44, 0x44, 0x38,// o
0x7C, 0x14, 0x14, 0x14, 0x08,// p
0x08, 0x14, 0x14, 0x18, 0x7C,// q
0x7C, 0x08, 0x04, 0x04, 0x08,// r
0x48, 0x54, 0x54, 0x54, 0x20,// s
0x04, 0x3F, 0x44, 0x40, 0x20,// t
0x3C, 0x40, 0x40, 0x20, 0x7C,// u
0x1C, 0x20, 0x40, 0x20, 0x1C,// v
0x3C, 0x40, 0x30, 0x40, 0x3C,// w
0x44, 0x28, 0x10, 0x28, 0x44,// x
0x0C, 0x50, 0x50, 0x50, 0x3C,// y
0x44, 0x64, 0x54, 0x4C, 0x44,// z (122)
0x00, 0x08, 0x36, 0x41, 0x00,// {
0x00, 0x00, 0x7F, 0x00, 0x00,// |
0x00, 0x41, 0x36, 0x08, 0x00,// }
0x08, 0x08, 0x2A, 0x1C, 0x08,// ->
0x08, 0x1C, 0x2A, 0x08, 0x08,// <-
//96
0x7E, 0x11, 0x11, 0x11, 0x7E,// A (128)
0x7F, 0x49, 0x49, 0x49, 0x30,// Б
0x7F, 0x49, 0x49, 0x49, 0x36,// B
0x7F, 0x01, 0x01, 0x01, 0x01,// Г
0x60, 0x3F, 0x21, 0x3F, 0x60,// Д
0x7F, 0x49, 0x49, 0x49, 0x41,// E
0x63, 0x14, 0x7F, 0x14, 0x63,// Ж
0x49, 0x49, 0x49, 0x49, 0x36,// З
0x7F, 0x10, 0x08, 0x04, 0x7F,// И
0x7F, 0x10, 0x09, 0x04, 0x7F,// Й
0x7F, 0x08, 0x14, 0x22, 0x41,// К
0x40, 0x3F, 0x01, 0x01, 0x7F,// Л
0x7F, 0x02, 0x04, 0x02, 0x7F,// М
0x7F, 0x08, 0x08, 0x08, 0x7F,// H
0x3E, 0x41, 0x41, 0x41, 0x3E,// O
0x7F, 0x01, 0x01, 0x01, 0x7F,// П (143)
0x7F, 0x09, 0x09, 0x09, 0x06,// P
0x3E, 0x41, 0x41, 0x41, 0x22,// C
0x01, 0x01, 0x7F, 0x01, 0x01,// T
0x63, 0x14, 0x08, 0x04, 0x03,// У
0x3E, 0x41, 0x7F, 0x41, 0x3E,// Ф
0x63, 0x14, 0x08, 0x14, 0x63,// X
0x3F, 0x20, 0x20, 0x3F, 0x60,// Ц
0x07, 0x08, 0x08, 0x08, 0x7F,// Ч
0x7F, 0x40, 0x7F, 0x40, 0x7F,// Ш
0x3F, 0x20, 0x3F, 0x20, 0x7F,// Щ (153)
0x01, 0x7F, 0x48, 0x48, 0x30,// Ъ
0x3C, 0x41, 0x42, 0x20, 0x7C,// ѝ
0x7F, 0x08, 0x3E, 0x41, 0x3E,// Ю
0x46, 0x29, 0x19, 0x09, 0x7F,// Я
//30
0x20, 0x54, 0x54, 0x54, 0x78,// а (158)
0x7E, 0x49, 0x45, 0x45, 0x39,// б
0x7C, 0x54, 0x54, 0x58, 0x20,// в
0x7C, 0x04, 0x04, 0x04, 0x04,// г
0x08, 0x14, 0x54, 0x54, 0x3C,// д
0x38, 0x54, 0x54, 0x54, 0x18,// е
0x44, 0x28, 0x7C, 0x28, 0x44,// ж
0x54, 0x54, 0x54, 0x54, 0x28,// з
0x3C, 0x40, 0x40, 0x20, 0x7C,// и
0x3C, 0x41, 0x42, 0x21, 0x7C,// й
0x00, 0x7C, 0x10, 0x28, 0x44,// к
0x40, 0x3C, 0x04, 0x04, 0x7C,// л
0x7C, 0x08, 0x10, 0x08, 0x7C,// м
0x00, 0x7C, 0x10, 0x10, 0x7C,// н
0x38, 0x44, 0x44, 0x44, 0x38,// о
0x00, 0x7C, 0x04, 0x04, 0x7C,// п
0x7C, 0x14, 0x14, 0x14, 0x08,// р
0x38, 0x44, 0x44, 0x44, 0x20,// с (175)
0x04, 0x04, 0x7C, 0x04, 0x04,// т
0x0C, 0x50, 0x50, 0x50, 0x3C,// у
0x38, 0x44, 0x7C, 0x44, 0x38,// ф
0x44, 0x28, 0x10, 0x28, 0x44,// х
0x3C, 0x20, 0x20, 0x3C, 0x60,// ц
0x00, 0x0C, 0x10, 0x10, 0x7C,// ч
0x7C, 0x40, 0x7C, 0x40, 0x7C,// ш
0x3C, 0x20, 0x3C, 0x20, 0x7C,// щ
0x04, 0x7C, 0x50, 0x50, 0x30,// ъ
0x00, 0x7C, 0x50, 0x50, 0x30,// ь
0x7C, 0x10, 0x38, 0x44, 0x38,// ю
0x48, 0x34, 0x14, 0x14, 0x7C,// я (187)
};
#endif // FONT5X7_H
Реклама
Аватара пользователя
azhel12
Встал на лапы
Сообщения: 145
Зарегистрирован: Пн апр 02, 2012 15:56:23

Re: STM32 новичку в ARM что к чему

Сообщение azhel12 »

[uquote="amv2000",url="/forum/viewtopic.php?p=4574661#p4574661"]Эти строки, что за смещение? Откуда 144,175[/uquote]
Эти смещения здесь для уплотнения шрифта, из таблицы ASCII вырезаны непечатаемые символы. Вам надо добавить еще пару условий для кириллицы, если c равен 192 (буква 'А'), то надо вычесть до её реальной позиции в массиве шрифта.

Но вообще у вас код не соответствует шрифту, так как в массиве представлены ненужные строки (первые 32 символа как минимум), а первое условие считает, что их там нет.
Реклама
Аватара пользователя
amv2000
Опытный кот
Сообщения: 720
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Re: STM32 новичку в ARM что к чему

Сообщение amv2000 »

[uquote="azhel12",url="/forum/viewtopic.php?p=4574737#p4574737"]если c равен 192 (буква 'А'), то надо вычесть до её реальной позиции в массиве шрифта.[/uquote]
Да это я понял, что смещение. Только цифры какие то странные и если задать if(c>=192 && c<=223) c = c-64; вообще абра кадабра какая то.
если код смещения

Код: Выделить всё

if(c>=144 && c<=175) c = c-16;
	if(c>=176 && c<=191) c = c-16;
  if(c>191)  return;
после 'п' съедаются никак пока не поборю. И похоже кодировка DOS буква 'A' начинается со 128.
Изображение
Аватара пользователя
amv2000
Опытный кот
Сообщения: 720
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Re: STM32 новичку в ARM что к чему

Сообщение amv2000 »

Спойлер#ifndef FONT5X7_H
#define FONT5X7_H

#include "common.h"

//----------------------------------------------------------------------------
// Стандартный шрифт ASCII 5x7.
//----------------------------------------------------------------------------

static const uint8_t font[] = {
//156
0x00, 0x00, 0x00, 0x00, 0x00,// (space)
0x00, 0x00, 0x5F, 0x00, 0x00,// !
0x00, 0x07, 0x00, 0x07, 0x00,// "
0x14, 0x7F, 0x14, 0x7F, 0x14,// #
0x24, 0x2A, 0x7F, 0x2A, 0x12,// $
0x23, 0x13, 0x08, 0x64, 0x62,// %
0x36, 0x49, 0x55, 0x22, 0x50,// &
0x00, 0x05, 0x03, 0x00, 0x00,// '
0x00, 0x1C, 0x22, 0x41, 0x00,// (
0x00, 0x41, 0x22, 0x1C, 0x00,// )
0x08, 0x2A, 0x1C, 0x2A, 0x08,// *
0x08, 0x08, 0x3E, 0x08, 0x08,// +
0x00, 0x50, 0x30, 0x00, 0x00,// ,
0x08, 0x08, 0x08, 0x08, 0x08,// -
0x00, 0x60, 0x60, 0x00, 0x00,// .
0x20, 0x10, 0x08, 0x04, 0x02,// /
0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
0x00, 0x42, 0x7F, 0x40, 0x00,// 1
0x42, 0x61, 0x51, 0x49, 0x46,// 2
0x21, 0x41, 0x45, 0x4B, 0x31,// 3
0x18, 0x14, 0x12, 0x7F, 0x10,// 4
0x27, 0x45, 0x45, 0x45, 0x39,// 5
0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
0x01, 0x71, 0x09, 0x05, 0x03,// 7
0x36, 0x49, 0x49, 0x49, 0x36,// 8
0x06, 0x49, 0x49, 0x29, 0x1E,// 9
0x00, 0x36, 0x36, 0x00, 0x00,// :
0x00, 0x56, 0x36, 0x00, 0x00,// ;
0x00, 0x08, 0x14, 0x22, 0x41,// <
0x14, 0x14, 0x14, 0x14, 0x14,// =
0x41, 0x22, 0x14, 0x08, 0x00,// >
0x02, 0x01, 0x51, 0x09, 0x06,// ?
0x32, 0x49, 0x79, 0x41, 0x3E,// @
0x7E, 0x11, 0x11, 0x11, 0x7E,// A (65)
0x7F, 0x49, 0x49, 0x49, 0x36,// B
0x3E, 0x41, 0x41, 0x41, 0x22,// C
0x7F, 0x41, 0x41, 0x22, 0x1C,// D
0x7F, 0x49, 0x49, 0x49, 0x41,// E
0x7F, 0x09, 0x09, 0x01, 0x01,// F
0x3E, 0x41, 0x41, 0x51, 0x32,// G
0x7F, 0x08, 0x08, 0x08, 0x7F,// H
0x00, 0x41, 0x7F, 0x41, 0x00,// I
0x20, 0x40, 0x41, 0x3F, 0x01,// J
0x7F, 0x08, 0x14, 0x22, 0x41,// K
0x7F, 0x40, 0x40, 0x40, 0x40,// L
0x7F, 0x02, 0x04, 0x02, 0x7F,// M
0x7F, 0x04, 0x08, 0x10, 0x7F,// N
0x3E, 0x41, 0x41, 0x41, 0x3E,// O
0x7F, 0x09, 0x09, 0x09, 0x06,// P
0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
0x7F, 0x09, 0x19, 0x29, 0x46,// R
0x46, 0x49, 0x49, 0x49, 0x31,// S
0x01, 0x01, 0x7F, 0x01, 0x01,// T
0x3F, 0x40, 0x40, 0x40, 0x3F,// U
0x1F, 0x20, 0x40, 0x20, 0x1F,// V
0x7F, 0x20, 0x18, 0x20, 0x7F,// W
0x63, 0x14, 0x08, 0x14, 0x63,// X
0x03, 0x04, 0x78, 0x04, 0x03,// Y
0x61, 0x51, 0x49, 0x45, 0x43,// Z (90)
0x00, 0x00, 0x7F, 0x41, 0x41,// [
0x02, 0x04, 0x08, 0x10, 0x20,// "\"
0x41, 0x41, 0x7F, 0x00, 0x00,// ]
0x04, 0x02, 0x01, 0x02, 0x04,// ^
0x40, 0x40, 0x40, 0x40, 0x40,// _
0x00, 0x01, 0x02, 0x04, 0x00,// `
0x20, 0x54, 0x54, 0x54, 0x78,// a (97)
0x7F, 0x48, 0x44, 0x44, 0x38,// b
0x38, 0x44, 0x44, 0x44, 0x20,// c
0x38, 0x44, 0x44, 0x48, 0x7F,// d
0x38, 0x54, 0x54, 0x54, 0x18,// e
0x08, 0x7E, 0x09, 0x01, 0x02,// f
0x08, 0x14, 0x54, 0x54, 0x3C,// g
0x7F, 0x08, 0x04, 0x04, 0x78,// h
0x00, 0x44, 0x7D, 0x40, 0x00,// i
0x20, 0x40, 0x44, 0x3D, 0x00,// j
0x00, 0x7F, 0x10, 0x28, 0x44,// k
0x00, 0x41, 0x7F, 0x40, 0x00,// l
0x7C, 0x04, 0x18, 0x04, 0x78,// m
0x7C, 0x08, 0x04, 0x04, 0x78,// n
0x38, 0x44, 0x44, 0x44, 0x38,// o
0x7C, 0x14, 0x14, 0x14, 0x08,// p
0x08, 0x14, 0x14, 0x18, 0x7C,// q
0x7C, 0x08, 0x04, 0x04, 0x08,// r
0x48, 0x54, 0x54, 0x54, 0x20,// s
0x04, 0x3F, 0x44, 0x40, 0x20,// t
0x3C, 0x40, 0x40, 0x20, 0x7C,// u
0x1C, 0x20, 0x40, 0x20, 0x1C,// v
0x3C, 0x40, 0x30, 0x40, 0x3C,// w
0x44, 0x28, 0x10, 0x28, 0x44,// x
0x0C, 0x50, 0x50, 0x50, 0x3C,// y
0x44, 0x64, 0x54, 0x4C, 0x44,// z (122)
0x00, 0x08, 0x36, 0x41, 0x00,// {
0x00, 0x00, 0x7F, 0x00, 0x00,// |
0x00, 0x41, 0x36, 0x08, 0x00,// }
0x08, 0x08, 0x2A, 0x1C, 0x08,// ->
0x08, 0x1C, 0x2A, 0x08, 0x08,// <-
//95
0x7E, 0x11, 0x11, 0x11, 0x7E,// A (128) с 0x90 (144) и до 0xAF (175) идут заглавные по порядку «А» — «Я» исключая «Ё»
0x7F, 0x49, 0x49, 0x49, 0x30,// Б
0x7F, 0x49, 0x49, 0x49, 0x36,// B
0x7F, 0x01, 0x01, 0x01, 0x01,// Г
0x60, 0x3F, 0x21, 0x3F, 0x60,// Д
0x7F, 0x49, 0x49, 0x49, 0x41,// E
0x63, 0x14, 0x7F, 0x14, 0x63,// Ж
0x49, 0x49, 0x49, 0x49, 0x36,// З
0x7F, 0x10, 0x08, 0x04, 0x7F,// И
0x7F, 0x10, 0x09, 0x04, 0x7F,// Й
0x7F, 0x08, 0x14, 0x22, 0x41,// К
0x40, 0x3F, 0x01, 0x01, 0x7F,// Л
0x7F, 0x02, 0x04, 0x02, 0x7F,// М
0x7F, 0x08, 0x08, 0x08, 0x7F,// H
0x3E, 0x41, 0x41, 0x41, 0x3E,// O
0x7F, 0x01, 0x01, 0x01, 0x7F,// П (143)
0x7F, 0x09, 0x09, 0x09, 0x06,// P
0x3E, 0x41, 0x41, 0x41, 0x22,// C
0x01, 0x01, 0x7F, 0x01, 0x01,// T
0x63, 0x14, 0x08, 0x04, 0x03,// У
0x3E, 0x41, 0x7F, 0x41, 0x3E,// Ф
0x63, 0x14, 0x08, 0x14, 0x63,// X
0x3F, 0x20, 0x20, 0x3F, 0x60,// Ц
0x07, 0x08, 0x08, 0x08, 0x7F,// Ч
0x7F, 0x40, 0x7F, 0x40, 0x7F,// Ш
0x3F, 0x20, 0x3F, 0x20, 0x7F,// Щ
0x01, 0x7F, 0x48, 0x48, 0x30,// Ъ
0x7F, 0x48, 0x48, 0x30, 0x7F,// Ы
0x00, 0x7F, 0x48, 0x48, 0x30,// Ь
0x22, 0x41, 0x49, 0x49, 0x3E,// Э
0x7F, 0x08, 0x3E, 0x41, 0x3E,// Ю
0x46, 0x29, 0x19, 0x09, 0x7F,// Я (159)
//32
0x20, 0x54, 0x54, 0x54, 0x78,// а (160) в хвосте с 0xB0 (176) до 0xBF (191) маленькие от «а» до «п»
0x7E, 0x49, 0x45, 0x45, 0x39,// б
0x7C, 0x54, 0x54, 0x58, 0x20,// в
0x7C, 0x04, 0x04, 0x04, 0x04,// г
0x08, 0x14, 0x54, 0x54, 0x3C,// д
0x38, 0x54, 0x54, 0x54, 0x18,// е
0x44, 0x28, 0x7C, 0x28, 0x44,// ж
0x54, 0x54, 0x54, 0x54, 0x28,// з
0x3C, 0x40, 0x40, 0x20, 0x7C,// и
0x3C, 0x41, 0x42, 0x21, 0x7C,// й
0x00, 0x7C, 0x10, 0x28, 0x44,// к
0x40, 0x3C, 0x04, 0x04, 0x7C,// л
0x7C, 0x08, 0x10, 0x08, 0x7C,// м
0x00, 0x7C, 0x10, 0x10, 0x7C,// н
0x38, 0x44, 0x44, 0x44, 0x38,// о
0x00, 0x7C, 0x04, 0x04, 0x7C,// п
0x7C, 0x14, 0x14, 0x14, 0x08,// р (176) диапазону 0x80 (128) — 0x8F (143) соответствуют маленькие буквы от «р» до «я»
0x38, 0x44, 0x44, 0x44, 0x20,// с
0x04, 0x04, 0x7C, 0x04, 0x04,// т
0x0C, 0x50, 0x50, 0x50, 0x3C,// у
0x38, 0x44, 0x7C, 0x44, 0x38,// ф
0x44, 0x28, 0x10, 0x28, 0x44,// х
0x3C, 0x20, 0x20, 0x3C, 0x60,// ц
0x00, 0x0C, 0x10, 0x10, 0x7C,// ч
0x7C, 0x40, 0x7C, 0x40, 0x7C,// ш
0x3C, 0x20, 0x3C, 0x20, 0x7C,// щ
0x04, 0x7C, 0x50, 0x50, 0x30,// ъ
0x7C, 0x50, 0x50, 0x30, 0x7C,// ы
0x00, 0x7C, 0x50, 0x50, 0x30,// ь
0x20, 0x44, 0x54, 0x54, 0x38,// э
0x7C, 0x10, 0x38, 0x44, 0x38,// ю
0x48, 0x34, 0x14, 0x14, 0x7C,// я (191)
//32
};
#endif // FONT5X7_H

//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
Практически победил

Код: Выделить всё

//--------------------- смещение шрифта кириллицы : --------------------------
		
	if(c<128)            c = c-32; //пропускаем не печатаемые символы	
	if(c>=144 && c<=175) c = c-48; //с 0x90 и до 0xAF идут заглавные по порядку «А» — «Я» исключая «Ё» 
	if(c>=128 && c<=143) c = c+16; //диапазону 0x80 — 0x8F соответствуют маленькие буквы от «р» до «я»
  if(c>=176 && c<=191) c = c-48; //в хвосте с 0xB0 до 0xBF маленькие от «а» до «п»
  if(c>191)  return;		
Оказывается расположение строк смещения тоже важно.
Только кириллица всё равно выводится по 2 байта, подскажите как можно вывести символ чтобы 1 байт был?
Пишу в KEIL установлена кодировка russian windows 1251.
Реклама
Эиком - электронные компоненты и радиодетали
kvn234
Потрогал лапой паяльник
Сообщения: 337
Зарегистрирован: Вс апр 17, 2011 09:51:26
Откуда: Тула

Re: STM32 новичку в ARM что к чему

Сообщение kvn234 »

Добрый вечер.

Можно ли прошить STM32G030 по UART.

Если прошивается по UART как это сделать?
Реклама
veso74
Поставщик валерьянки для Кота
Сообщения: 1907
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение veso74 »

1. Подключите ST-link к софта STM32 ST-LINK к STM32G030F6P6: SWCLK к пин 19, SWDIO к пин 18.
2. В ST-LINK Utility: Connect to the target; меню Target -> Option Bytes ... -> снимите флажок nBOOT_SEL -> Apply -> Disconnect to tne target.
3. Выключите программатор; включите чрез резистор (напр. 10 кОм) BOOT0 (пин 19) к 3.3V.
4. Включите USB/UART конвертeр к пин 9 (USART2_TX) и пин 10 (USART2_RX). Использую модуль на CH340G.
5. Выключите и снова включите питания МК.
6. Старт софт STM32 Cube Programmer -> UART, Port COMX, Connect. Готово.

Изображение, Изображение
Реклама
kvn234
Потрогал лапой паяльник
Сообщения: 337
Зарегистрирован: Вс апр 17, 2011 09:51:26
Откуда: Тула

Re: STM32 новичку в ARM что к чему

Сообщение kvn234 »

[uquote="veso74",url="/forum/viewtopic.php?p=4651883#p4651883"]1. Подключите ST-link к софта STM32 ST-LINK к STM32G030F6P6: SWCLK к пин 19, SWDIO к пин 18.
2. В ST-LINK Utility: Connect to the target; меню Target -> Option Bytes ... -> снимите флажок nBOOT_SEL -> Apply -> Disconnect to tne target.[/uquote]

У меня так при первом открытии.

Изображение

Изображение

Изображение


Но как быть если нет ST-LINK.

STM32F030 загружается сразу по UART без выполнения пунктов 1, 2


Сейчас попробую 3 пукт.
Я просто подавал 3.3v джампером напрямую
Adrift
Вымогатель припоя
Сообщения: 542
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: STM32 новичку в ARM что к чему

Сообщение Adrift »

ST-LINK utility давно устарел, там поддержки G серий нет вообще. По крайней мере в "Revision history" только старье и последнее обновление за 2018 год, как раз когда G0 только появились...
Последний раз редактировалось Adrift Пт ноя 22, 2024 14:51:42, всего редактировалось 1 раз.
veso74
Поставщик валерьянки для Кота
Сообщения: 1907
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение veso74 »

[uquote="Adrift",url="/forum/viewtopic.php?p=4651947#p4651947"]ST-LINK utility давно устарел, там поддержки G серий нет вообще.[/uquote]
Хорошо. У моя есть.
До сих пор работал с STM32G030, STM32G070. (Скорее сего в ST-LINK utility интерфейс проверяю отвечает ли STM32: кабели, питания, программатор, неоригинальный МК ... Далее: в IDE есть интерфейс записи).

Изображение
Adrift
Вымогатель припоя
Сообщения: 542
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: STM32 новичку в ARM что к чему

Сообщение Adrift »

veso74, да я скачал последнюю, она 2020 года и тогда G0 должна поддерживать, по крайней мере вышедшие на тот момент. Т.е. они втихую еще какое-то время обновляли, а официально даже на документацию забили, неизвестно что в новых версиях добавлено и в каком статусе. После 2020 вышли C0/U0/H5/U5, поддержки которых там уже быть не может, смысл пользоваться такой прогой...
veso74
Поставщик валерьянки для Кота
Сообщения: 1907
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение veso74 »

kvn234, независимо от низкого разрешения фото, см. у Вас включена защита. Bootloader есть? Для USB? Не знаю плату, которую показываете. Я бы удалил все и восстановил МК. У меня "голый" МК на макетной плате на бредборде. (Уже "разлюбил" МК, собранные на готовые платы :). Таким образом будет "скрыты" важные подробности о конкретном МК. На "голый" МК если что-то пропустим, МК просто не будет работать).
kvn234
Потрогал лапой паяльник
Сообщения: 337
Зарегистрирован: Вс апр 17, 2011 09:51:26
Откуда: Тула

Re: STM32 новичку в ARM что к чему

Сообщение kvn234 »

У меня тоже ST-LINK нормально работает с STM32G030 и отладка в STM32CubeIDE

Добавлено after 6 minutes 55 seconds:
[uquote="veso74",url="/forum/viewtopic.php?p=4651963#p4651963"]kvn234, независимо от низкого разрешения фото, см. у Вас включена защита. Bootloader есть?[/uquote]

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

С ST-LINK прошивка грузится без проблем.

Загружен блинк и при подключении BOOT0 через резистор на 3.3v продолжает мигать, прошивку по UART не грузит (reset делал, питание отключал).
veso74
Поставщик валерьянки для Кота
Сообщения: 1907
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение veso74 »

kvn234, посм. AN2606, для STM32G030 pattern 11, строка 2. В случае необходимо быть изменено состояние BOOT_LOCK(bit) в 0.
---
Можно изменить и только в софт STM32CubeProgrammer.

Изображение
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32 новичку в ARM что к чему

Сообщение VladislavS »

[uquote="kvn234",url="/forum/viewtopic.php?p=4651939#p4651939"]Но как быть если нет ST-LINK.[/uquote]Что значит нет ST-Link? Он уже сегодня мог у вас быть.
Изображение
изображение_2024-11-22_165514620.png
(65.07 КБ) 508 скачиваний
kvn234
Потрогал лапой паяльник
Сообщения: 337
Зарегистрирован: Вс апр 17, 2011 09:51:26
Откуда: Тула

Re: STM32 новичку в ARM что к чему

Сообщение kvn234 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=4651987#p4651987"][uquote="kvn234",url="/forum/viewtopic.php?p=4651939#p4651939"]Но как быть если нет ST-LINK.[/uquote]Что значит нет ST-Link? Он уже сегодня мог у вас быть.[/uquote]

У меня их 3.

2 из Китая, один самодельный. :)

Изображение
Sergi
Мучитель микросхем
Сообщения: 412
Зарегистрирован: Ср янв 04, 2012 11:57:40
Откуда: Алчевск

Re: STM32 новичку в ARM что к чему

Сообщение Sergi »

stm32g431cbu6 st link 4.6.0 определяет Device family :STM32G43x/G44x, читает, шьет.
Keil отлаживает без проблем.
Также и в DFU все шьется.
kvn234
Потрогал лапой паяльник
Сообщения: 337
Зарегистрирован: Вс апр 17, 2011 09:51:26
Откуда: Тула

Re: STM32 новичку в ARM что к чему

Сообщение kvn234 »

Разобрался, спасибо всем.

Ключевой момент:
На микроконтроллерах STM32G030 вывод BOOT0 изначально отключен. Если чип новый или основная флэш-память стерта, это не проблема, так как встроенный загрузчик автоматически включается.
Однако, если чип был ранее запрограммирован с помощью другого программного инструмента, загрузчик может быть больше недоступен через вывод BOOT0 (или кнопку BOOT). В таких случаях бит nBOOT_SEL в байтах пользовательских опций должен быть очищен (установлен в 0) с помощью программатора SWD, например ST-Link, и соответствующего программного обеспечения.
tonyk
Это не хвост, это антенна
Сообщения: 1309
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Re: STM32 новичку в ARM что к чему

Сообщение tonyk »

kvn234 писал(а):Ключевой момент:
Точно по другому нельзя?
Недавно разбирался с тем, куда нужно подтягивать сигналы SWD. Раньше на сайте ARM была схема с подтяжкой, вроде, CLK к "+" питания, а потом стали требовать подключать его к GND как раз по той причине, чтобы при подаче питания на МК линейки STM32G (возможно, и других новых линеек) в режим запуска встроенного загрузчика. Если найду инфу в своих загашниках, то выложу.

Добавлено after 34 minutes 11 seconds:
Нашёл.

Код: Выделить всё

На МК серии G0 пин SWCLK совмещён с BOOT0 . Если на ST-link SWCLK сделать подтяжку к + , то могут быть проблемки. Чип всегда может быть в режиме BOOT .
kvn234
Потрогал лапой паяльник
Сообщения: 337
Зарегистрирован: Вс апр 17, 2011 09:51:26
Откуда: Тула

Re: STM32 новичку в ARM что к чему

Сообщение kvn234 »

[uquote="tonyk",url="/forum/viewtopic.php?p=4652242#p4652242"]
kvn234 писал(а):Ключевой момент:
Точно по другому нельзя?[/uquote]

У меня так получилось.

Я вначале прошил через ST-LINK, потом пытался по UART - не получалось пока не очистил nBOOT_SEL
Adrift
Вымогатель припоя
Сообщения: 542
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: STM32 новичку в ARM что к чему

Сообщение Adrift »

А хотите погадать? Как думаете, эти три NOP чем-то между собой отличаются? )

Код: Выделить всё

asm volatile ("nop");

asm volatile(".rept 1\n"
             "nop\n"
             ".endr\n");

asm volatile(".rept %c0\n"
             "nop\n"
             ".endr\n" :: "I"(1));
Ответить

Вернуться в «ARM»