23.05.2013, 00:02
|
|
Вид на жительство
Регистрация: 09.12.2009
Адрес: Россия, Тула
Сообщений: 377
Сказал спасибо: 192
Сказали Спасибо 156 раз(а) в 99 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Может кому пригодится. Сделал самую краткую форму "дрыгалки" для ноги.
Без всяких if-else.
Define пишем в макросы, а дальше используем с указанием номера порта.
Закомментирована исходная форма для понимания смысла.
#define togglePin(num) (0x00010001‹‹(num))
//GPIOC-›BSRR = GPIOC-›IDR ^ (GPIO_BSRR_BS9|GPIO_BSRR_BR9); //тогглик для C.9
GPIOC-›BSRR = GPIOC-›IDR ^ togglePin(9); //тогглик для C.9
|
|
|
|
23.05.2013, 06:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от krug_vv
|
Сделал самую краткую форму "дрыгалки" для ноги.
|
Note: If both BSx and BRx are set, BSx has priority.
Так что никакого toggle не получится
По крайней мере, на ВСЕХ контроллерах семейства
|
|
|
|
23.05.2013, 08:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 24.03.2007
Сообщений: 1,365
Сказал спасибо: 85
Сказали Спасибо 625 раз(а) в 377 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от krug_vv
|
Сделал самую краткую форму "дрыгалки" для ноги.
|
Хм. А в чем прикол ?
Запись в виде, к примеру:
GPIOB-›ODR ^=0x01;
недостаточно кратка ?
Или не во всех камнях есть ?
|
|
|
|
23.05.2013, 10:25
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от niXto
|
Так что никакого toggle не получится
По крайней мере, на ВСЕХ контроллерах семейства
|
У вас, кроме высокопарного звездежа, и так ничего не получается. Может только зря мучаетесь?
|
|
|
|
23.05.2013, 10:29
|
|
Вид на жительство
Регистрация: 09.12.2009
Адрес: Россия, Тула
Сообщений: 377
Сказал спасибо: 192
Сказали Спасибо 156 раз(а) в 99 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от niXto
|
Note: If both BSx and BRx are set, BSx has priority.
Так что никакого toggle не получится
По крайней мере, на ВСЕХ контроллерах семейства
|
Я выкладываю только то что проверил в железе (на 32F100)
Сообщение от pambaru
|
Хм. А в чем прикол ?
Запись в виде, к примеру:
GPIOB-›ODR ^=0x01;
недостаточно кратка ?
Или не во всех камнях есть ?
|
Согласен. Но тогда:
GPIOB-›ODR ^= 0x0001‹‹9; 9-номер ноги
или вы только 0-й ногой всегда дрыгаете?
Последний раз редактировалось krug_vv; 23.05.2013 в 10:37.
|
|
|
|
23.05.2013, 10:33
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от krug_vv
|
Может кому пригодится. Сделал самую краткую форму "дрыгалки" для ноги.
|
А в чём краткость? Просветите!
Кейл 4,70:
Код:
|
116: GPIOC-›ODR ^= (1 ‹‹ 9);
0x08000510 4806 LDR r0,[pc,#24] ; @0x0800052C
0x08000512 68C0 LDR r0,[r0,#0x0C]
0x08000514 F4807000 EOR r0,r0,#0x200
0x08000518 4904 LDR r1,[pc,#16] ; @0x0800052C
0x0800051A 60C8 STR r0,[r1,#0x0C]
117: GPIOC-›BSRR = GPIOC-›ODR ^ (0x00010001 ‹‹ 9);
0x08000510 4806 LDR r0,[pc,#24] ; @0x0800052C
0x08000512 68C0 LDR r0,[r0,#0x0C]
0x08000514 F0802002 EOR r0,r0,#0x2000200
0x08000518 4904 LDR r1,[pc,#16] ; @0x0800052C
0x0800051A 6108 STR r0,[r1,#0x10] |
И почему IDR, а не ODR? По RMW соскучились?
|
|
|
|
23.05.2013, 13:02
|
|
Вид на жительство
Регистрация: 09.12.2009
Адрес: Россия, Тула
Сообщений: 377
Сказал спасибо: 192
Сказали Спасибо 156 раз(а) в 99 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от nahimovv
|
А в чём краткость? Просветите!
|
Уже осознал, каюсь.
Сильно не бейте, я только пару месяцев как STM32 осваиваю.
Будем считать, что материал учебный для изучения регистров и понимания многогранности подходов.
Теперь сижу чешу репу нахрена они сделали BRR и BSRR, когда можно любой бит через исключающее ИЛИ и так тогглить... Скорости не добавляет.
Последний раз редактировалось krug_vv; 23.05.2013 в 13:21.
|
|
|
|
23.05.2013, 13:39
|
|
Заблокирован
Регистрация: 25.04.2013
Сообщений: 1,431
Сказал спасибо: 0
Сказали Спасибо 385 раз(а) в 254 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Да не переживайте так сильно. Не пытайтесь понять всё и сразу, кроме перегрева мозга ничего не получите.STM32, как ногодрыг, не очень, у него другие задачи и возможности их решения. Да и тоглл достаточно редкая операция, в больщинстве случаев невостребованная. А вот BRR и BSRR - вешь хорошая, нужная и достаточно быстрая, надо только ею правильно пользовваться.
|
|
|
|
23.05.2013, 15:03
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от krug_vv
|
Теперь сижу чешу репу нахрена они сделали BRR и BSRR, когда можно любой бит через исключающее ИЛИ и так тогглить... Скорости не добавляет.
|
Через эти регистры можно изменить некоторые биты, НЕ читая перед этим состояние выходного регистра, то есть экономия одной команды и одного регистра. А через BSRR можно одной командой установить И сбросить некоторые биты, то есть ещё экономия 3...5 команд и машинных циклов
|
|
|
|
23.05.2013, 15:13
|
|
Вид на жительство
Регистрация: 09.12.2009
Адрес: Россия, Тула
Сообщений: 377
Сказал спасибо: 192
Сказали Спасибо 156 раз(а) в 99 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Да уже разобрался, спасибо.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:09.
|
|