STM32 новичку в ARM что к чему
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: STM32 новичку в ARM что к чему
Может быть, фейк, и просто кристалла внутри нет?
Re: STM32 новичку в ARM что к чему
Внутри что-то есть, ноги тестером прозваниваются, возможно это защитные диоды.
Когда я покупал на али, там был только один отзыв, - все хорошо и все работает. Цена в районе 100р. С этим китайцем пока не связывался.
Раньше я на али несколько таких брал (ревизия Z), тоже в районе 100р, все было нормально. С виду как новые, но из разных партий и внутри прошивка. Значит откуда-то выпаяли.
Были мысли, что теперь пришли какие-то другие микросхемы, перемаркированные.
Но тогда возникают вопросы - зачем маркировать "А", а не "Z"? и где взять на столько дешевую в таком же корпусе, что бы был смысл перемаркировать и продать за 100 рублей?
Там же, на алике, нет в подобном корпусе дешевле 100р.
Вот и возникают у меня сомнения, может все-таки это не фейк.
Наверное, можно как-то вскрыть корпус и под микроскопом посмотреть на кристалл, но эта задача не по мне.
Когда я покупал на али, там был только один отзыв, - все хорошо и все работает. Цена в районе 100р. С этим китайцем пока не связывался.
Раньше я на али несколько таких брал (ревизия Z), тоже в районе 100р, все было нормально. С виду как новые, но из разных партий и внутри прошивка. Значит откуда-то выпаяли.
Были мысли, что теперь пришли какие-то другие микросхемы, перемаркированные.
Но тогда возникают вопросы - зачем маркировать "А", а не "Z"? и где взять на столько дешевую в таком же корпусе, что бы был смысл перемаркировать и продать за 100 рублей?
Там же, на алике, нет в подобном корпусе дешевле 100р.
Вот и возникают у меня сомнения, может все-таки это не фейк.
Наверное, можно как-то вскрыть корпус и под микроскопом посмотреть на кристалл, но эта задача не по мне.
Re: STM32 новичку в ARM что к чему
[uquote="B_Oleg",url="/forum/viewtopic.php?p=3873365#p3873365"]Но тогда возникают вопросы - зачем маркировать "А", а не "Z"?[/uquote]
Писали, что перемаркировывают F303, причем ревизия вообще не проставлена, а по ID определяются как F0 или F1, там даже ноги питания не всегда совпадают...
Писали, что перемаркировывают F303, причем ревизия вообще не проставлена, а по ID определяются как F0 или F1, там даже ноги питания не всегда совпадают...
Re: STM32 новичку в ARM что к чему
Добрый день, Keil переменные в watch обновляются только при остановке программы. Подскажите как это решается.
Re: STM32 новичку в ARM что к чему
View - Periodic Window Update
Иван Сусанин - первый полупроводник 
Re: STM32 новичку в ARM что к чему
Спасибо!!
- КРАМ
- Друг Кота
- Сообщения: 25121
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: STM32 новичку в ARM что к чему
В порядке обмена опытом для тех, кто не сталкивался.
Нынче работаю проект с F407 и опытным путем обнаружил следующее:
1. При работе передатчика USART на шину RS485 необходимо формировать сигнал управления передатчиком драйвера (у меня ADM489). При использовании DMA с USART Tx включение передатчика драйвера не вызывает вопросов и происходит перед запуском DMA. А вот выключение драйвера на передачу требует завершения последнего символа пакета. То есть в прерывании от DMA (TC), в отличии от PIC24/dsPIC33, на передачу в очереди будет стоять ДВА СИМВОЛА, а не один. Один в сдвиговом регистре и один в буфере. То есть нужно увеличить пакет не на один, а на два фиктивных символа, которые будут вырезаны из передаваемого пакета в шине сигналом управления передатчиком драйвера, который мы выключим в обработчике DMA.
2. Тут я вероятнее всего тупо не нашел в рефмануале ...
Реквесты DMA должны быть выбраны таким образом, чтобы периферия обслуживаемая этим потоком DMA и периферия генерирующая реквесты для этого потока были расположены на одной шине (APB1 или APB2). То есть, например, нельзя реквестить USART6 таймером TIM5, поскольку первый сидит на APB2, а второй на APB1. Обычно это не замечаешь, ибо не слишком часто требуется реквестить один периферийный модуль от другого...
Как то так...
Извините, если написал баян...

Нынче работаю проект с F407 и опытным путем обнаружил следующее:
1. При работе передатчика USART на шину RS485 необходимо формировать сигнал управления передатчиком драйвера (у меня ADM489). При использовании DMA с USART Tx включение передатчика драйвера не вызывает вопросов и происходит перед запуском DMA. А вот выключение драйвера на передачу требует завершения последнего символа пакета. То есть в прерывании от DMA (TC), в отличии от PIC24/dsPIC33, на передачу в очереди будет стоять ДВА СИМВОЛА, а не один. Один в сдвиговом регистре и один в буфере. То есть нужно увеличить пакет не на один, а на два фиктивных символа, которые будут вырезаны из передаваемого пакета в шине сигналом управления передатчиком драйвера, который мы выключим в обработчике DMA.
2. Тут я вероятнее всего тупо не нашел в рефмануале ...
Реквесты DMA должны быть выбраны таким образом, чтобы периферия обслуживаемая этим потоком DMA и периферия генерирующая реквесты для этого потока были расположены на одной шине (APB1 или APB2). То есть, например, нельзя реквестить USART6 таймером TIM5, поскольку первый сидит на APB2, а второй на APB1. Обычно это не замечаешь, ибо не слишком часто требуется реквестить один периферийный модуль от другого...
Как то так...
Извините, если написал баян...
Re: STM32 новичку в ARM что к чему
При попытке подключить к проекту библиотеку для управления OLED дисплеем получил от IAR следующие сообщения:
Error[Pe020]: identifier "uint16_t" is undefined C:\STM32\A\libssd1306\ssd1306.h 5
и
Error[Pe020]: identifier "uint8_t" is undefined C:\STM32\A\libssd1306\ssd1306.h 5
Я так понял, что IAR по умолчанию не понимает типов данных uint16_t и unit8_t и требует подключения библиотечного файла с описанием этих типов. Очевидно, это файл stdint.h. В файле main.с дописал #include "stdint.h", не помогло. Изменил на #include <stdint.h>, бесполезно. Нашел файл stdint.h в директории IAR в Programm Files и скопировал его в папку с проектом и через Add>Add Files добавил этот файл в проект. И ничего, все те же сообщения об ошибках... Что я делаю не так?
P.S. только написал, и тут же сам допер. Нужно было подключить библиотечный файл stdint.h в файлах самой библиотеки ssd1306.h и ssd1306.c.
Одно непонятно, это что же теперь, в каждом подключаемом к проекту файле нужно дописывать #include "stdint.h" если там присутствуют uint8_t или что-то подобное?
Error[Pe020]: identifier "uint16_t" is undefined C:\STM32\A\libssd1306\ssd1306.h 5
и
Error[Pe020]: identifier "uint8_t" is undefined C:\STM32\A\libssd1306\ssd1306.h 5
Я так понял, что IAR по умолчанию не понимает типов данных uint16_t и unit8_t и требует подключения библиотечного файла с описанием этих типов. Очевидно, это файл stdint.h. В файле main.с дописал #include "stdint.h", не помогло. Изменил на #include <stdint.h>, бесполезно. Нашел файл stdint.h в директории IAR в Programm Files и скопировал его в папку с проектом и через Add>Add Files добавил этот файл в проект. И ничего, все те же сообщения об ошибках... Что я делаю не так?
P.S. только написал, и тут же сам допер. Нужно было подключить библиотечный файл stdint.h в файлах самой библиотеки ssd1306.h и ssd1306.c.
Одно непонятно, это что же теперь, в каждом подключаемом к проекту файле нужно дописывать #include "stdint.h" если там присутствуют uint8_t или что-то подобное?
Астролябия-сама меряет, было бы что мерять!!!
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
Не туда подключаете. Где нехватает, туда и подключать. main.c то причём? И кто учил .h в проект добавлять?
Re: STM32 новичку в ARM что к чему
В конечном итоге я нашел куда подключать.
Но, неужели нельзя сделать так, чтобы ничего никуда не подключать, а все типы данных определялись как-то сами по себе, и файл stdint.h автоматически подключался везде, где есть в нем необходимость? Может в настройках компилятора что-то подшаманить?
Но, неужели нельзя сделать так, чтобы ничего никуда не подключать, а все типы данных определялись как-то сами по себе, и файл stdint.h автоматически подключался везде, где есть в нем необходимость? Может в настройках компилятора что-то подшаманить?
Астролябия-сама меряет, было бы что мерять!!!
- КРАМ
- Друг Кота
- Сообщения: 25121
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: STM32 новичку в ARM что к чему
[uquote="Asmodey",url="/forum/viewtopic.php?p=3883695#p3883695"]Может в настройках компилятора что-то подшаманить?[/uquote]
И сделать проект прибитым намертво гвоздями к среде и компилятору...
Причем на уровне исходника.
И сделать проект прибитым намертво гвоздями к среде и компилятору...
Причем на уровне исходника.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
[uquote="Asmodey",url="/forum/viewtopic.php?p=3883695#p3883695"]Но, неужели нельзя сделать так, чтобы ничего никуда не подключать, а все типы данных определялись как-то сами по себе[/uquote]Есть старинный русский способ! По щучьему велению, по моему хотению, а ну ка код пишись сам! 
- Zhuk72
- Сверлит текстолит когтями
- Сообщения: 1231
- Зарегистрирован: Ср янв 29, 2014 08:41:31
- Откуда: Баку
- Контактная информация:
Re: STM32 новичку в ARM что к чему
[uquote="Asmodey",url="/forum/viewtopic.php?p=3883695#p3883695"]Но, неужели нельзя сделать так, чтобы ничего никуда не подключать, а все типы данных определялись как-то сами по себе...[/uquote]
Можете через typedef определить эти уинты.
Можете через typedef определить эти уинты.
Каждый имеет право на свое личное ошибочное мнение.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
[uquote="Zhuk72",url="/forum/viewtopic.php?p=3883767#p3883767"]Можете через typedef определить эти уинты.[/uquote]В нескольких местах определять типа, да ещё переопределяя стандартные - грубая ошибка!
Re: STM32 новичку в ARM что к чему
Как правильно попросить линковщик положить мой массив по абсолютному адресу внутри флэш? Раньше пользовался at(), а в GCC она не поддерживается, и алгоритма действий для её замены не могу найти. Ещё оговорка: область моего массива может быть не последними адресами флэш.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: STM32 новичку в ARM что к чему
в GCC есть секции и скрипт линкера. секций обычно достаточно, скрипт надо править для экзотических требований.tonyk писал(а):пользовался at(), а в GCC она не поддерживается
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
Re: STM32 новичку в ARM что к чему
[uquote="ARV",url="/forum/viewtopic.php?p=3883811#p3883811"]
Так это и ежу понятно. Я не вижу способа как внутрь секции с кодом втиснуть мой массив.
в GCC есть секции и скрипт линкера. секций обычно достаточно, скрипт надо править для экзотических требований.[/uquote]tonyk писал(а):пользовался at(), а в GCC она не поддерживается
Так это и ежу понятно. Я не вижу способа как внутрь секции с кодом втиснуть мой массив.
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: STM32 новичку в ARM что к чему
tonyk, у меня на гитхабе в stm32samples есть пример: я там выделил во флеше 1 блок для хранения настроек, а все остальное - под логи. На секциях.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: STM32 новичку в ARM что к чему
[uquote="tonyk",url="/forum/viewtopic.php?p=3883785#p3883785"]Раньше пользовался at()[/uquote]
может так (без правки скрипта линкера):
из Example Code snippets covering STM32 F0 series
https://www.st.com/en/embedded-software ... etsf0.html
может так (без правки скрипта линкера):
Код: Выделить всё
#define FLASH_PAGE_SIZE ((uint32_t)0x00000400) /* FLASH Page Size */
#define FLASH_USER_START_ADDR ((uint32_t)0x08002000) /* Start @ of user
......
FlashErase(FLASH_USER_START_ADDR);
CheckFlashErase(FLASH_USER_START_ADDR);
FlashWord16Prog(FLASH_USER_START_ADDR, (uint16_t)DATA_TO_PROG);
FlashWord16Prog(FLASH_USER_START_ADDR + 2, (uint16_t)(DATA_TO_PROG >> 16));
/* Check the programming of the address */
if ((*(uint32_t *)(FLASH_USER_START_ADDR)) != DATA_TO_PROG)
{
error |= ERROR_PROG;
}из Example Code snippets covering STM32 F0 series
https://www.st.com/en/embedded-software ... etsf0.html