Easyelectronics.ru

Электроника для всех
Текущее время: 20 июл 2018, 03:56

Часовой пояс: UTC + 5 часов



    • JLCPCB - Платы прототипов всего за 2$ c бесплатной доставкой (при первом заказе)
    • 10 PCBs за $2 для 2 слоев, $15 для 4 слойной, $74 для 6 слойной платы.
    • Крупнейший китайский производитель прототипных плат. 290000+ клиентов & 8000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин радиодеталей.

Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Ассемблерные вставки STM32 в Keil 4
СообщениеДобавлено: 12 июл 2018, 15:47 
Только пришел

Зарегистрирован: 21 май 2018, 10:24
Сообщения: 10
Привет.
Прошу совета.
Портирую проект для STM32 c компилятора gcc на Keil.
Есть такой фрагмент кода
Код:
static uint32_t read_irq(void)
{
    uint32_t ret=0;
    __asm__ __volatile__ ("mrs %0, ipsr\n\t" : "=r" (ret) );
    return(ret & 0x1FFul);
}


Компилятор разумеется заругался.
Посмотрел на сайте Кейла. Сделал так
Код:
static uint32_t read_irq(void)
{
    uint32_t ret=0;
    __asm ("mrs %[result], ipsr\n\t" : [result]"=r" (ret) );
    return(ret & 0x1FFul);
}


Ошибка
error: #18: expected a ")"

Как быть?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблерные вставки STM32 в Keil 4
СообщениеДобавлено: 12 июл 2018, 19:24 
Старожил

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 201
Заменить интринсиком?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблерные вставки STM32 в Keil 4
СообщениеДобавлено: 12 июл 2018, 20:22 
Только пришел

Зарегистрирован: 21 май 2018, 10:24
Сообщения: 10
Все перепробовал.
Решил просто вынести функцию в отдельный ассемблерный файл.
Вот так

Код:
   AREA text, CODE, READONLY
   EXPORT read_irq
      
read_irq    PROC
      MRS R0, IPSR
      MOV R1, #0x000000FF
      ADD R1, #0x00000100
      AND R0, R0, R1
      BX LR
   ENDP
      
   END


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблерные вставки STM32 в Keil 4
СообщениеДобавлено: 12 июл 2018, 22:43 
Старожил

Зарегистрирован: 13 янв 2018, 21:36
Сообщения: 201
Лёгких путей совсем не ищете?
uint32_t __get_IPSR(void);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблерные вставки STM32 в Keil 4
СообщениеДобавлено: 12 июл 2018, 23:06 
Заглядывает иногда

Зарегистрирован: 06 июн 2018, 22:30
Сообщения: 34
Откуда: Киев
IPSR вроде как ничего больше и не содержит зачем эти излишества. Ну и нужно бы r1 сохранить в стеке, вы же не можете брать и портить регистры.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ассемблерные вставки STM32 в Keil 4
СообщениеДобавлено: 13 июл 2018, 07:26 
Только пришел

Зарегистрирован: 21 май 2018, 10:24
Сообщения: 10
VladislavS писал(а):
Лёгких путей совсем не ищете?
uint32_t __get_IPSR(void);


Я вчера сам нашел. )
Автор того кода пользовался libopencm3 и городил такие костыли.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB