Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

Изучаем STM32 Cortex M3

Непрочитано 20.10.2014, 19:32  
neyvert
Прописка
 
Регистрация: 29.06.2010
Сообщений: 104
Сказал спасибо: 14
Сказали Спасибо 9 раз(а) в 7 сообщении(ях)
neyvert на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Альтернативная функция у порта А вроде так.
//PA6 ------› TIM16_CH1
GPIO_PinAFConfig(GPIOA, GPIO_PinSource6, GPIO_AF_5);
Реклама:

Последний раз редактировалось neyvert; 20.10.2014 в 19:34.
neyvert вне форума  
Непрочитано 20.10.2014, 19:55  
swat24
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
swat24 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

#define GPIO_AF_2 ((uint8_t)0x02) /* TIM2, TIM1, EVENTOUT, TIM16, TIM17 */
#define GPIO_AF_5 ((uint8_t)0x05) /* TIM16, TIM17 */
А в даташите написан только 5... называется не верь библиотечным функциям... С 5 заработало, только остается вопрос, почему не работало с 3 таймером. Там точно альтернативный 1 (и в библиотеке и в даташите написано и оно не заработало вообще никак)

Последний раз редактировалось swat24; 20.10.2014 в 20:09.
swat24 вне форума  
Непрочитано 24.10.2014, 02:19  
Mike121234
Вид на жительство
 
Аватар для Mike121234
 
Регистрация: 02.04.2008
Адрес: Ленинград
Сообщений: 347
Сказал спасибо: 67
Сказали Спасибо 8 раз(а) в 7 сообщении(ях)
Mike121234 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Доброго времени суток.
Никто не подскажет, как для ГЛОБАЛЬНОЙ переменной зарезервировать регистр в IAR?

С локальной нет проблем.
типо:
register unsigned short USh_Temp;

А вот с глобальной такой фокус не выходит...

Зачем? inc для регистра 1 команда. Для ОЗУ - 5.

На картинке USh_Temp - в регистре.
USh_Temp_ в ОЗУ.

Спасибо.
Миниатюры:
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 35
Размер:	68.8 Кб
ID:	70972  
Mike121234 вне форума  
Непрочитано 24.10.2014, 08:28  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Значит, у компилятора нет возможности использовать регистр
Он не глупее программиста
Нужно оптимизировать весь участок кода
niXto вне форума  
Непрочитано 24.10.2014, 08:43  
eddy
Почётный гражданин KAZUS.RUN
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,684
Сказал спасибо: 116
Сказали Спасибо 823 раз(а) в 597 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Вопрос знатокам ассемблера (я в нем вообще дуб): правильно ли я написал функцию mutex_trylock?
Код:
typedef uint32_t mutex_t;
...
mutex_t mutex_trylock(mutex_t *m){
	uint32_t status = 0;
	mutex_t old_lock = __ldrex(m); // get mutex value
	// set mutex
	status = __strex(MUTEX_LOCKED, m);
	if(status == 0) __dmb();
	else old_lock = MUTEX_LOCKED;
	return old_lock;
}
За образец взял mutex_lock, но так и не разобрался: безопасно ли вот так писать, как я сделал?
Что делает инструкция DMB? Ждет или просто "подчищает хвосты"?
Можно ли вот так писать? Если LDREX возвращает значение MUTEX_LOCKED, я все равно вызываю STREX, чтобы сбросить состояние индивидуального доступа (чтобы последующий вызов mutex_trylock не вернулся с ошибкой, если даже мьютекс будет разблокирован).
__________________
Если ты пользуешься Windows, то ты финансируешь мировой терроризм!
eddy вне форума  
Непрочитано 24.10.2014, 09:07  
Mike121234
Вид на жительство
 
Аватар для Mike121234
 
Регистрация: 02.04.2008
Адрес: Ленинград
Сообщений: 347
Сказал спасибо: 67
Сказали Спасибо 8 раз(а) в 7 сообщении(ях)
Mike121234 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от niXto Посмотреть сообщение
Значит, у компилятора нет возможности использовать регистр
Он не глупее программиста
Нужно оптимизировать весь участок кода
Странно это.
Вот если мы на ассемблере пишем, то ведь никто не мешает нам использовать регистры для глобальных переменных.

А про оптимитизацию кода, то как его оптимизировать, у меня есть переменная, которая в программе то увеличивается на 1, то уменьшается, то присваивается значение. И таких действий положим 100.
Если использовать регистр, то код будет +200 байт.
Если ОЗУ, то +1000 байт. Как оптимизировать код USh_Temp ++; Или USh_Temp = 2; ?

Последний раз редактировалось Mike121234; 24.10.2014 в 13:58.
Mike121234 вне форума  
Непрочитано 24.10.2014, 09:45  
Boba_spb
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.06.2008
Сообщений: 1,393
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Mike121234 Посмотреть сообщение
Странно это.
Мишаня, ты это что чудишь? Какие регистры?
А вдруг проц с аккумуляторм ? Это же С, а не асм.
Boba_spb вне форума  
Непрочитано 24.10.2014, 09:57  
Mike121234
Вид на жительство
 
Аватар для Mike121234
 
Регистрация: 02.04.2008
Адрес: Ленинград
Сообщений: 347
Сказал спасибо: 67
Сказали Спасибо 8 раз(а) в 7 сообщении(ях)
Mike121234 на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Boba_spb Посмотреть сообщение
Мишаня, ты это что чудишь? Какие регистры?
А вдруг проц с аккумуляторм ? Это же С, а не асм.
Шура, я ждал... Ключевое слова - бестолковый (сорри за флуд).
Да я конкретно про ARM, точнее про STM32.
Компилятор знает какое ядро.

Последний раз редактировалось Mike121234; 24.10.2014 в 09:59.
Mike121234 вне форума  
Непрочитано 24.10.2014, 11:29  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Mike121234 Посмотреть сообщение
Если использовать регистр, то код будет +200 байт.
Если ОЗУ, то +1300 байт.
Однако из-за одной этой переменной компилятор не сможет использовать занятый регистр в других местах программы - тех же циклах, в итоге потери памяти и быстродействия могут быть ещё больше. У стм32 не настолько много регистров, чтобы выделять один из них под глобальную переменную
niXto вне форума  
Непрочитано 24.10.2014, 11:49  
dosikus
Гуру портала
 
Аватар для dosikus
 
Регистрация: 20.11.2004
Сообщений: 9,979
Сказал спасибо: 928
Сказали Спасибо 2,261 раз(а) в 1,557 сообщении(ях)
dosikus на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Mike121234, может стоит пересмотреть сам алгоритм, вместо ручной оптимизации.
Попытки писать на С мысля асмомом, провальные...
__________________
Осторожно , злой кот
dosikus вне форума  
 
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


Часовой пояс GMT +4, время: 07:13.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.