19.02.2016, 08:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,359
Сказал спасибо: 85
Сказали Спасибо 616 раз(а) в 372 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Понял, спасибо!
|
|
|
|
22.02.2016, 11:02
|
|
Вид на жительство
Регистрация: 26.07.2007
Сообщений: 483
Сказал спасибо: 18
Сказали Спасибо 107 раз(а) в 68 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
информация по usbser.sys... зависание USB Serial/CDC
http://www.microchip.com/forums/m538194.aspx
|
|
|
|
29.02.2016, 21:03
|
|
Вид на жительство
Регистрация: 26.07.2007
Сообщений: 483
Сказал спасибо: 18
Сказали Спасибо 107 раз(а) в 68 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
STM32А103, Hardfault, signal handler called, непонятно где. как трасировать?
|
|
|
|
16.05.2016, 17:15
|
|
Заблокирован
Регистрация: 22.04.2010
Сообщений: 348
Сказал спасибо: 41
Сказали Спасибо 106 раз(а) в 95 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Изучаю встроенный ассемблер Keil на STM32F103. Как я понимаю, инструкция LSL запишет старший бит x1 в флаг переноса, ADC запишет его в мл.бит х0 (увеличит x0 на 1). В результате при сдвиге старший бит x1 должен попасть в мл.бит х0. Но там оказывается 0. Что не так?
Код:
|
//Cдвиг буфера р размером 8 байт влево на n бит
void SSI_SHL(uint32_t* p, uint8_t n)
{
register uint32_t x0, x1;
x0 = p[0]; x1 = p[1];
for (uint8_t i=0; i‹n; i++)
__asm {
LSL x0, x0, 1 //x0 = x0 ‹‹ 1
LSL x1, x1, 1 //x1 = x1 ‹‹ 1
ADC x0, 0 //x0 += carry
}
p[0] = x0; //сохранение 0-го слова
p[1] = x1; //сохранение 1-го слова
} |
|
|
|
|
16.05.2016, 18:11
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
. .
|
|
|
|
17.05.2016, 11:55
|
|
Заблокирован
Регистрация: 22.04.2010
Сообщений: 348
Сказал спасибо: 41
Сказали Спасибо 106 раз(а) в 95 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Цитата от omercury мне ничем не помогла. Разобралась: инструкция модифицирует флаги, если кончается на «S». Поменяла LSL на LSLS и заработало...
Но мне с этого мало радости, т.к. датчик выдаёт код в big endian, a STM32 - little endian.
так что мне надо сдвигать массив по байтам:
Код:
|
//Cдвиг буфера src размером 8 байт влево на n бит, результат - в dst
void SSI_SHL12n(uint8_t* dst, uint8_t* src, uint8_t n)
{
register uint32_t x;
bool b = 0;
int8_t i, j;
if (!n) return;
for (i=7; i›=0; i--)
{
x = src[i] ‹‹ 1;
if (b) x |= 1;
b = x & 0x100;
dst[i] = x;
}
for (j=n-1; j›=0; j--)
{
b = 0;
for (i=7; i›=0; i--)
{
x = dst[i] ‹‹ 1;
if (b) x |= 1;
b = x & 0x100;
dst[i] = x;
}
}
} |
Подкиньте, пожалуйста, идей как бы поизящнее реализовать на ассемблере функциональность этого кода.
|
|
|
|
18.05.2016, 04:24
|
|
Гражданин KAZUS.RU
Регистрация: 25.11.2010
Сообщений: 516
Сказал спасибо: 1
Сказали Спасибо 126 раз(а) в 109 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
firew0rker
битовые/байтовые и прочие "Big/Little" преобразования - набор инструкций вида RBIT/REVxx
64 битный сдвиг - библиотечная функция "__aeabi_llsl" (исходник ищи в гугле, там 8 команд всего)
|
|
|
|
04.08.2016, 18:29
|
|
Частый гость
Регистрация: 28.12.2010
Адрес: Красноярск
Сообщений: 44
Сказал спасибо: 183
Сказали Спасибо 27 раз(а) в 14 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Доброго времени суток, форумчане !
начал разбираться с STM32F103. Установил KEIL 5, впаял процессор, в качестве программатора планирую использовать STM32F4 Discovery Но вот на что налетел - при попытке компиляции проекта ( см вложение ), сама компиляция проходит , если верить сообщениям, а вот компоновка - нет и выдаются следующие сообщения
[I]linking...
.\Objects\expr.sct(7): error: L6235E: More than one section matches selector - cannot all be FIRST/LAST.
Not enough information to list image symbols.
Not enough information to list the image map.
Finished: 2 information, 0 warning and 1 error messages.
".\Objects\expr.axf" - 1 Error(s), 0 Warning(s).
Target not created.
Build Time Elapsed: 00:00:04
Если взять какой-то другой проект ( интереса ради брал проект Easyrider83 из местной ветки STM32 + USB HID ) то получаю ту же проблему с компоновкой. Подскажите - куда копать... пока идей никаких не возникает
|
|
|
|
04.08.2016, 19:46
|
|
Заблокирован
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
В проект добавить system_stm32f10x.c, а в рантайм менеджере убрать все галки кроме CMSIS CORE.
|
|
|
Сказали "Спасибо" STM32F0
|
|
|
05.08.2016, 19:43
|
|
Частый гость
Регистрация: 06.06.2008
Сообщений: 43
Сказал спасибо: 90
Сказали Спасибо 126 раз(а) в 23 сообщении(ях)
|
Утилита - перевод HEX выражения в бинарное и обратно
Для себя как-то наваял утилиту - перевод HEX выражения в бинарное и обратно.
При программировании микроконтроллеров постояно приходится переводить HEX выражения используемые в тексте программ в набор битов, как правило каждый бит чем-то управляет.
Особенно такой перевод необходим при разборе примеров и сторонних программ.
Также актуален и обратный перевод, набор бит в HEX выражение - это уже когда сами пытаемся настроить конфигурацию микроконтроллера.
Работа это несложная, но как правило ее много и любая ошибка
в позиции бита может привести в потере времени на отладку непонятного поведения программы.
Постоянно использую во время разработки.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо LVII за это сообщение:
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:24.
|
|