Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 10.05.2025
Сообщений: 24

Проблема с ASCII в STM32CubeIDE

14.05.2025, 21:47. Показов 1755. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый всем день уважаемые программисты инженеры. Столкнулся с не понятной проблемой. При попытки откомпилировать проект вылазит предупреждения по переменной char strr = 'Щ'; но если эту переменную поместить в отдельный хидер то всё компелируется без предупреждения и символ 'Щ' как положено имеет код в ASCII 217 и правильно отображается на дисплее да и любой другой символ отображается из хидера как положено. В самом STM32CubeIDE везде установил кодировку CP1251 да и если я перевожу дисплей в режим знакогенератора то правильная передача символов именно только кириллицы возможно только из хидера НО английские буквы проходят нормально как из хидера так и из листа main.c.

../Core/Src/main.c:79:13: warning: multi-character character constant [-Wmultichar]
79 | char strr = 'Р В©';
| ^~~~
../Core/Src/main.c:79:13: warning: unsigned conversion from 'int' to 'char' changes value from '53417' to '169' [-Woverflow]
C
1
2
3
4
5
6
char strr = 'Щ';
int main(void)
{
T6963_Print_Font(29,28, Verdana29x28, strr);
 
{
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.05.2025, 21:47
Ответы с готовыми решениями:

Как из STM32CubeIDE 1.2.1 передать проект в Keil uVision5?
Не пойму, как из STM32CubeIDE 1.2.1 сгенерировать/передать проект в Keil uVision5? В видеоуроках...

Не запускается проект в Stm32CubeIde
Ситуация такая. Сижу я на системе Ubuntu 20.04. На неё я установил Stm32CubeIde, в котором...

Ипорт проекта из Atollic TrueSTUDIO в STM32CubeIDE
При переносе проекта возникла ошибка: Ипорировал все согласно официальной документации.

11
434 / 156 / 28
Регистрация: 12.12.2020
Сообщений: 1,255
14.05.2025, 21:52
там где ругается, у вас файл кода в utf-8. сконвертируйте его в cp-1251
0
0 / 0 / 0
Регистрация: 10.05.2025
Сообщений: 24
14.05.2025, 22:04  [ТС]
Цитата Сообщение от Alex1126 Посмотреть сообщение
там где ругается, у вас файл кода в utf-8. сконвертируйте его в cp-1251
можно файл main.c конвертировать? У него максимум есть Properties и всё, и то в настройках этого main.c стоит CP1251.
0
434 / 156 / 28
Регистрация: 12.12.2020
Сообщений: 1,255
14.05.2025, 22:06
Цитата Сообщение от BigSten Посмотреть сообщение
У него максимум есть Properties и всё и то в настройках этого main.c стоит CP1251.
а по факту там какая кодировка?
0
0 / 0 / 0
Регистрация: 10.05.2025
Сообщений: 24
14.05.2025, 22:13  [ТС]
Цитата Сообщение от Alex1126 Посмотреть сообщение
а по факту там какая кодировка?

0
434 / 156 / 28
Регистрация: 12.12.2020
Сообщений: 1,255
14.05.2025, 22:14
Лучший ответ Сообщение было отмечено BigSten как решение

Решение

не. Если файл открыть блокнотом, нотепадом или или чем нить
1
0 / 0 / 0
Регистрация: 10.05.2025
Сообщений: 24
14.05.2025, 22:19  [ТС]
Alex1126, ха и то верно, надо было оказывается всё таки выбрать Other CP1251 выходит файл main.c нужно отдельно настраивать под кодировку. Я то просто в свойствах самого проекта настраивал и думал что все его объекты унаследуют настройки но видать не все.
0
Эксперт .NET
 Аватар для Rius
13163 / 7722 / 1679
Регистрация: 25.05.2015
Сообщений: 23,524
Записей в блоге: 14
15.05.2025, 07:41
Учитесь работать с юникодом. Файлы в однобайтовой это откладывание проблемы на будущее.
1
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,928
16.05.2025, 09:43
Цитата Сообщение от Rius Посмотреть сообщение
Файлы в однобайтовой это откладывание проблемы на будущее.
Именно в МК это иногда оправдано. Нарисовать знакогенератор на 256 идущих подряд символов все-таки проще, чем на 180, но с дырами между ними. Плюс конвертор сначала из юникода в (скорее всего) utf-16, а потом в индекс массива.
А вообще, учитывая, что иногда применяется даже HD44780, у которого своя, извращенная кодировка... cp1251 еще не худший выбор.
0
Эксперт .NET
 Аватар для Rius
13163 / 7722 / 1679
Регистрация: 25.05.2015
Сообщений: 23,524
Записей в блоге: 14
16.05.2025, 12:23
Иногда - да.

И до некоторых пор это проще.
Но потом ты начинаешь откладывать варианты, которые не вписываются в эту простоту.
Потом начинаешь их избегать.
И вот ты уже ходишь по форумам и хаешь не осиленный юникод в каждой теме, на который незаметно перешёл весь остальной мир, и ещё учишь этому детей.

Выбор плох тем, что среды разработки (IDE) и средства совместной разработки (типа Azure) уже юникодовые и без танцев с бубном показывают однобайтовые тексты крякозябрами.

Можно сразу строки в utf-16 держать, там есть строковые литералы u"str" ещё со времён C++11. Ещё проще будет конвертировать.

Смысл в том, чтобы читаемый не специально настроенными средствами (кодировку редактор может определить и сам по BOM) текст показывал человеку то, что будет показано на экране устройства. Даже если в тексте и в бинарной прошивке кодировки разные в целях экономии памяти или извращённой кодировки драйвера.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,928
16.05.2025, 15:50
Цитата Сообщение от Rius Посмотреть сообщение
Выбор плох тем, что среды разработки (IDE) и средства совместной разработки (типа Azure) уже юникодовые и без танцев с бубном показывают однобайтовые тексты крякозябрами.
Совсем по фен-шую было бы вынести все ресурсы в отдельный файл. А с ним уже проще. Можно хоть при компиляции конвертировать из файла с нормальной кодировкой.
Но костыли с однобайтными кодировками как раз и делаются чтобы пусть коряво, но с минимумом усилий.
Цитата Сообщение от Rius Посмотреть сообщение
Можно сразу строки в utf-16 держать
А смысл? В редакторе так и так пришлось бы менять кодировку.
И, что хуже, он не решает основную задачу. Конвертация между разными юникодами алгоритмически очень простая. Сложнее перевести из юникода в юзерскую таблицу символов. С учетом того, что в юникоде эти символы накиданы вразнобой.
Цитата Сообщение от Rius Посмотреть сообщение
u"str" ещё со времён
Если бы мы рассуждали о программировании для ПК, я бы, как обычно, поинтересовался какой формат для printf можно использовать для utf-16. Но для МК это не актуально: так и так руками писать. Для любой кодировки.
0
Эксперт .NET
 Аватар для Rius
13163 / 7722 / 1679
Регистрация: 25.05.2015
Сообщений: 23,524
Записей в блоге: 14
16.05.2025, 15:58
А смысл? В редакторе так и так пришлось бы менять кодировку.
В виде u"str" сам файл мог бы быть в utf-8, а бинарное представление строки получалось уже в utf-16, которое просто (постоянный размер символа) constexpr функциями конвертить в win1251. Пропуская код символа юникода через таблицу соответствия для получения во время компиляции уже кода однобайтовой кодировки. Даже пользовательской.
В случае однобайтовой символов не много, весь зоопарк не нужен, можно и вручную забить таблицу.

И что получается: мы пишем u"str" в коде, сам код в utf-8 и без крякозябр отображается на веб-сервере и в редакторах, а в прошивке уже закодены байтики в кодировке win-1251.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.05.2025, 15:58
Помогаю со студенческими работами здесь

мигание светодиода stm32cubeide
Приветствую! Помогите, пожалуйста! Имеется отладочная плата nucleo L152RE и среда stm32cubeide....

STM32CubeIDE не видит файл, а он есть
Привет всем! Переустановил винду, пытаюсь прошить STM32F072b Discovery работающим проектом, но...

Не могу помигать диодом на STM32F103C8Tx из STM32CubeIDE
Привет, народ. Купил себе на пробу STM32F103C8T6 (BluePill) с программатором STLink-V2. Вот что...

Библиотека больших чисел (GMP) в среде STM32CubeIDE
Всем привет. Нужна срочная помощь. Я скачал библиотеку GMP вот отсюда (Download: gmp-6.2.1.tar.lz)....

STM32CubeIDE и PROTEUS
Как в Proteus запустить симуляцию с hex файлом прошивки, полученным в STM32CubeIDE? Когда в Proteus...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru