Easyelectronics.ru

Электроника для всех
Текущее время: 16 ноя 2018, 12:54

Часовой пояс: 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
Сообщения: 535
Заменить интринсиком?


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


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

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