14.11.2011, 20:27
|
|
Временная регистрация
Регистрация: 09.02.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: IAR Embedded Workbench
Подскажите, пожалуйста как в IAR ARM включить поддержку sprintf для float. В Library Options поставил для Printf formatter - Full. Все равно на формат "%+4.3f" для числа 50.405 выдает +0.000
|
|
|
|
20.02.2013, 20:09
|
|
Прохожий
Регистрация: 20.02.2013
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: IAR Embedded Workbench
Люди подскажите пожалуйста, компилю, выдает Fatal Error[Pe035]: #error directive: "No valid platform defined" C:\Program Files\IAR Systems\Embedded Workbench 6.4\arm\CMSIS\Include\common.h 34
что делать? библиотека на месте, в настройках проекта пути указаны(
|
|
|
|
20.02.2013, 22:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: IAR Embedded Workbench
Сообщение от pve70
|
Подскажите, пожалуйста как в IAR ARM включить поддержку sprintf для float. В Library Options поставил для Printf formatter - Full. Все равно на формат "%+4.3f" для числа 50.405 выдает +0.000
|
‹math.h› включили?
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
21.02.2013, 00:08
|
|
Прохожий
Регистрация: 20.02.2013
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: IAR Embedded Workbench
Спрошу проще, у меня задание на stm32f3 discovery управлять сервоприводом, может кто скинуть пару ссылок на данную тему или может подсказать что нить. Я новичек в этом деле...а времени мало...
|
|
|
|
21.02.2013, 00:11
|
|
Гуру портала
Регистрация: 20.11.2004
Сообщений: 10,015
Сказал спасибо: 936
Сказали Спасибо 2,269 раз(а) в 1,563 сообщении(ях)
|
Re: IAR Embedded Workbench
Сообщение от igor alexeychik
|
Я новичек в этом деле...а времени мало...
|
За такие вещи впредь буду банить без предупреждения .
__________________
Осторожно , злой кот
|
|
|
|
21.02.2013, 00:32
|
|
Прохожий
Регистрация: 20.02.2013
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: IAR Embedded Workbench
Сообщение от dosikus
|
За такие вещи впредь буду банить без предупреждения .
|
не не не, я ж не прошу мне что-то сделать за деньги просто времени мало дали на работу, а разбираться подробно мамому долго, поэтому и прошу помощи, может пример какой подскажут или в нужное русло направят люди добрые)
|
|
|
|
22.02.2013, 11:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,450
Сказал спасибо: 376
Сказали Спасибо 1,060 раз(а) в 624 сообщении(ях)
|
Re: IAR Embedded Workbench
Объясните, каким боком могут выйти эти угрозы.
Цитата:
|
Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement
|
ругается на строчку
if((kb3)&(kb4)&(kb5)) F_KeyRepeat=false;
F_KeyRepeat - объявлена глобальной, а остальные:
#define kb3 PINB_Bit3 //in key_matrix
#define kb4 PINB_Bit4 //in key_matrix
#define kb5 PINB_Bit5 //in key_matrix
ps
все вышесказанное относится к клавиатуре-матрице.
__________________
Мелочи не решают главного. Они решают всё!
|
|
|
|
22.02.2013, 13:38
|
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: IAR Embedded Workbench
Сообщение от gary2007
|
Объясните, каким боком могут выйти эти угрозы.
|
Начнём с того, что это предупреждение, а не ошибка. Компилятр предупреждает, что переменные объявлены как volatile (все пины портов) и они стоят в условии, поэтому правильность доступа не определена.
В принципе стандартное предупреждение в такой ситуации. Здесь я не вижу как может произойти казус, но приведу пример, где действительно предупреждение не лишнее...
if((x›5) && (x‹7)) y = 10; при том что x - char volatile ... например значение таймера ....
Надо понимать, что операция будет выполняться последовательно ...
Представим что x = 0xff.
1. выполнится первое условие
2. произойдёт прерывание в котором таймер переполнится и будет 00
3. выполнится второе условие и таким образом произойдёт ошибка.
Поэтому необходимо либо создать локальную копию переменной, до сравнения, либо создать критическую секцию, для предотвращения модификации переменной, во время проверки ...
====
В данном случае, у вас тоже не всё гладко ... Я не совсем понял что вы хотите... и не совсем не знаю как сработает компилятор ... Скорее всего вы ошиблись ...
Вы наверное хотели проверить 3 бита на 1... тогда надо было записать либо kb3 && kb4 && kb5 либо PINB & 0x70 ...
Боюсь ошибиться, но скорее всего согласно вашей записи компилятор сделает следующее
x1 = (PINB ›› 3) & 1
x2 = (PINB ›› 4) & 1
x3 = (PINB ›› 5) & 1
результат = x1 & x2 & x3
|
|
|
Сказали "Спасибо" SasaVitebsk
|
|
|
22.02.2013, 14:14
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.09.2007
Адрес: Полтава, UA
Сообщений: 2,450
Сказал спасибо: 376
Сказали Спасибо 1,060 раз(а) в 624 сообщении(ях)
|
Re: IAR Embedded Workbench
Сообщение от SasaVitebsk
|
kb3 && kb4 && kb5
|
Спасибо, в таком виде предупреждений нет.
В моем случае клавиатура 9 кнопок - матрица 3х3.
Необходимо "держать" программу, пока все кнопки не окажутся в разомкнутом состоянии. Если хотя-бы одна кнопка нажата, на входе порта kbX "ноль".
__________________
Мелочи не решают главного. Они решают всё!
|
|
|
|
23.02.2013, 01:11
|
|
Гражданин KAZUS.RU
Регистрация: 04.08.2006
Сообщений: 911
Сказал спасибо: 28
Сказали Спасибо 180 раз(а) в 139 сообщении(ях)
|
Re: IAR Embedded Workbench
Сообщение от gary2007
|
Спасибо, в таком виде предупреждений нет.
В моем случае клавиатура 9 кнопок - матрица 3х3.
Необходимо "держать" программу, пока все кнопки не окажутся в разомкнутом состоянии. Если хотя-бы одна кнопка нажата, на входе порта kbX "ноль".
|
Вот видите... Надо думать, что вы указываете компилятору ... Мы часто не задумываемся об этом.
Вы хотели проверить 3 бита на 1. И написали (kb3)&(kb4)&(kb5) ... То есть вы указали компилятору, что надо сделать логическое "и" трёх битов и проверить результат на "не 0"
Скажем я напишу как это примерно буде выглядеть для AVR
in r15, PINB
swap r15
mov r16, r15
in r15, PINB
swap r15
rol r15
and r16, r15
in r15, PINB
swap r15
rol r15
rol r15
and r16, r15
breq M1
// тело if
Если вы написали (kb3)&&(kb4)&&(kb5), то вы указали компилятору проверить биты на "не 0", и без оптимизации это выглядит примерно так ...
sbis PINB,3
rjmp M1
sbis PINB,4
rjmp M1
sbis PINB,5
rjmp M1
// тело if
Если вы написали (PINB & 0x70)==0x70, то это выглядит примерно так ...
in r15,PINB
andi r15, 0x70
cpi r15,0x70
brne M1
// тело if
Все 3 конструкции идентичны ...
Поэтому удивляет, когда народ Си ругает, хотя Си - это просто инструмент. И им надо грамотно пользоваться ...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Подниму тему WinAVR vs IAR
|
oleg110592 |
Микроконтроллеры, АЦП, память и т.д |
5 |
24.10.2015 14:06 |
Часовой пояс GMT +4, время: 23:13.
|
|