Easyelectronics.ru

Электроника для всех
Текущее время: 22 сен 2018, 14:35

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



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • 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
Сообщения: 382
Заменить интринсиком?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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
Сообщения: 382
Лёгких путей совсем не ищете?
uint32_t __get_IPSR(void);


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

Зарегистрирован: 06 июн 2018, 22:30
Сообщения: 128
Откуда: Киев
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 часов


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

Сейчас этот форум просматривают: redixin2


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

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

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